p_details.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803
  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") || ""
  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. uni.setStorageSync("unid", res.data.unid);
  352. that.shopInfo = app.globalData.shopInfo;
  353. // that.SoHAuth(); //调取授权弹窗
  354. }
  355. }
  356. });
  357. }
  358. },
  359. });
  360. // #endif
  361. },
  362. // onauthGetTelSuccess(da) {
  363. // this.SoHAuth();
  364. // post("v1/getMobile", {
  365. // unid: this.unid,
  366. // ...da.detail,
  367. // }).then((res) => {
  368. // if (res.code === 0) {
  369. // uni.setStorageSync("token", res.data.token);
  370. // this.getuserInfo();
  371. // }
  372. // });
  373. // },
  374. async getuserInfo() {
  375. this.userinfo = await uni.userfun();
  376. },
  377. // 选择规格
  378. goodsSpecChange(item,index){
  379. this.goodsSpecIndex = index;
  380. this.specId = item.id
  381. this.goodsAttrIndex = 0
  382. if(this.detail.goods_spec_list[this.goodsSpecIndex].attr_list.length > 0){
  383. this.attrId = this.detail.goods_spec_list[this.goodsSpecIndex].attr_list[0].id
  384. }else{
  385. this.attrId = "0"
  386. }
  387. this.getPrice()
  388. },
  389. goodsAttrChange(item,index){
  390. this.goodsAttrIndex = index
  391. this.attrId = item.id
  392. this.getPrice()
  393. },
  394. getPrice(){
  395. post("v1/goods/getPrice", {
  396. goods_id: this.detail.goods_id,
  397. spec_id: this.specId,
  398. attr_id: this.attrId,
  399. type: this.type
  400. }).then((res) => {
  401. if (res.code === 0) {
  402. if(res.data){
  403. this.afterSpecPrice = res.data.cost_price
  404. }
  405. }
  406. });
  407. }
  408. },
  409. onShareAppMessage() {
  410. let userinfo = uni.getStorageSync("userinfo");
  411. var path = "/pages/product/p_details?id=" + this.goodsDa.id + "&type=" + this.goodsDa.type;
  412. if (userinfo.invite) {
  413. path = "/pages/product/p_details?invite=" + userinfo.invite + "&id=" + this.goodsDa.id + "&type=" + this.goodsDa.type;
  414. }
  415. var title = `让数字经济赋能美好生活!`;
  416. return {
  417. title: title,
  418. path: path,
  419. };
  420. },
  421. };
  422. </script>
  423. <style lang="scss">
  424. // 页面配置
  425. page {
  426. background: #f5f5f5;
  427. }
  428. .container {
  429. padding-bottom: 90rpx;
  430. }
  431. // 页面配置-end
  432. // 价格信息栏
  433. .price_span {
  434. width: 283rpx;
  435. height: 100%;
  436. position: relative;
  437. }
  438. .price text {
  439. // font-size: 24rpx;
  440. color: #fff;
  441. font-family: "SourceHanSansCN-Medium";
  442. }
  443. .price_info {
  444. background: #ff6d44;
  445. height: 92rpx;
  446. width: 100%;
  447. box-sizing: border-box;
  448. }
  449. .price {
  450. color: #fff;
  451. margin-left: 20rpx;
  452. width: 400rpx;
  453. .p_favour {
  454. font-size: 36rpx;
  455. }
  456. .p_favour_teac{
  457. font-size: 30rpx;
  458. }
  459. .p_trade_teac {
  460. font-size: 20rpx;
  461. // margin-left: 20rpx;
  462. }
  463. .un_p_favour {
  464. font-size: 26rpx;
  465. text-decoration: line-through;
  466. margin-left: 16rpx;
  467. &.un_p {
  468. margin-left: 0;
  469. }
  470. }
  471. .p_trade {
  472. font-size: 20rpx;
  473. margin-left: 20rpx;
  474. }
  475. }
  476. .span_conten {
  477. width: calc(283rpx - 46rpx);
  478. height: 100%;
  479. background: #ffcabb;
  480. position: relative;
  481. font-size: 34rpx;
  482. font-family: "SourceHanSansCN-Medium";
  483. color: #682918;
  484. }
  485. .triangle {
  486. width: 0px;
  487. height: 0px;
  488. border-top: 92rpx solid rgba(0, 0, 0, 0);
  489. border-right: 92rpx solid rgba(0, 0, 0, 0);
  490. border-bottom: 92rpx solid #ffcabb;
  491. border-left: 92rpx solid rgba(0, 0, 0, 0);
  492. transform: translate(-46rpx, -92rpx);
  493. position: absolute;
  494. top: 0;
  495. left: 0;
  496. }
  497. .samll {
  498. .p_favour {
  499. font-size: 28rpx;
  500. }
  501. }
  502. // 价格信息栏-end
  503. // 标题信息栏
  504. .goods_subName {
  505. width: 100%;
  506. overflow: hidden;
  507. font-size: 22rpx;
  508. color: #787878;
  509. }
  510. .title_info {
  511. width: 100%;
  512. overflow: hidden;
  513. background: #ffffff;
  514. padding: 20rpx;
  515. box-sizing: border-box;
  516. }
  517. .goods_name {
  518. width: 100%;
  519. overflow: hidden;
  520. font-size: 32rpx;
  521. color: #1b1b1b;
  522. font-family: "SourceHanSansCN-Bold";
  523. font-weight: bold;
  524. margin-bottom: 20rpx;
  525. }
  526. // 标题信息栏-end
  527. // 产品简介
  528. .brief {
  529. width: 100%;
  530. overflow: hidden;
  531. background-color: #fff;
  532. }
  533. .brief_con {
  534. width: 100%;
  535. overflow: hidden;
  536. padding: 20rpx;
  537. box-sizing: border-box;
  538. }
  539. .brief_title {
  540. width: 100%;
  541. overflow: hidden;
  542. font-size: 26rpx;
  543. color: #1b1b1b;
  544. padding: 0 20rpx;
  545. box-sizing: border-box;
  546. border-bottom: 3rpx solid rgba(0, 0, 0, 0.12);
  547. height: 74rpx;
  548. }
  549. // 产品简介-end
  550. // 底部导航组件
  551. .option {
  552. width: 100%;
  553. overflow: hidden;
  554. position: fixed;
  555. left: 0;
  556. bottom: 0;
  557. }
  558. // 底部导航组件-end
  559. // 购买或加入购物车弹窗
  560. .option_box text {
  561. color: #2db389;
  562. }
  563. .close_img {
  564. font-size: 38rpx;
  565. color: #999;
  566. }
  567. .option_box {
  568. font-size: 26rpx;
  569. margin-top: 80rpx;
  570. }
  571. .goods_raido:nth-last-child(1) {
  572. margin-right: 0;
  573. }
  574. .num_con {
  575. // width: 100%;
  576. overflow: hidden;
  577. padding-bottom: 3rpx;
  578. }
  579. .quota_text{
  580. font-size: 28rpx;
  581. color: #545454;
  582. padding-left: 6rpx;
  583. }
  584. .quota_num_text{
  585. font-size: 24rpx;
  586. color: #545454;
  587. padding-left: 6rpx;
  588. }
  589. .num_str {
  590. font-size: 14px;
  591. color: #989898;
  592. }
  593. .goods_option {
  594. width: 100%;
  595. overflow: hidden;
  596. padding-top: 50rpx;
  597. }
  598. .close_con {
  599. width: 100%;
  600. overflow: hidden;
  601. margin-bottom: 35rpx;
  602. }
  603. .raido_text {
  604. font-size: 26rpx;
  605. color: #545454;
  606. margin-left: 18rpx;
  607. }
  608. .goods_con {
  609. width: calc(100% - 202rpx - 30rpx);
  610. overflow: hidden;
  611. }
  612. .goods_img {
  613. width: 202rpx;
  614. height: 187rpx;
  615. margin-right: 30rpx;
  616. border-radius: 12rpx;
  617. }
  618. .confim {
  619. width: 100%;
  620. height: 80rpx;
  621. border-radius: 40rpx;
  622. background: #2db389;
  623. color: #fff;
  624. font-size: 26rpx;
  625. margin-top: 44rpx;
  626. }
  627. .shopping {
  628. width: 100%;
  629. overflow: hidden;
  630. padding: 20rpx;
  631. box-sizing: border-box;
  632. border-radius: 30rpx 30rpx 0 0;
  633. background: #fff;
  634. }
  635. .goods_info {
  636. width: 100%;
  637. overflow: hidden;
  638. align-items: inherit;
  639. padding-bottom: 48rpx;
  640. border-bottom: 3rpx solid rgba(0, 0, 0, 0.12);
  641. }
  642. .shop_names {
  643. width: 100%;
  644. overflow: hidden;
  645. font-family: "SourceHanSansCN-Bold";
  646. font-weight: bold;
  647. color: #1b1b1b;
  648. font-size: 32rpx;
  649. }
  650. .goods_msg {
  651. width: 100%;
  652. overflow: hidden;
  653. font-size: 34rpx;
  654. color: #18bb88;
  655. font-family: "SourceHanSansCN-Medium";
  656. font-weight: 500;
  657. }
  658. .goods_smsg{
  659. font-size: 22rpx;
  660. color: #ff6d44;
  661. }
  662. .raido_img {
  663. width: 39rpx;
  664. height: 35rpx;
  665. background: url(~@/static/img/weixuanzhong.png);
  666. background-repeat: no-repeat;
  667. background-size: 35rpx 35rpx;
  668. background-position: center center;
  669. }
  670. .raido_box {
  671. background: url(~@/static/img/consent.png);
  672. background-repeat: no-repeat;
  673. background-size: 39rpx 35rpx;
  674. background-position: center center;
  675. }
  676. // 购买或加入购物车弹窗-end
  677. .goods_teac {
  678. .product-txt,
  679. .product-text {
  680. font-size: 22rpx;
  681. color: #787878;
  682. }
  683. .product-text {
  684. margin-left: 16rpx;
  685. }
  686. .red {
  687. color: #FA2E18;
  688. }
  689. .fenxiang {
  690. font-size: 22rpx;
  691. background: rgba(250, 46, 24, 0.08);
  692. display: inline-block;
  693. border-radius: 6rpx;
  694. padding: 0 16rpx;
  695. }
  696. }
  697. // 商品规格样式-start
  698. .goods_spec{
  699. font-size: 28rpx;
  700. padding-top: 28rpx;
  701. }
  702. .goods_spec_list{
  703. display: flex;
  704. align-items: center;
  705. flex-wrap: wrap;
  706. padding-top: 20rpx;
  707. &_item{
  708. font-size: 24rpx;
  709. padding: 14rpx 28rpx;
  710. border-radius: 10rpx;
  711. border: 2rpx solid #F7F7F7;
  712. margin-right: 12rpx;
  713. margin-bottom: 14rpx;
  714. background-color: #F7F7F7;
  715. }
  716. &_item_active{
  717. color: #ff6d44;
  718. border: 2rpx solid #ff6d44;
  719. background-color: #FFF8F2;
  720. }
  721. }
  722. // 商品规格样式-end
  723. ::v-deep .uni-numbox{
  724. border-radius: 10rpx !important;
  725. background-color: #F7F7F7 !important;
  726. }
  727. ::v-deep .uni-numbox__value{
  728. border-radius: 10rpx !important;
  729. background-color: #F7F7F7 !important;
  730. }
  731. ::v-deep .uni-numbox__minus, ::v-deep .uni-numbox__plus{
  732. // border: 1rpx solid #888888 !important;
  733. // color: #fff !important;
  734. background-color: #f0f0f0 !important;
  735. }
  736. // ::v-deep .uni-numbox--text{
  737. // color: #fff !important;
  738. // }
  739. // ::v-deep .uni-numbox--disabled{
  740. // color: #cecece !important;
  741. // }
  742. </style>