p_details.vue 27 KB

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