p_details.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802
  1. <template>
  2. <view class="container">
  3. <!-- 轮播图 -->
  4. <swiper-banner imgScale="1:1" :imgArr="detail.goods_img" :duration="1000" :interval="5000" :circular="true" :autoplay="true" :indicator-dots="true" indicator-active-color="#12B280" indicator-color="rgba(255, 255, 255, .82)"></swiper-banner>
  5. <!-- 轮播图-end -->
  6. <!-- 价格信息栏 -->
  7. <view class="price_info flex_r flex_ac flex_jb">
  8. <view v-if="type == 5" class="price">
  9. <span v-if="Number(detail.cost_price) != 0">{{ detail.cost_price }}元</span>
  10. <span v-if="Number(detail.cha_bao) != 0 && Number(detail.cost_price) != 0">+</span>
  11. <span v-if="Number(detail.cha_bao) != 0">{{ detail.cha_bao }}茶宝</span>
  12. </view>
  13. <view v-else-if="type == 1" class="price flex_c">
  14. <text class="p_favour_teac" v-if="type == 1">¥: {{ $h.Add(detail.teac,$h.Mul(detail.trade_teac, 2))||0 }} TeaC +{{ detail.treasure_price||0 }} 茶宝</text>
  15. <text class="p_trade_teac" v-if="type == 1">寄卖服务费:{{$h.Mul(detail.service,2)}} 元</text>
  16. </view>
  17. <view v-else class="price" :class="type == 2 ? 'samll' : ''">
  18. <!-- <text class="p_favour" v-if="type == 1">¥{{ detail.total_amount }}</text> -->
  19. <text class="p_favour" v-if="type == 2">¥{{ detail.trade_price }} + {{detail.trade_num}}批发券 + {{detail.treasure_price}}茶宝</text>
  20. <text class="p_favour" v-if="type == 3">¥{{ detail.cost_price }}</text>
  21. <text class="p_favour" v-if="type == 4">¥{{ $h.Sub(detail.cost_price,detail.consume) }}</text>
  22. <text class="p_favour" v-if="type == 5">¥{{ detail.cost_price }} + {{ detail.treasure_price }}茶宝</text>
  23. <template v-if="type == 6">
  24. <text class="p_favour">¥{{ detail.cost_price }}</text>
  25. <text class="un_p_favour">¥{{ detail.original_price }}</text>
  26. </template>
  27. <!-- <text class="p_trade" v-if="type == 1">(含服务费{{$h.Mul(detail.service,2)}}元)</text> -->
  28. <text class="p_trade" v-if="(type == 3 || type == 4)">送 {{detail.give_cha_bao}} 茶宝</text>
  29. <view v-if="type == 4">
  30. <text class="un_p_favour un_p">{{ detail.cost_price }}</text>
  31. <text class="p_trade">消费金抵扣 {{detail.consume}}</text>
  32. </view>
  33. </view>
  34. <view class="price_span flex_r flex_ac flex_je">
  35. <view class="triangle"></view>
  36. <view class="span_conten flex_r flex_ac flex_jc">{{ tidyTpye(goodsDa.type) }}</view>
  37. </view>
  38. </view>
  39. <!-- 价格信息栏-end -->
  40. <!-- 标题信息栏 -->
  41. <view class="title_info">
  42. <view class="goods_name">{{ detail.goods_name }}</view>
  43. <view class="goods_teac flex_r flex_jb" v-if="['3','4'].includes(type)">
  44. <view class="product-txt">限时赠送{{ detail.teac }}TeaC</view>
  45. <view class="product-txt fenxiang">
  46. <text class="iconfont red">&#xe62b;</text>
  47. <text class="red">分享约获得 {{ detail.first_teac }} {{type==3?'TeaC':'现金'}}</text>
  48. </view>
  49. </view>
  50. <view class="goods_subName">{{ detail.goodsMsg }}</view>
  51. </view>
  52. <!-- 标题信息栏-end -->
  53. <!-- 产品简介 -->
  54. <view class="brief mar_t20">
  55. <view class="brief_title flex_r flex_ac">产品简介</view>
  56. <view class="brief_con">
  57. <mp-html :content="detail.goods_content" ref="jyf"></mp-html>
  58. <!-- <image :lazy-load="true" style="width: 100%;display: block;" v-for="(item,index) in detail.goodsDetailesImage" :key="index" :src="item" mode="widthFix"></image> -->
  59. </view>
  60. </view>
  61. <!-- 产品简介-end -->
  62. <!-- 底部导航组件 -->
  63. <view class="option">
  64. <uni-goods-nav :fill="true" :options="options" :buttonGroup="type == 5 ? buttonGroupTea : buttonGroup" @click="onClick" @buttonClick="buttonClick" />
  65. </view>
  66. <!-- 底部导航组件-end -->
  67. <!-- 购买或加入购物车弹窗 -->
  68. <uni-popup ref="shopping" type="bottom">
  69. <view class="shopping">
  70. <view class="close_con flex_r flex_je">
  71. <view class="iconfont close_img" @tap="closeBtn">&#xe609;</view>
  72. </view>
  73. <view class="goods_info flex_r">
  74. <image class="goods_img" :src="detail.original_img" mode=""></image>
  75. <view class="goods_con flex_c flex_jb">
  76. <view class="shop_names">{{ detail.goods_name }}</view>
  77. <view class="goods_msg" v-if="type == 1">¥: {{ $h.Add(detail.teac,$h.Mul(detail.trade_teac, 2))||0 }}TeaC + {{ detail.treasure_price }}茶宝</view>
  78. <view class="goods_smsg" v-if="type == 1">寄卖服务费:{{$h.Mul(detail.service,2)}} 元</view>
  79. <view class="goods_msg" v-else-if="type == 2">{{ detail.trade_price }}元+{{ detail.trade_num }}批发券+{{ detail.treasure_price }}茶宝</view>
  80. <view class="goods_msg" v-else>¥{{ afterSpecPrice }}</view>
  81. <view class="num_con flex_r flex_je" v-if="type != 6">
  82. <uni-number-box :min="1" @change="bindChange" :value="buyNum"></uni-number-box>
  83. </view>
  84. <view class="num_str flex_r flex_je" v-else>x 1</view>
  85. </view>
  86. </view>
  87. <view class="goods_option flex_r flex_ac flex_jse" v-if="type == 1">
  88. <view class="goods_raido flex_r flex_ac" @tap="setWay('0')">
  89. <view class="raido_img" :class="pfway == '0' ? 'raido_box' : ''"></view>
  90. <view class="raido_text">零售产品邮寄</view>
  91. </view>
  92. <view class="goods_raido flex_r flex_ac" @tap="setWay('1')">
  93. <view class="raido_img" :class="pfway == '1' ? 'raido_box' : ''"></view>
  94. <view class="raido_text">零售产品置换</view>
  95. </view>
  96. </view>
  97. <view>
  98. <view v-if="detail.goods_spec_list.length > 0">
  99. <view class="goods_spec">
  100. <text>{{detail.goods_spec}}</text>
  101. </view>
  102. <view class="goods_spec_list">
  103. <view class="goods_spec_list_item"
  104. v-for="(item,index) in detail.goods_spec_list" :key="index"
  105. :class="goodsSpecIndex == index ? 'goods_spec_list_item_active' : ''"
  106. @click="goodsSpecChange(item,index)">
  107. <span>{{item.spec_name}}</span>
  108. </view>
  109. </view>
  110. </view>
  111. <view v-if="detail.goods_spec_list.length > 0">
  112. <view class="goods_spec">
  113. <text>{{detail.goods_attr}}</text>
  114. </view>
  115. <view class="goods_spec_list">
  116. <view class="goods_spec_list_item"
  117. v-for="(item,index) in detail.goods_spec_list[goodsSpecIndex].attr_list" :key="index"
  118. :class="goodsAttrIndex == index ? 'goods_spec_list_item_active' : ''"
  119. @click="goodsAttrChange(item,index)">
  120. <span>{{item.attr_name}}</span>
  121. </view>
  122. </view>
  123. </view>
  124. </view>
  125. <checkbox-group class="flex_r flex_ac flex_jc" @change="checkboxChange">
  126. <label class="option_box">
  127. <checkbox value="1" :checked="checked" color="#2DB389" style="transform: scale(0.7)" />
  128. 我已阅读同意<text @tap.stop="getProPage" v-if="type != 5 && type != 6">《购买协议》</text>
  129. <text @tap.stop="getProPage" v-else-if="type == 5">《兑换协议》</text>
  130. <text @tap.stop="getProPage" v-else-if="type == 6">《天天捡漏协议》</text>
  131. </label>
  132. </checkbox-group>
  133. <view class="confim flex_r flex_ac flex_jc" v-if="type == 1" @tap="ToPayPage">立即支付</view>
  134. <view class="confim flex_r flex_ac flex_jc" v-else @tap="ToPayPage">立即支付 ¥{{afterSpecPrice * buyNum}}</view>
  135. </view>
  136. </uni-popup>
  137. <!-- 购买或加入购物车弹窗-end -->
  138. <!-- 授权 -->
  139. <authorize-module ref="autho" :shopInfo="shopInfo" @authGetTelSuccess="onauthGetTelSuccess" />
  140. <!-- 授权-end -->
  141. </view>
  142. </template>
  143. <script>
  144. let app = getApp();
  145. import { post } from "@/request/api.js";
  146. import mpHtml from "@/uni_modules/mp-html/components/mp-html/mp-html.vue"
  147. import swiperBanner from "@/components/swiperBanner/index.vue";
  148. import uniGoodsNav from "@/components/uni-goods-nav/uni-goods-nav.vue";
  149. import uniNumberBox from "@/components/uni-number-box/uni-number-box.vue";
  150. import authorizeModule from "@/components/authorize-module/index";
  151. export default {
  152. components: {
  153. mpHtml,
  154. uniGoodsNav,
  155. swiperBanner,
  156. uniNumberBox,
  157. authorizeModule,
  158. },
  159. data() {
  160. return {
  161. imgArr: ["/static/goods5.jpg"],
  162. content: "",
  163. options: [
  164. // 底部导航跳转
  165. {
  166. icon: "home",
  167. text: "主页",
  168. },
  169. // {
  170. // icon: 'cart',
  171. // text: '购物车',
  172. // info: 0
  173. // }
  174. ],
  175. buttonGroup: [
  176. // 底部操作按钮
  177. // {
  178. // text: '加入购物车',
  179. // backgroundColor: '#ff0000',
  180. // color: '#fff'
  181. // },
  182. {
  183. text: "立即购买",
  184. backgroundColor: "#ffa200",
  185. color: "#fff",
  186. },
  187. ],
  188. buttonGroupTea: [
  189. // 底部操作按钮
  190. // {
  191. // text: '加入购物车',
  192. // backgroundColor: '#ff0000',
  193. // color: '#fff'
  194. // },
  195. {
  196. text: "立即兑换",
  197. backgroundColor: "#ffa200",
  198. color: "#fff",
  199. },
  200. ],
  201. btnIndex: 0, // 用户点击按钮事件判断 0:加入购物车;1:立即购买
  202. type: null, // 商品类型,1零售 2批发 3精品 4今日值买
  203. goodsId: "", // 商品ID
  204. id: "", //合伙人套餐ID
  205. detail: {
  206. goods: {},
  207. goods_spec_list: [],
  208. }, // 商品详情
  209. checked: false, //是否选中协议
  210. buyNum: 1, //购买数量
  211. pfway: "1", // 批发
  212. qhway: "0", //提货方式
  213. shopInfo: {}, // 商铺信息
  214. // showAuth: false,
  215. userinfo: {},
  216. goodsDa: {},
  217. unid: "",
  218. goodsSpecIndex: 0,
  219. goodsAttrIndex: 0,
  220. specId: "0",
  221. attrId: "0",
  222. afterSpecPrice: 0, // 规格选择后显示价格
  223. };
  224. },
  225. onLoad: function(e) {
  226. this.userinfo = uni.getStorageSync("userinfo");
  227. let token = uni.getStorageSync("token");
  228. this.type = e.type;
  229. this.goodsDa = e;
  230. this.loadData(e);
  231. if (!token) this.login();
  232. },
  233. onShow: function() {},
  234. methods: {
  235. // 商品详情信息
  236. loadData(da) {
  237. post("v1/goods/goodsDetail", da).then((res) => {
  238. if (res.code === 0) {
  239. this.detail = res.data.data;
  240. this.afterSpecPrice = this.detail.cost_price
  241. let imgs = [];
  242. imgs.push(this.detail.original_img);
  243. imgs.push(...this.detail.goods_img);
  244. this.detail.goods_img = imgs;
  245. if (this.detail.goods_spec_list.length > 0) {
  246. this.specId = this.detail.goods_spec_list[0].id
  247. if (this.detail.goods_spec_list[0].attr_list.length > 0) {
  248. this.attrId = this.detail.goods_spec_list[0].attr_list[0].id
  249. }
  250. }
  251. this.getPrice()
  252. } else {
  253. uni.showModal({
  254. title: "提示",
  255. content: res.msg,
  256. showCancel: false,
  257. success: function(res) {
  258. if (res) {
  259. uni.navigateBack({
  260. delta: 1,
  261. });
  262. }
  263. },
  264. });
  265. }
  266. });
  267. },
  268. // 去购买
  269. ToPayPage: function() {
  270. if (!this.checked) {
  271. this.$toast("请阅读并同意购买协议");
  272. return;
  273. }
  274. if (this.btnIndex == 0) {
  275. this.toPayOrder();
  276. }
  277. },
  278. // 创建购买订单
  279. toPayOrder: function() {
  280. let da = {
  281. ...this.goodsDa,
  282. num: Number(this.buyNum),
  283. is_sell: ['1', '2'].includes(this.type) ? this.pfway : "0",
  284. spec_id: this.specId,
  285. attr_id: this.attrId,
  286. goods_id: this.detail.goods_id,
  287. };
  288. this.goto("/pages/to-pay-list/index", da);
  289. },
  290. // 添加到购物车
  291. SetCartGoodsList() {},
  292. // 购买数量更改
  293. bindChange(e) {
  294. this.buyNum = e;
  295. },
  296. // 更改批发方式
  297. setWay(e) {
  298. this.pfway = e;
  299. },
  300. setQhWay(e) {
  301. this.qhway = e
  302. },
  303. // 点击同意协议
  304. checkboxChange(e) {
  305. let index = e.detail.value.indexOf("1");
  306. if (index != -1) {
  307. this.checked = true;
  308. } else {
  309. this.checked = false;
  310. }
  311. },
  312. // 点击底部主页购物车等按钮
  313. onClick(e) {
  314. if (e.index === 0) {
  315. uni.switchTab({ url: "/pages/index/index" });
  316. }
  317. },
  318. // 点击立即购买或加入购物车
  319. buttonClick: function(e) {
  320. this.btnIndex = e.index;
  321. this.$refs.shopping.open();
  322. },
  323. // 点击关闭弹窗
  324. closeBtn: function() {
  325. this.$refs.shopping.close();
  326. },
  327. getProPage() {
  328. uni.navigateTo({
  329. url: "/pages/pay-agreement/index?type=" + this.goodsDa.type,
  330. });
  331. },
  332. SoHAuth() {
  333. this.$refs.autho.onSoHAuth();
  334. },
  335. login(invite) {
  336. let that = this;
  337. // #ifdef MP-WEIXIN
  338. wx.login({
  339. success(res) {
  340. if (res.code) {
  341. post("v1/appletLogin", {
  342. code: res.code,
  343. invite: uni.getStorageSync("inviteCode") || "XHCYGNZM"
  344. }).then((res) => {
  345. if (res.code === 0) {
  346. if (res.data.token) {
  347. uni.setStorageSync("token", res.data.token);
  348. that.getuserInfo();
  349. } else {
  350. that.unid = res.data.unid;
  351. that.shopInfo = app.globalData.shopInfo;
  352. that.SoHAuth(); //调取授权弹窗
  353. }
  354. }
  355. });
  356. }
  357. },
  358. });
  359. // #endif
  360. },
  361. onauthGetTelSuccess(da) {
  362. this.SoHAuth();
  363. post("v1/getMobile", {
  364. unid: this.unid,
  365. ...da.detail,
  366. }).then((res) => {
  367. if (res.code === 0) {
  368. uni.setStorageSync("token", res.data.token);
  369. this.getuserInfo();
  370. }
  371. });
  372. },
  373. async getuserInfo() {
  374. this.userinfo = await uni.userfun();
  375. },
  376. // 选择规格
  377. goodsSpecChange(item,index){
  378. this.goodsSpecIndex = index;
  379. this.specId = item.id
  380. this.goodsAttrIndex = 0
  381. if(this.detail.goods_spec_list[this.goodsSpecIndex].attr_list.length > 0){
  382. this.attrId = this.detail.goods_spec_list[this.goodsSpecIndex].attr_list[0].id
  383. }else{
  384. this.attrId = "0"
  385. }
  386. this.getPrice()
  387. },
  388. goodsAttrChange(item,index){
  389. this.goodsAttrIndex = index
  390. this.attrId = item.id
  391. this.getPrice()
  392. },
  393. getPrice(){
  394. post("v1/goods/getPrice", {
  395. goods_id: this.detail.goods_id,
  396. spec_id: this.specId,
  397. attr_id: this.attrId,
  398. type: this.type
  399. }).then((res) => {
  400. if (res.code === 0) {
  401. if(res.data){
  402. this.afterSpecPrice = res.data.cost_price
  403. }
  404. }
  405. });
  406. }
  407. },
  408. onShareAppMessage() {
  409. let userinfo = uni.getStorageSync("userinfo");
  410. var path = "/pages/product/p_details?id=" + this.goodsDa.id + "&type=" + this.goodsDa.type;
  411. if (userinfo.invite) {
  412. path = "/pages/product/p_details?invite=" + userinfo.invite + "&id=" + this.goodsDa.id + "&type=" + this.goodsDa.type;
  413. }
  414. var title = `让数字经济赋能美好生活!`;
  415. return {
  416. title: title,
  417. path: path,
  418. };
  419. },
  420. };
  421. </script>
  422. <style lang="scss">
  423. // 页面配置
  424. page {
  425. background: #f5f5f5;
  426. }
  427. .container {
  428. padding-bottom: 90rpx;
  429. }
  430. // 页面配置-end
  431. // 价格信息栏
  432. .price_span {
  433. width: 283rpx;
  434. height: 100%;
  435. position: relative;
  436. }
  437. .price text {
  438. // font-size: 24rpx;
  439. color: #fff;
  440. font-family: "SourceHanSansCN-Medium";
  441. }
  442. .price_info {
  443. background: #ff6d44;
  444. height: 92rpx;
  445. width: 100%;
  446. box-sizing: border-box;
  447. }
  448. .price {
  449. color: #fff;
  450. margin-left: 20rpx;
  451. width: 400rpx;
  452. .p_favour {
  453. font-size: 36rpx;
  454. }
  455. .p_favour_teac{
  456. font-size: 30rpx;
  457. }
  458. .p_trade_teac {
  459. font-size: 20rpx;
  460. // margin-left: 20rpx;
  461. }
  462. .un_p_favour {
  463. font-size: 26rpx;
  464. text-decoration: line-through;
  465. margin-left: 16rpx;
  466. &.un_p {
  467. margin-left: 0;
  468. }
  469. }
  470. .p_trade {
  471. font-size: 20rpx;
  472. margin-left: 20rpx;
  473. }
  474. }
  475. .span_conten {
  476. width: calc(283rpx - 46rpx);
  477. height: 100%;
  478. background: #ffcabb;
  479. position: relative;
  480. font-size: 34rpx;
  481. font-family: "SourceHanSansCN-Medium";
  482. color: #682918;
  483. }
  484. .triangle {
  485. width: 0px;
  486. height: 0px;
  487. border-top: 92rpx solid rgba(0, 0, 0, 0);
  488. border-right: 92rpx solid rgba(0, 0, 0, 0);
  489. border-bottom: 92rpx solid #ffcabb;
  490. border-left: 92rpx solid rgba(0, 0, 0, 0);
  491. transform: translate(-46rpx, -92rpx);
  492. position: absolute;
  493. top: 0;
  494. left: 0;
  495. }
  496. .samll {
  497. .p_favour {
  498. font-size: 28rpx;
  499. }
  500. }
  501. // 价格信息栏-end
  502. // 标题信息栏
  503. .goods_subName {
  504. width: 100%;
  505. overflow: hidden;
  506. font-size: 22rpx;
  507. color: #787878;
  508. }
  509. .title_info {
  510. width: 100%;
  511. overflow: hidden;
  512. background: #ffffff;
  513. padding: 20rpx;
  514. box-sizing: border-box;
  515. }
  516. .goods_name {
  517. width: 100%;
  518. overflow: hidden;
  519. font-size: 32rpx;
  520. color: #1b1b1b;
  521. font-family: "SourceHanSansCN-Bold";
  522. font-weight: bold;
  523. margin-bottom: 20rpx;
  524. }
  525. // 标题信息栏-end
  526. // 产品简介
  527. .brief {
  528. width: 100%;
  529. overflow: hidden;
  530. background-color: #fff;
  531. }
  532. .brief_con {
  533. width: 100%;
  534. overflow: hidden;
  535. padding: 20rpx;
  536. box-sizing: border-box;
  537. }
  538. .brief_title {
  539. width: 100%;
  540. overflow: hidden;
  541. font-size: 26rpx;
  542. color: #1b1b1b;
  543. padding: 0 20rpx;
  544. box-sizing: border-box;
  545. border-bottom: 3rpx solid rgba(0, 0, 0, 0.12);
  546. height: 74rpx;
  547. }
  548. // 产品简介-end
  549. // 底部导航组件
  550. .option {
  551. width: 100%;
  552. overflow: hidden;
  553. position: fixed;
  554. left: 0;
  555. bottom: 0;
  556. }
  557. // 底部导航组件-end
  558. // 购买或加入购物车弹窗
  559. .option_box text {
  560. color: #2db389;
  561. }
  562. .close_img {
  563. font-size: 38rpx;
  564. color: #999;
  565. }
  566. .option_box {
  567. font-size: 26rpx;
  568. margin-top: 80rpx;
  569. }
  570. .goods_raido:nth-last-child(1) {
  571. margin-right: 0;
  572. }
  573. .num_con {
  574. // width: 100%;
  575. overflow: hidden;
  576. padding-bottom: 3rpx;
  577. }
  578. .quota_text{
  579. font-size: 28rpx;
  580. color: #545454;
  581. padding-left: 6rpx;
  582. }
  583. .quota_num_text{
  584. font-size: 24rpx;
  585. color: #545454;
  586. padding-left: 6rpx;
  587. }
  588. .num_str {
  589. font-size: 14px;
  590. color: #989898;
  591. }
  592. .goods_option {
  593. width: 100%;
  594. overflow: hidden;
  595. padding-top: 50rpx;
  596. }
  597. .close_con {
  598. width: 100%;
  599. overflow: hidden;
  600. margin-bottom: 35rpx;
  601. }
  602. .raido_text {
  603. font-size: 26rpx;
  604. color: #545454;
  605. margin-left: 18rpx;
  606. }
  607. .goods_con {
  608. width: calc(100% - 202rpx - 30rpx);
  609. overflow: hidden;
  610. }
  611. .goods_img {
  612. width: 202rpx;
  613. height: 187rpx;
  614. margin-right: 30rpx;
  615. border-radius: 12rpx;
  616. }
  617. .confim {
  618. width: 100%;
  619. height: 80rpx;
  620. border-radius: 40rpx;
  621. background: #2db389;
  622. color: #fff;
  623. font-size: 26rpx;
  624. margin-top: 44rpx;
  625. }
  626. .shopping {
  627. width: 100%;
  628. overflow: hidden;
  629. padding: 20rpx;
  630. box-sizing: border-box;
  631. border-radius: 30rpx 30rpx 0 0;
  632. background: #fff;
  633. }
  634. .goods_info {
  635. width: 100%;
  636. overflow: hidden;
  637. align-items: inherit;
  638. padding-bottom: 48rpx;
  639. border-bottom: 3rpx solid rgba(0, 0, 0, 0.12);
  640. }
  641. .shop_names {
  642. width: 100%;
  643. overflow: hidden;
  644. font-family: "SourceHanSansCN-Bold";
  645. font-weight: bold;
  646. color: #1b1b1b;
  647. font-size: 32rpx;
  648. }
  649. .goods_msg {
  650. width: 100%;
  651. overflow: hidden;
  652. font-size: 34rpx;
  653. color: #18bb88;
  654. font-family: "SourceHanSansCN-Medium";
  655. font-weight: 500;
  656. }
  657. .goods_smsg{
  658. font-size: 22rpx;
  659. color: #ff6d44;
  660. }
  661. .raido_img {
  662. width: 39rpx;
  663. height: 35rpx;
  664. background: url(~@/static/img/weixuanzhong.png);
  665. background-repeat: no-repeat;
  666. background-size: 35rpx 35rpx;
  667. background-position: center center;
  668. }
  669. .raido_box {
  670. background: url(~@/static/img/consent.png);
  671. background-repeat: no-repeat;
  672. background-size: 39rpx 35rpx;
  673. background-position: center center;
  674. }
  675. // 购买或加入购物车弹窗-end
  676. .goods_teac {
  677. .product-txt,
  678. .product-text {
  679. font-size: 22rpx;
  680. color: #787878;
  681. }
  682. .product-text {
  683. margin-left: 16rpx;
  684. }
  685. .red {
  686. color: #FA2E18;
  687. }
  688. .fenxiang {
  689. font-size: 22rpx;
  690. background: rgba(250, 46, 24, 0.08);
  691. display: inline-block;
  692. border-radius: 6rpx;
  693. padding: 0 16rpx;
  694. }
  695. }
  696. // 商品规格样式-start
  697. .goods_spec{
  698. font-size: 28rpx;
  699. padding-top: 28rpx;
  700. }
  701. .goods_spec_list{
  702. display: flex;
  703. align-items: center;
  704. flex-wrap: wrap;
  705. padding-top: 20rpx;
  706. &_item{
  707. font-size: 24rpx;
  708. padding: 14rpx 28rpx;
  709. border-radius: 10rpx;
  710. border: 2rpx solid #F7F7F7;
  711. margin-right: 12rpx;
  712. margin-bottom: 14rpx;
  713. background-color: #F7F7F7;
  714. }
  715. &_item_active{
  716. color: #ff6d44;
  717. border: 2rpx solid #ff6d44;
  718. background-color: #FFF8F2;
  719. }
  720. }
  721. // 商品规格样式-end
  722. ::v-deep .uni-numbox{
  723. border-radius: 10rpx !important;
  724. background-color: #F7F7F7 !important;
  725. }
  726. ::v-deep .uni-numbox__value{
  727. border-radius: 10rpx !important;
  728. background-color: #F7F7F7 !important;
  729. }
  730. ::v-deep .uni-numbox__minus, ::v-deep .uni-numbox__plus{
  731. // border: 1rpx solid #888888 !important;
  732. // color: #fff !important;
  733. background-color: #f0f0f0 !important;
  734. }
  735. // ::v-deep .uni-numbox--text{
  736. // color: #fff !important;
  737. // }
  738. // ::v-deep .uni-numbox--disabled{
  739. // color: #cecece !important;
  740. // }
  741. </style>