product.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869
  1. <template>
  2. <view class="container">
  3. <view class="swiper-box">
  4. <view class="img" v-if="isSc == 2">
  5. <image :src="shopDetail.image" mode="widthFix"></image>
  6. </view>
  7. <view class="img" v-if="isSc == 1">
  8. <image :src="shopDetail.class_info.uri" mode="widthFix"></image>
  9. </view>
  10. </view>
  11. <view class="content-box">
  12. <view class="content-top">
  13. <view class="hd flex">
  14. <view>
  15. {{ shopDetail.store_name }}
  16. </view>
  17. <view class="flex rightTip">
  18. <view class="textStock border-radius-10 flex">
  19. <view class="tip">
  20. 限量
  21. </view>
  22. <view class="num">
  23. {{shopDetail.stock}}
  24. </view>
  25. </view>
  26. <view class="tip border-radius-10 margin-l-10">
  27. 限购{{shopDetail.buy_limit}}份
  28. </view>
  29. </view>
  30. </view>
  31. <!-- <view class="content-img">
  32. <image src="../../static/img/fx.png" mode=""></image>分享
  33. </view> -->
  34. </view>
  35. <view class="content-center" v-if="isSc == 2">
  36. <view class="title">已售数量: {{ shopDetail.ficti }}份</view>
  37. <view class="title">发行方: 艺绘官方ssss</view>
  38. </view>
  39. <view class="content-center" v-if="isSc == 1">
  40. <view class="title" style="font-size: 38rpx;font-weight: bold;color: #FFFFFF;">
  41. {{ shopDetail.class_info.name }}</view>
  42. <view class="title">持有者: {{ shopDetail.user.nickname }}</view>
  43. </view>
  44. <view class="content-bottom">
  45. <view class="price">
  46. {{ shopDetail.price }}
  47. <span>RMB</span>
  48. </view>
  49. <view class="gobuy" @click="buy()">立即购买</view>
  50. </view>
  51. </view>
  52. <view class="rz" v-show="isSc == 2">
  53. <view class="rz-title">作品描述</view>
  54. <view class="rz-ms">{{ shopDetail.store_info }}</view>
  55. </view>
  56. <view class="rz">
  57. <view class="rz-title">链上信息</view>
  58. <view class="tc-item flex">
  59. <view class="tcitem-name">地址</view>
  60. <view class="ali-name clamp">{{ nft.id }}</view>
  61. <image class="tcitem-image" src="../../static/img/copy.png" mode="" @click="copy(nft.id)"></image>
  62. </view>
  63. <view class="tc-item flex">
  64. <view class="tcitem-name">Token Hash</view>
  65. <view class="ali-name clamp">{{ nft.tx_hash }}</view>
  66. <image class="tcitem-image" src="../../static/img/copy.png" mode="" @click="copy(nft.id)"></image>
  67. </view>
  68. </view>
  69. <view class="rz" v-show="isSc == 2">
  70. <view class="rz-title">作品详情</view>
  71. <rich-text class="rich" :nodes="shopDetail.description"></rich-text>
  72. </view>
  73. <uni-popup ref="popupkf" type="bottom">
  74. <view class="popup-box">
  75. <view class="pop-title">选择支付方式</view>
  76. <view class="pop-radio">
  77. <radio-group name="">
  78. <!-- #ifdef APP-PLUS -->
  79. <label class="pop-radio-box" @click="type = 'ali'">
  80. <view class="pop-radio-cont">
  81. <image src="../../static/img/ali.png" style="width: 40rpx;height: 40rpx;"
  82. mode="scaleToFill"></image>
  83. <text>支付宝支付</text>
  84. </view>
  85. <radio :checked="type == 'ali'" style="transform: scale(0.8);" />
  86. </label>
  87. <!-- <label class="pop-radio-box" @click="type='weixin'">
  88. <view class="pop-radio-cont">
  89. <image src="../../static/img/weixin.png" style="width: 40rpx;height: 40rpx;"
  90. mode="scaleToFill">
  91. </image>
  92. <text>微信支付</text>
  93. </view>
  94. <radio :checked="type=='weixin'" style="transform: scale(0.8);" />
  95. </label> -->
  96. <!-- #endif -->
  97. <label class="pop-radio-box" @click="type = 'yue'">
  98. <view class="pop-radio-cont">
  99. <image src="../../static/img/yue.png" style="width: 40rpx;height: 40rpx;"
  100. mode="scaleToFill"></image>
  101. <text>余额支付:{{ now_money }}</text>
  102. </view>
  103. <radio :checked="type == 'yue'" style="transform: scale(0.8);" />
  104. </label>
  105. </radio-group>
  106. <view class="pop-bottom">
  107. <view class="pirce">
  108. <view class="price-left">合计:</view>
  109. <view class="price-right">
  110. <span>{{ shopDetail.price }}</span>
  111. </view>
  112. </view>
  113. <!-- "!payLoding ? pay() : ''" -->
  114. <view class="buy" @click="pay()" :class="{ clickbg: payLoding }">立即支付</view>
  115. </view>
  116. </view>
  117. </view>
  118. </uni-popup>
  119. <!-- <uni-popup ref="popupZf" type="bottom" >
  120. </uni-popup> -->
  121. </view>
  122. </template>
  123. <script>
  124. // import uniPopup from '@/components/uni-popup/uni-popup.vue'
  125. import {
  126. balance
  127. } from '@/api/wallet.js';
  128. import {
  129. mapState
  130. } from 'vuex';
  131. import uniCopy from '@/components/js_sdk/xb-copy/uni-copy.js';
  132. import {
  133. goodsDetails,
  134. cartAdd
  135. } from '@/api/product.js';
  136. import {
  137. confirm,
  138. orderPay,
  139. createOrderkey,
  140. nftmall,
  141. nftDetail,
  142. nftBuy
  143. } from '@/api/order.js';
  144. export default {
  145. data() {
  146. return {
  147. orderId: '', //订单编号
  148. moneyAll: '', //购物车订单
  149. now_money: 0, //余额
  150. payLoding: true, //判断是否支付中
  151. orderKey: '', //订单的key值
  152. addressData: {}, //地址信息
  153. shopList: [], //商品列表
  154. cartId: '', //购物车id
  155. uniqueId: '',
  156. nft: '',
  157. type: 'yue', //支付状态
  158. shopDetail: {
  159. class_info: {},
  160. user: {}
  161. }, //商品详情
  162. weixin: '',
  163. yue: '',
  164. shopId: '', //商品id
  165. list: [
  166. // 'https://img.php.cn/upload/article/202104/15/2021041518005466284.jpg',
  167. // 'https://img.php.cn/upload/article/202104/15/2021041518005466284.jpg',
  168. // 'https://img.php.cn/upload/article/202104/15/2021041518005466284.jpg'
  169. ],
  170. froms: '', //保存h5中数据来源对象
  171. isSc: 0 //是否是是市场传递过来的参数
  172. };
  173. },
  174. onLoad(options) {
  175. // 保存当前获取数据的类型
  176. this.isSc = options.isSc;
  177. // 商品id
  178. this.shopId = options.id;
  179. // 判断是否是首页
  180. if (this.isSc == 2) {
  181. this.goodsDetail();
  182. }
  183. // 判断是否是市场
  184. if (this.isSc == 1) {
  185. this.getNftDetail();
  186. }
  187. // 载入余额
  188. balance({}).then(({
  189. data
  190. }) => {
  191. // 获取余额
  192. this.now_money = data.now_money;
  193. });
  194. },
  195. computed: {
  196. ...mapState(['weichatObj', 'baseURL', 'urlFile']),
  197. ...mapState('user', ['userInfo', 'hasLogin'])
  198. },
  199. methods: {
  200. //选择支付方式
  201. changePayType(type) {
  202. this.type = type;
  203. },
  204. copy(value) {
  205. let obj = this;
  206. let content = value; //需要复制的内容
  207. console.log('复制的内容:', content);
  208. // content = typeof content === 'string' ? content : content.toString(); // 复制内容,必须字符串,数字需要转换为字符串
  209. const result = uniCopy(content);
  210. if (result === false) {
  211. uni.showToast({
  212. title: '不支持'
  213. });
  214. } else {
  215. uni.showToast({
  216. title: '复制成功',
  217. icon: 'none'
  218. });
  219. }
  220. },
  221. buy() {
  222. // 判断是否是首页
  223. if (this.isSc == 2) {
  224. this.indexPay();
  225. }
  226. // 判断是否是市场
  227. if (this.isSc == 1) {
  228. this.$refs.popupkf.open();
  229. }
  230. },
  231. // 判断是否是首页进入交易
  232. indexPay() {
  233. let obj = this;
  234. let lj = true;
  235. // 判断是否需要拦截
  236. if (obj.userInfo.is_company == 1 || obj.userInfo.is_partner == 1) {
  237. lj = false;
  238. }
  239. if (lj) {
  240. let time = new Date();
  241. if (time.getTime() < obj.shopDetail.sell_time * 1000) {
  242. uni.showModal({
  243. title: '错误',
  244. content: '未到开售时间,不能购买',
  245. showCancel: false,
  246. success: res => {},
  247. fail: () => {}
  248. });
  249. return;
  250. }
  251. }
  252. let data = {
  253. cartNum: 1,
  254. uniqueId: obj.uniqueId, //商品标签.默认无
  255. new: '1',
  256. // mer_id: '',//商店id暂未知晓
  257. productId: obj.shopId
  258. };
  259. //生成订单
  260. cartAdd(data)
  261. .then(res => {
  262. console.log(res, 'res');
  263. //需要获取购物车号
  264. obj.cartId = res.data.cartId;
  265. this.getKeys();
  266. })
  267. .catch(e => {
  268. console.log(e);
  269. });
  270. this.$refs.popupkf.open();
  271. },
  272. getKeys() {
  273. let obj = this;
  274. confirm({
  275. cartId: obj.cartId
  276. }).then(data => {
  277. console.log(data, '生平具体信息');
  278. obj.addressData = data.data.addressInfo || {};
  279. obj.shopList = data.data.cartInfo; //商品列表
  280. // obj.moneyAll = data.data.cartInfo.truePrice; //金额数据
  281. obj.orderKey = data.data.orderKey; //订单key
  282. // let url = `/pages/money/pay?key=${obj.orderKey}`
  283. // console.log(url);
  284. });
  285. },
  286. //支付
  287. async pay() {
  288. let obj = this;
  289. if (obj.type == 'yue' && obj.now_money * 1 < obj.shopDetail.price * 1) {
  290. uni.showModal({
  291. title: '提示',
  292. content: '账户余额不足!',
  293. showCancel: false
  294. });
  295. return;
  296. }
  297. // uni.hideLoading()
  298. uni.showLoading({
  299. title: '支付中',
  300. mask: true
  301. });
  302. // 判断是否支付中
  303. if (!obj.payLoding) {
  304. return;
  305. }
  306. obj.payLoding = false;
  307. if (obj.type == 'weixin') {
  308. obj.$api.msg('微信暂未开通!');
  309. uni.hideLoading();
  310. obj.payLoding = true;
  311. return;
  312. }
  313. // 判断是否是市场进入
  314. if (obj.isSc == 1) {
  315. console.log('sc');
  316. obj.marketPay();
  317. }
  318. // 判断是否是市场进入
  319. if (obj.isSc == 2) {
  320. obj.firstCreateOrder();
  321. }
  322. },
  323. // 市场支付
  324. marketPay() {
  325. const obj = this;
  326. nftBuy({
  327. pay_type: obj.type
  328. },
  329. obj.shopId
  330. )
  331. .then(res => {
  332. console.log(res, '购入');
  333. uni.hideLoading();
  334. if (obj.type == 'yue') {
  335. obj.paySuccessTo();
  336. }
  337. if (obj.type == 'ali') {
  338. const url = res.data.payConfig;
  339. console.log(url, 'url');
  340. uni.requestPayment({
  341. provider: 'alipay',
  342. orderInfo: url,
  343. success: res => {
  344. obj.paySuccessTo();
  345. },
  346. fail: e => {
  347. uni.showModal({
  348. title: '错误',
  349. content: '未成功支付',
  350. showCancel: false
  351. });
  352. console.log(e);
  353. },
  354. complete: () => {}
  355. });
  356. }
  357. })
  358. .catch(() => {
  359. obj.payLoding = true;
  360. });
  361. return;
  362. },
  363. //普通商品支付
  364. firstCreateOrder() {
  365. let obj = this;
  366. // 获取下单页面数据
  367. // let prepage = obj.$api.prePage();
  368. // console.log(prepage,'prepage');
  369. let pages = getCurrentPages(); // 获取页面栈
  370. let current = pages[pages.length - 1]; // 当前页面
  371. console.log(current, 'current');
  372. let data = {
  373. real_name: '', //联系人名称
  374. phone: '', //联系人号码
  375. couponId: '', //优惠券编号
  376. addressId: '', //支付地址id
  377. useIntegral: 0, //是否积分抵扣1为是0为否
  378. payType: obj.type, //支付类型 weixin-微信 yue-余额
  379. mark: '', //备注
  380. from: 'app', //来源
  381. shipping_type: 1 //提货方式 1 快递 2自提
  382. };
  383. // 生成订单
  384. console.log(obj.orderKey, 'obj.orderKey');
  385. createOrderkey(data, obj.orderKey)
  386. .then(({
  387. data,
  388. status,
  389. msg
  390. }) => {
  391. console.log(status);
  392. // 判断是否支付失败
  393. if (data.status == 'ORDER_EXIST') {
  394. uni.showModal({
  395. title: '提示',
  396. content: msg,
  397. showCancel: false
  398. });
  399. uni.hideLoading();
  400. obj.payLoding = true;
  401. return;
  402. }
  403. // 保存订单号
  404. obj.orderId = data.result.orderId;
  405. // 判断是否为余额支付
  406. if (obj.type == 'yue') {
  407. if (status == 200) {
  408. obj.paySuccessTo();
  409. } else {
  410. obj.$api.msg(msg);
  411. }
  412. } else {
  413. // 立即支付
  414. obj.orderMoneyPay();
  415. }
  416. })
  417. .catch(e => {
  418. uni.hideLoading();
  419. obj.payLoding = true;
  420. console.log(e, '123456789');
  421. });
  422. },
  423. //立即支付订单
  424. orderMoneyPay() {
  425. let obj = this;
  426. orderPay({
  427. uni: obj.orderKey,
  428. from: 'app', //来源
  429. paytype: obj.type //支付类型 weixin-微信 yue-余额
  430. }).then(res => {
  431. console.log(res, '订单支付信息');
  432. if (res.data.status == 'SUCCESS' && obj.type == 'yue') {
  433. if (res.status == 200) {
  434. obj.paySuccessTo();
  435. } else {
  436. obj.$api.msg(msg);
  437. console.log('失败');
  438. }
  439. }
  440. if (obj.type == 'ali') {
  441. const url = res.data.result.jsConfig;
  442. console.log(url, 'url');
  443. uni.requestPayment({
  444. provider: 'alipay',
  445. orderInfo: url,
  446. success: res => {
  447. console.log(res);
  448. uni.showToast({
  449. title: '支付成功',
  450. duration: 2000
  451. });
  452. obj.paySuccessTo();
  453. },
  454. fail: e => {
  455. console.log(e);
  456. },
  457. complete: () => {}
  458. });
  459. }
  460. uni.hideLoading();
  461. obj.payLoding = true;
  462. });
  463. },
  464. // 获取商品详情
  465. goodsDetail() {
  466. let obj = this;
  467. console.log(obj.isSc, 'issc');
  468. goodsDetails({}, obj.shopId).then(res => {
  469. console.log(res, '123456789');
  470. obj.uniqueId = res.data.productValue['默认'].unique;
  471. obj.nft = res.data.nft_class;
  472. obj.shopDetail = res.data.storeInfo;
  473. console.log(obj.shopDetail, obj.uniqueId, 'res1111');
  474. if (obj.shopDetail.description != null) {
  475. obj.shopDetail.description = obj.shopDetail.description.replace(/<img/g,
  476. '<img class="rich-img"').replace(/<p>\s*<img/g, '<p class="pHeight"><img');
  477. }
  478. if (obj.shopDetail.rule != null) {
  479. obj.shopDetail.rule = '<p>' + obj.shopDetail.rule.replace(/\n/g, '</p><p>').trim() +
  480. '</p>';
  481. }
  482. let time = new Date(obj.shopDetail.sell_time * 1000);
  483. obj.shopDetail.cmy_pay_time =
  484. time.getFullYear() + '年' + (time.getMonth() + 1) + '月' + time.getDate() + '日' + time
  485. .getHours() + '时' + time.getMinutes() + '分' + time.getSeconds() + '秒';
  486. return;
  487. });
  488. },
  489. // 获取交易市场进入时候的数据
  490. getNftDetail() {
  491. let obj = this;
  492. nftDetail({}, obj.shopId).then(res => {
  493. // obj.uniqueId = res.data.productValue['默认'].unique
  494. // obj.shopDetail = res.data.storeInfo
  495. obj.shopDetail = res.data.info;
  496. console.log(res, obj.isSc, 'res1111');
  497. });
  498. },
  499. // 支付成功跳转
  500. paySuccessTo() {
  501. uni.hideLoading();
  502. uni.redirectTo({
  503. url: '/pages/money/paySuccess?orderKey=' + this.orderKey
  504. });
  505. }
  506. }
  507. };
  508. </script>
  509. <style lang="scss">
  510. .container,
  511. page {
  512. background: #111111;
  513. min-height: 100%;
  514. }
  515. /deep/ .rich-img {
  516. width: 100% !important;
  517. height: auto;
  518. }
  519. /* #ifdef MP */
  520. .rich-img {
  521. width: 100% !important;
  522. height: auto;
  523. }
  524. // 处理图片间白色间距问题
  525. .pHeight {
  526. line-height: 0;
  527. }
  528. /* #endif */
  529. .swiper-box {
  530. background: #0c0a36;
  531. }
  532. .img {
  533. margin: 0 auto;
  534. width: 750rpx;
  535. image {
  536. width: 100%;
  537. }
  538. }
  539. .content-box {
  540. border-bottom: 2rpx solid #919295;
  541. padding: 30rpx;
  542. display: flex;
  543. flex-direction: column;
  544. .content-top {
  545. display: flex;
  546. justify-content: space-between;
  547. align-items: center;
  548. .hd {
  549. font-size: 38rpx;
  550. font-family: PingFang SC;
  551. font-weight: bold;
  552. color: #ffffff;
  553. line-height: 1;
  554. .rightTip{
  555. .textStock {
  556. overflow: hidden;
  557. }
  558. .num {
  559. font-size: 18rpx;
  560. padding: 6rpx 10rpx;
  561. color: #9F570E;
  562. background-color: #4D3414;
  563. }
  564. .tip {
  565. font-size: 20rpx;
  566. color: #9F570E;
  567. padding: 6rpx 10rpx;
  568. line-height: 1;
  569. background: $bgBaseBg;
  570. }
  571. }
  572. }
  573. .content-img {
  574. display: flex;
  575. align-items: center;
  576. justify-content: space-around;
  577. font-size: 24rpx;
  578. font-family: PingFang SC;
  579. font-weight: 500;
  580. color: #585be7;
  581. line-height: 39rpx;
  582. padding: 10rpx;
  583. height: 41rpx;
  584. border: 2rpx solid #585be7;
  585. border-radius: 5rpx;
  586. image {
  587. width: 26rpx;
  588. height: 26rpx;
  589. }
  590. }
  591. }
  592. .content-center {
  593. margin: 20rpx 0;
  594. display: flex;
  595. flex-direction: column;
  596. .title {
  597. font-size: 24rpx;
  598. font-weight: 500;
  599. color: #ffffff;
  600. line-height: 42rpx;
  601. }
  602. }
  603. .content-bottom {
  604. display: flex;
  605. align-items: center;
  606. justify-content: space-between;
  607. .price {
  608. display: flex;
  609. justify-content: flex-end;
  610. font-size: 48rpx;
  611. font-weight: bold;
  612. color: #FDD58A;
  613. span {
  614. font-size: 24rpx;
  615. font-weight: bold;
  616. color: #666666;
  617. font-family: SourceHanSerifSC;
  618. line-height: 66rpx;
  619. }
  620. }
  621. .gobuy {
  622. width: 334rpx;
  623. height: 90rpx;
  624. background: $bgBaseBg;
  625. border-radius: 10rpx;
  626. font-size: 36rpx;
  627. font-weight: 500;
  628. color: #9F570E;
  629. line-height: 90rpx;
  630. text-align: center;
  631. }
  632. }
  633. }
  634. .rz {
  635. display: flex;
  636. flex-direction: column;
  637. align-items: center;
  638. .rz-title {
  639. margin: 35rpx 0;
  640. font-size: 36rpx;
  641. font-family: PingFang SC;
  642. font-weight: bold;
  643. color: #ffffff;
  644. line-height: 42rpx;
  645. }
  646. .rich {
  647. display: block;
  648. justify-content: center;
  649. margin: 30rpx;
  650. width: 750rpx;
  651. overflow: hidden;
  652. }
  653. .rz-ms {
  654. padding: 0 20rpx;
  655. width: 690rpx;
  656. font-size: 24rpx;
  657. line-height: 36rpx;
  658. color: #ffffff;
  659. word-wrap: break-word;
  660. word-break: normal;
  661. }
  662. .rz-content {
  663. padding: 20rpx;
  664. display: flex;
  665. flex-direction: column;
  666. width: 690rpx;
  667. background: #222222;
  668. border-radius: 20rpx;
  669. .con-box {
  670. line-height: 60rpx;
  671. display: flex;
  672. justify-content: space-between;
  673. align-items: center;
  674. .left {
  675. font-size: 24rpx;
  676. color: #a5a5a5;
  677. }
  678. .right {
  679. display: flex;
  680. align-items: center;
  681. .address {
  682. color: #6363fe;
  683. font-size: 24rpx;
  684. width: 300rpx;
  685. text-align: right;
  686. overflow: hidden;
  687. text-overflow: ellipsis;
  688. white-space: nowrap;
  689. }
  690. .copy {
  691. margin-left: 15rpx;
  692. margin-bottom: 22rpx;
  693. width: 30rpx;
  694. height: 30rpx;
  695. image {
  696. width: 30rpx;
  697. height: 30rpx;
  698. }
  699. }
  700. }
  701. }
  702. }
  703. .tc-item {
  704. width: 100%;
  705. padding: 50rpx 40rpx 0;
  706. line-height: 1;
  707. .tcitem-name {
  708. flex-shrink: 0;
  709. font-size: 30rpx;
  710. font-family: PingFang SC;
  711. font-weight: 500;
  712. color: #fff;
  713. }
  714. .ali-name {
  715. font-size: 30rpx;
  716. font-family: PingFang SC;
  717. font-weight: 500;
  718. padding: 0 20rpx;
  719. color: #FDD58A;
  720. }
  721. .tcitem-image {
  722. flex-shrink: 0;
  723. width: 26rpx;
  724. height: 28rpx;
  725. }
  726. }
  727. }
  728. .popup-box {
  729. width: 750rpx;
  730. background: #ffffff;
  731. border-radius: 10rpx 10rpx 0px 0px;
  732. padding-bottom: 130rpx;
  733. .pop-title {
  734. line-height: 1;
  735. padding-top: 30rpx;
  736. padding-left: 30rpx;
  737. padding-bottom: 10rpx;
  738. font-size: 34rpx;
  739. font-weight: bold;
  740. color: #333333;
  741. }
  742. .pop-radio {
  743. display: flex;
  744. .pop-radio-box {
  745. height: 100rpx;
  746. display: flex;
  747. align-items: center;
  748. padding: 25rpx;
  749. justify-content: space-between;
  750. width: 750rpx;
  751. .pop-radio-cont {
  752. display: flex;
  753. img {
  754. width: 40rpx;
  755. height: 40rpx;
  756. }
  757. text {
  758. margin-left: 10rpx;
  759. font-size: 28rpx;
  760. font-weight: 400;
  761. color: #3f454b;
  762. }
  763. }
  764. }
  765. .pop-bottom {
  766. position: fixed;
  767. bottom: 0;
  768. right: 0;
  769. height: 93rpx;
  770. width: 750rpx;
  771. display: flex;
  772. justify-content: space-between;
  773. .pirce {
  774. display: flex;
  775. align-items: center;
  776. margin-left: 25rpx;
  777. .price-left {
  778. font-size: 28rpx;
  779. font-family: PingFang SC;
  780. font-weight: 400;
  781. color: #3f454b;
  782. line-height: 100px;
  783. }
  784. display: flex;
  785. .price-right {
  786. font-size: 24rpx;
  787. font-weight: 500;
  788. color: #fd3b39;
  789. line-height: 55px;
  790. span {
  791. font-size: 36rpx;
  792. font-weight: 500;
  793. color: #fd3b39;
  794. line-height: 55px;
  795. }
  796. }
  797. }
  798. .buy {
  799. width: 360rpx;
  800. height: 93rpx;
  801. background: $bgBaseBg;
  802. font-size: 32rpx;
  803. font-weight: bold;
  804. line-height: 93rpx;
  805. text-align: center;
  806. color: #ffffff;
  807. }
  808. }
  809. }
  810. }
  811. .clickbg {
  812. background-color: $color-gray !important;
  813. }
  814. </style>