createOrder.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904
  1. <template>
  2. <view class="padding-t-30">
  3. <!-- 地址 -->
  4. <!-- <navigator url="/pages/set/address?source=1" class="address-section">
  5. <view class="order-content" v-if="addressData.real_name">
  6. <view class="cen">
  7. <view class="top">
  8. <text class="name">{{ addressData.real_name }}</text>
  9. <text class="mobile">{{ addressData.phone }}</text>
  10. </view>
  11. <text
  12. class="address flex">{{ addressData.province + addressData.city + addressData.district }}{{ addressData.detail }}</text>
  13. </view>
  14. <text class="iconfont iconenter"></text>
  15. </view>
  16. <view class="order-content" v-if="!addressData.real_name">
  17. <view class="addAddress">
  18. <text class="iconfont iconaddition"></text>
  19. <text>添加收货地址</text>
  20. </view>
  21. </view>
  22. </navigator> -->
  23. <!-- 门店 -->
  24. <view class="yt-list tc-wrap" @click="navTo('/pages/shop/shopTab?select=1')">
  25. <view class="store-wrap flex" v-if="selctStore && selctStore.id">
  26. <view class="imgBox">
  27. <image class="logo" :src="selctStore.image" mode="aspectFit"></image>
  28. </view>
  29. <view class="padding-l-20 flex-grow-true">
  30. <view class="title clamp flex">
  31. <view class="name">
  32. {{selctStore.name}}
  33. </view>
  34. <view class="km" v-if="selctStore.range">
  35. {{selctStore.range<1?selctStore.distance+'m':selctStore.range+'km'}}
  36. </view>
  37. </view>
  38. <view class="flex addressBox margin-t-20">
  39. <image class="iconA margin-r-10" src="../../static/icon/shop.png" mode="">
  40. </image>
  41. <text class="clamp">
  42. {{selctStore.detailed_address}}
  43. </text>
  44. </view>
  45. <view class="addressBox flex">
  46. <image class="iconA margin-r-10" src="../../static/icon/shopPhone.png" mode="">
  47. <text class="clamp">
  48. {{selctStore.phone}}
  49. </text>
  50. </view>
  51. <view class="yysj">
  52. 营业时间:{{selctStore.day_time}}
  53. </view>
  54. </view>
  55. </view>
  56. <view class="store-wrap-empty" v-else>
  57. 选择门店
  58. </view>
  59. </view>
  60. <view class="yt-list">
  61. <view class="yt-list-cell b-b">
  62. <text class="cell-tit clamp">提货人</text>
  63. <input class="desc" type="text" v-model="addressData.real_name" placeholder="请填写提货人姓名" placeholder-class="placeholder" />
  64. </view>
  65. <view class="yt-list-cell b-b">
  66. <text class="cell-tit clamp">提货手机号</text>
  67. <input class="desc" type="text" v-model="addressData.phone" placeholder="请填写提货人手机号" placeholder-class="placeholder" />
  68. </view>
  69. </view>
  70. <view class="goodsList">
  71. <view class="goods-section" v-for="(ls, ind) in shopList" :key="ind">
  72. <!-- 商品列表 -->
  73. <view class="g-item">
  74. <image :src="ls.productInfo.image"></image>
  75. <view class="right">
  76. <text class="title clamp">{{ ls.productInfo.store_name }}</text>
  77. <text class="spec">{{ ls.productInfo.attrInfo ? ls.productInfo.attrInfo.suk : '默认' }}</text>
  78. <view class="price-box">
  79. <text
  80. class="price">¥{{ ls.productInfo.attrInfo ? ls.productInfo.attrInfo.price : ls.productInfo.price }}</text>
  81. <text class="number">{{ 'x ' + ls.cart_num + (ls.productInfo.unit_name || '') }}</text>
  82. <!-- <view class="number">
  83. <uni-number-box class="step" :value="lss.number" :index="indx" @eventChange="numberChange"></uni-number-box>
  84. </view> -->
  85. </view>
  86. <view class="serverSet" v-if="ls.day>0">
  87. (<text>服务费:{{ls.day_deducted}}</text>
  88. <text class="margin-l-10">服务天数:{{ls.day}}天</text>)
  89. </view>
  90. </view>
  91. </view>
  92. </view>
  93. </view>
  94. <!-- 金额明细 -->
  95. <view class="yt-list">
  96. <!-- <view class="yt-list-cell b-b">
  97. <text class="cell-tit clamp">运费</text>
  98. <text class="cell-tip disabled">{{ Postage }}</text>
  99. </view> -->
  100. <view class="yt-list-cell b-b">
  101. <text class="cell-tit clamp">备注</text>
  102. <input class="desc" type="text" v-model="desc" placeholder="请填写备注信息" placeholder-class="placeholder" />
  103. </view>
  104. </view>
  105. <view class="yt-list">
  106. <view class="yt-list-cell b-b" v-if="fx" @click="payType='weixin'">
  107. <view class="cell-tit flex">
  108. <image class="orderIcon" src="../../static/icon/orderWx.png" mode="widthFix"></image>
  109. <text class="margin-l-10">微信支付</text>
  110. </view>
  111. <image class="checked" v-if="payType=='weixin'" src="../../static/icon/addressIconXz.png"
  112. mode="widthFix"></image>
  113. <view v-else class="noChecked"></view>
  114. </view>
  115. <!-- #ifdef APP-PLUS -->
  116. <view class="yt-list-cell b-b" @click="payType='ali'">
  117. <view class="cell-tit flex">
  118. <image class="orderIcon" src="../../static/icon/orderAli.png" mode="widthFix"></image>
  119. <text class="margin-l-10">支付宝</text>
  120. </view>
  121. <image class="checked" v-if="payType=='ali'" src="../../static/icon/addressIconXz.png" mode="widthFix">
  122. </image>
  123. <view v-else class="noChecked"></view>
  124. </view>
  125. <!-- #endif -->
  126. <view class="yt-list-cell b-b" @click="payType='yue'">
  127. <view class="cell-tit flex">
  128. <image class="orderIcon" src="../../static/icon/ye.png" mode="widthFix"></image>
  129. <text class="margin-l-10">卡券({{now_money}})</text>
  130. </view>
  131. <image class="checked" v-if="payType=='yue'" src="../../static/icon/addressIconXz.png" mode="widthFix">
  132. </image>
  133. <view v-else class="noChecked"></view>
  134. </view>
  135. </view>
  136. <!-- 底部 -->
  137. <view class="footer">
  138. <view class="price-content">
  139. <text>实付款</text>
  140. <text class="price-tip">¥</text>
  141. <text class="price">{{ payPrice }}</text>
  142. </view>
  143. <text class="submit" :class="{submitNo:payLoding}" @click="payLoding?'':submit()">提交订单</text>
  144. </view>
  145. </view>
  146. </template>
  147. <script>
  148. import {
  149. mapState
  150. } from 'vuex';
  151. import {
  152. storeList,
  153. } from '@/api/product.js';
  154. import {
  155. confirm,
  156. computedOrderkey,
  157. createOrderkey,
  158. orderPay
  159. } from '@/api/order.js';
  160. import {
  161. getUserInfo
  162. } from '@/api/user.js';
  163. // #ifdef H5
  164. import weixinObj from "@/plugin/jweixin-module/index.js";
  165. // #endif
  166. export default {
  167. data() {
  168. return {
  169. shipping_type: 2,//1->快递,2->自提
  170. selctStore: {id:''},//选中的门店
  171. payType: 'ali',
  172. desc: '', //备注
  173. // 收货地址
  174. addressData: {},
  175. // 商品列表
  176. shopList: [],
  177. // 购物车id
  178. cartId: '',
  179. //购物金额详情
  180. moneyAll: {
  181. storeFreePostage: 0, //邮费优惠
  182. storePostage: 0, //邮费
  183. totalPrice: 0, //总支付金额
  184. vipPrice: 0 //vip优惠价
  185. },
  186. payPrice: 0, //总支付金额
  187. orderKey: '', //订单id
  188. payLoding: false, //判断是否支付中
  189. orderId: '', //订单id
  190. now_money: 0, //卡券
  191. onShopId: -1, //默认-1为不存在商家id
  192. };
  193. },
  194. onLoad(option) {
  195. // 保存当前商品在购物车中的id
  196. this.cartId = option.id;
  197. // 判断是否要读取商家id
  198. if (option.shopId) {
  199. this.onShopId = option.shopId;
  200. }
  201. this.loadData();
  202. this.userinfo();
  203. this.storeList()
  204. },
  205. computed: {
  206. Postage() {
  207. let money = +this.moneyAll.storePostage;
  208. if (money == 0) {
  209. return '免运费';
  210. } else {
  211. return '¥' + money;
  212. }
  213. },
  214. payAllMoney() {
  215. return +this.moneyAll.totalPrice + +this.moneyAll.vipPrice;
  216. },
  217. ...mapState('shop', ['shopDetail']),
  218. ...mapState(['fx']),
  219. ...mapState('user', ['address'])
  220. },
  221. methods: {
  222. navTo(url) {
  223. uni.navigateTo({
  224. url,
  225. fail() {
  226. uni.switchTab({
  227. url
  228. })
  229. }
  230. })
  231. },
  232. // 加载用户基础信息
  233. userinfo() {
  234. getUserInfo({}).then(({
  235. data
  236. }) => {
  237. this.now_money = data.now_money;
  238. this.addressData.real_name = data.real_name || '';
  239. this.addressData.phone = data.phone || '';
  240. });
  241. },
  242. // 计算支付金额
  243. payMoneyNub() {
  244. computedOrderkey({
  245. orderkey: this.orderKey,
  246. useIntegral: 0, //是否积分抵扣
  247. addressId: this.addressData.id //地址编号
  248. })
  249. .then(({
  250. data
  251. }) => {
  252. this.integralShow = true;
  253. // 获取支付金额
  254. this.payPrice = +data.result.pay_price;
  255. this.integralMoney = data.result.deduction_price;
  256. })
  257. .catch(e => {
  258. console.log(e);
  259. this.integralShow = false;
  260. });
  261. },
  262. // 加载基础数据
  263. loadData() {
  264. let obj = this;
  265. confirm({
  266. cartId: obj.cartId + ''
  267. }).then(({
  268. data
  269. }) => {
  270. // obj.addressData = data.addressInfo || {};
  271. // console.log(obj.addressData,'obj.addressData')
  272. obj.shopList = data.cartInfo; //商品列表
  273. obj.moneyAll = data.priceGroup; //金额数据
  274. obj.orderKey = data.orderKey; //订单key
  275. // 计算金额
  276. this.payMoneyNub();
  277. });
  278. },
  279. // 提交订单
  280. submit() {
  281. let obj = this;
  282. if(obj.shipping_type == 2) {
  283. if (!obj.addressData.real_name) {
  284. // this.$api.msg('请选择收货地址');
  285. obj.$api.msg('请输入提货人姓名')
  286. return false;
  287. }
  288. if (!obj.addressData.phone) {
  289. // this.$api.msg('请选择收货地址');
  290. obj.$api.msg('请输入提货人手机号')
  291. return false;
  292. }
  293. if(obj.selctStore.id == '') {
  294. obj.$api.msg('请选择提货门店')
  295. return false;
  296. }
  297. }
  298. // 判断是否卡券不足
  299. if (obj.payType == 'yue' && +obj.now_money < obj.payPrice) {
  300. uni.showModal({
  301. title: '提示',
  302. content: '账户卡券不足!',
  303. showCancel: false,
  304. });
  305. return;
  306. }
  307. uni.showLoading({
  308. title: '支付中',
  309. mask: true
  310. })
  311. // 支付中
  312. obj.payLoding = true;
  313. // 判断是否为未支付订单中跳转进入
  314. obj.firstCreateOrder();
  315. },
  316. // 订单金额支付
  317. orderMoneyPay() {
  318. let obj = this;
  319. orderPay({
  320. uni: obj.orderId,
  321. // #ifdef H5
  322. from: 'weixin', //来源
  323. // #endif
  324. // #ifdef MP-WEIXIN
  325. from: 'routine', //来源
  326. // #endif
  327. // #ifdef APP-PLUS
  328. from: 'app', //来源
  329. // #endif
  330. paytype: obj.payType //支付类型 weixin-微信 yue-卡券
  331. })
  332. .then(e => {
  333. // 判断是否微信小程序支付
  334. if (obj.payType == 'weixin') {
  335. // #ifdef H5 || MP
  336. let da = e.data.result.jsConfig;
  337. let data = {
  338. nonceStr: da.nonceStr,
  339. package: da.package,
  340. signType: da.signType,
  341. paySign: da.paySign,
  342. success: function(res) {
  343. obj.paySuccessTo();
  344. },
  345. fail: () => {
  346. uni.navigateTo({
  347. url: '/pages/order/order?state=0'
  348. });
  349. }
  350. };
  351. // #endif
  352. // #ifdef H5
  353. data.timestamp = da.timestamp;
  354. weixinObj.chooseWXPay(data);
  355. // #endif
  356. // #ifdef MP-WEIXIN
  357. data.timeStamp = da.timestamp;
  358. wx.requestPayment(data);
  359. // #endif
  360. // #ifdef APP
  361. console.log( e.data.result.jsConfig,'返回数值');
  362. uni.requestPayment({
  363. provider: 'wxpay',
  364. orderInfo: e.data.result.jsConfig,
  365. success(e) {
  366. obj.paySuccessTo();
  367. },
  368. fail: (e) => {
  369. console.log(e,'支付失败');
  370. uni.navigateTo({
  371. url: '/pages/order/order?state=0'
  372. });
  373. }
  374. })
  375. // #endif
  376. }
  377. // #ifdef APP
  378. if(obj.payType == 'ali'){
  379. uni.requestPayment({
  380. provider: 'alipay',
  381. orderInfo: e.data.result.jsConfig,
  382. success(e) {
  383. obj.paySuccessTo();
  384. },
  385. fail: (e) => {
  386. console.log(e,'支付失败');
  387. uni.navigateTo({
  388. url: '/pages/order/order?state=0'
  389. });
  390. }
  391. })
  392. }
  393. // #endif
  394. uni.hideLoading();
  395. obj.payLoding = false;
  396. })
  397. .catch(e => {
  398. // 支付完成
  399. uni.hideLoading();
  400. obj.payLoding = false;
  401. console.log(e);
  402. });
  403. },
  404. // 支付成功跳转
  405. paySuccessTo() {
  406. uni.hideLoading();
  407. uni.redirectTo({
  408. url: '/pages/user_home/money/paySuccess?orderid=' + this.orderId,
  409. });
  410. },
  411. // 初次订单创建
  412. firstCreateOrder() {
  413. let obj = this;
  414. // 获取下单页面数据
  415. let prepage = obj;
  416. let data = {
  417. store_id: this.selctStore.id,
  418. real_name: prepage.addressData.real_name, //联系人名称
  419. phone: prepage.addressData.phone, //联系人号码
  420. addressId: prepage.addressData.id, //支付地址id
  421. useIntegral: 0, //是否积分抵扣1为是0为否
  422. payType: obj.payType, //支付类型 weixin-微信 yue-卡券
  423. mark: prepage.desc, //备注
  424. // #ifdef H5
  425. from: 'weixin', //来源
  426. // #endif
  427. // #ifdef MP-WEIXIN
  428. from: 'routine', //来源
  429. // #endif
  430. // #ifdef APP-PLUS
  431. from: 'app', //来源
  432. // #endif
  433. shipping_type: prepage.shipping_type, //提货方式 1 快递 2自提
  434. };
  435. // 判断是否需要读取非默认商家id
  436. // if (obj.onShopId != -1) {
  437. // data.store_id = obj.onShopId;
  438. // } else {
  439. // data.store_id = obj.shopDetail.id;
  440. // }
  441. // 生成订单
  442. createOrderkey(data, obj.orderKey)
  443. .then(({
  444. data,
  445. status,
  446. msg
  447. }) => {
  448. // 判断是否支付失败
  449. if (data.status == 'ORDER_EXIST') {
  450. uni.showModal({
  451. title: '提示',
  452. content: msg,
  453. showCancel: false
  454. });
  455. uni.hideLoading();
  456. obj.payLoding = false;
  457. return;
  458. }
  459. // 保存订单号
  460. obj.orderId = data.result.orderId;
  461. // 判断是否为卡券支付
  462. if (obj.payType == 'yue') {
  463. console.log('卡券支付', status == 200 && data.status == 'SUCCESS');
  464. if (status == 200 && data.status == 'SUCCESS') {
  465. obj.paySuccessTo();
  466. } else {
  467. obj.$api.msg(msg);
  468. }
  469. } else {
  470. // 立即支付
  471. obj.orderMoneyPay();
  472. }
  473. })
  474. .catch(e => {
  475. uni.hideLoading();
  476. obj.payLoding = false;
  477. console.log(e);
  478. });
  479. }
  480. }
  481. };
  482. </script>
  483. <style lang="scss">
  484. page {
  485. background: $page-color-base;
  486. padding-bottom: 100rpx;
  487. }
  488. .address-section {
  489. border-radius: 20rpx;
  490. padding: 30rpx;
  491. margin: 0 $page-row-spacing;
  492. background: #fff;
  493. position: relative;
  494. .order-content {
  495. min-height: 100rpx;
  496. display: flex;
  497. align-items: center;
  498. .leftIcon {
  499. width: 36rpx;
  500. margin: 0 30rpx;
  501. }
  502. .addAddress {
  503. text-align: center;
  504. width: 100%;
  505. display: flex;
  506. justify-content: center;
  507. align-items: center;
  508. .iconaddition {
  509. font-size: 55rpx;
  510. line-height: 1;
  511. border-radius: 100rpx;
  512. margin-right: 20rpx;
  513. }
  514. }
  515. }
  516. .iconlocation {
  517. flex-shrink: 0;
  518. display: flex;
  519. align-items: center;
  520. justify-content: center;
  521. width: 90rpx;
  522. color: #888;
  523. font-size: 44rpx;
  524. }
  525. .cen {
  526. display: flex;
  527. flex-direction: column;
  528. flex: 1;
  529. font-size: 28rpx;
  530. color: $font-color-dark;
  531. }
  532. .name {
  533. font-size: 34rpx;
  534. margin-right: 24rpx;
  535. }
  536. .address {
  537. margin-top: 16rpx;
  538. margin-right: 20rpx;
  539. color: $font-color-light;
  540. }
  541. .icon-you {
  542. font-size: 32rpx;
  543. color: $font-color-light;
  544. margin-right: 30rpx;
  545. }
  546. .a-bg {
  547. position: absolute;
  548. left: 0;
  549. bottom: 0;
  550. display: block;
  551. width: 100%;
  552. height: 5rpx;
  553. }
  554. }
  555. .goodsList {
  556. margin: 0 $page-row-spacing;
  557. padding: 30rpx;
  558. background: #fff;
  559. border-radius: 20rpx;
  560. margin-top: 30rpx;
  561. }
  562. .goods-section {
  563. .logo {
  564. display: block;
  565. width: 50rpx;
  566. height: 50rpx;
  567. border-radius: 100px;
  568. }
  569. .name {
  570. font-size: 30rpx;
  571. color: $font-color-base;
  572. margin-left: 24rpx;
  573. }
  574. .g-item {
  575. display: flex;
  576. image {
  577. flex-shrink: 0;
  578. display: block;
  579. width: 170rpx;
  580. height: 170rpx;
  581. border-radius: 4rpx;
  582. }
  583. .right {
  584. flex: 1;
  585. padding-left: 24rpx;
  586. overflow: hidden;
  587. .serverSet {
  588. font-size: 22rpx;
  589. color: $font-color-light;
  590. }
  591. }
  592. .title {
  593. font-size: 30rpx;
  594. color: $font-color-dark;
  595. }
  596. .spec {
  597. font-size: 26rpx;
  598. color: $font-color-light;
  599. }
  600. .price-box {
  601. display: flex;
  602. align-items: center;
  603. font-size: 32rpx;
  604. padding-top: 10rpx;
  605. color: $font-color-light;
  606. .price {
  607. margin-bottom: 4rpx;
  608. }
  609. .number {
  610. font-size: 26rpx;
  611. margin-left: 20rpx;
  612. }
  613. }
  614. .step-box {
  615. position: relative;
  616. }
  617. }
  618. }
  619. .yt-list {
  620. background: #fff;
  621. margin: 0 $page-row-spacing;
  622. margin-top: 30rpx;
  623. border-radius: 20rpx;
  624. }
  625. .yt-list-cell {
  626. display: flex;
  627. align-items: center;
  628. justify-content: space-between;
  629. padding: 10rpx 30rpx 10rpx 40rpx;
  630. line-height: 70rpx;
  631. position: relative;
  632. .checked,
  633. .noChecked {
  634. width: 36rpx;
  635. height: 36rpx;
  636. }
  637. .noChecked {
  638. border: 1px solid $font-color-light;
  639. border-radius: 100rpx;
  640. }
  641. &.cell-hover {
  642. background: #fafafa;
  643. }
  644. &.b-b:after {
  645. left: 30rpx;
  646. }
  647. .cell-icon {
  648. height: 32rpx;
  649. width: 32rpx;
  650. font-size: 22rpx;
  651. color: #fff;
  652. text-align: center;
  653. line-height: 32rpx;
  654. background: #f85e52;
  655. border-radius: 4rpx;
  656. margin-right: 12rpx;
  657. &.hb {
  658. background: #ffaa0e;
  659. }
  660. &.lpk {
  661. background: #3ab54a;
  662. }
  663. }
  664. .cell-more {
  665. align-self: center;
  666. font-size: 24rpx;
  667. color: $font-color-light;
  668. margin-left: 8rpx;
  669. margin-right: -10rpx;
  670. }
  671. .cell-tit {
  672. font-size: 26rpx;
  673. color: $font-color-light;
  674. margin-right: 10rpx;
  675. .orderIcon {
  676. width: 48rpx;
  677. }
  678. }
  679. .cell-tip {
  680. font-size: 26rpx;
  681. color: $font-color-dark;
  682. &.disabled {
  683. color: $font-color-light;
  684. }
  685. &.active {
  686. color: $base-color;
  687. }
  688. &.red {
  689. color: $base-color;
  690. }
  691. }
  692. &.desc-cell {
  693. .cell-tit {
  694. max-width: 90rpx;
  695. }
  696. }
  697. .desc {
  698. text-align: right;
  699. font-size: $font-base;
  700. color: $font-color-light;
  701. }
  702. }
  703. /* 支付列表 */
  704. .pay-list {
  705. padding-left: 40rpx;
  706. margin-top: 16rpx;
  707. background: #fff;
  708. .pay-item {
  709. display: flex;
  710. align-items: center;
  711. padding-right: 20rpx;
  712. line-height: 1;
  713. height: 110rpx;
  714. position: relative;
  715. }
  716. .icon-weixinzhifu {
  717. width: 80rpx;
  718. font-size: 40rpx;
  719. color: #6bcc03;
  720. }
  721. .icon-alipay {
  722. width: 80rpx;
  723. font-size: 40rpx;
  724. color: #06b4fd;
  725. }
  726. .icon-xuanzhong2 {
  727. display: flex;
  728. align-items: center;
  729. justify-content: center;
  730. width: 60rpx;
  731. height: 60rpx;
  732. font-size: 40rpx;
  733. color: $base-color;
  734. }
  735. .tit {
  736. font-size: 32rpx;
  737. color: $font-color-dark;
  738. flex: 1;
  739. }
  740. }
  741. .footer {
  742. position: fixed;
  743. left: 0;
  744. bottom: 0;
  745. z-index: 995;
  746. display: flex;
  747. align-items: center;
  748. width: 100%;
  749. height: 90rpx;
  750. justify-content: space-between;
  751. font-size: 30rpx;
  752. background-color: #fff;
  753. z-index: 998;
  754. color: $font-color-base;
  755. box-shadow: 0 -1px 5px rgba(0, 0, 0, 0.1);
  756. .price-content {
  757. padding-left: 30rpx;
  758. }
  759. .price-tip {
  760. color: $font-color-base;
  761. margin-left: 8rpx;
  762. }
  763. .price {
  764. font-size: 36rpx;
  765. color: $font-color-base;
  766. }
  767. .submit {
  768. display: flex;
  769. align-items: center;
  770. justify-content: center;
  771. width: 280rpx;
  772. height: 100%;
  773. color: #fff;
  774. font-size: 32rpx;
  775. background-color: $base-color;
  776. &.submitNo {
  777. background-color: $font-color-disabled;
  778. }
  779. }
  780. }
  781. .store-wrap {
  782. background-color: #FFFFFF;
  783. margin-bottom: 30rpx;
  784. padding: 30rpx;
  785. border-radius: 20rpx;
  786. .list,.km{
  787. color: $font-color-light;
  788. font-size: $font-sm;
  789. }
  790. .logo {
  791. height: 200rpx;
  792. width: 200rpx;
  793. border-radius: 20rpx;
  794. }
  795. .title {
  796. font-size: 36rpx;
  797. color: $font-color-dark;
  798. }
  799. .iconR {
  800. height: 24rpx;
  801. }
  802. .iconA {
  803. width: 24rpx;
  804. height: 24rpx;
  805. }
  806. .addressBox {
  807. font-size: 24rpx;
  808. color: $font-color-light;
  809. justify-content: flex-start;
  810. padding: 10rpx 0;
  811. }
  812. .yysj {
  813. display: inline-block;
  814. // width: 239rpx;
  815. padding: 0 10rpx;
  816. height: 32rpx;
  817. background: #ddf8f1;
  818. border-radius: 16rpx 16rpx 16rpx 0rpx;
  819. font-size: 20rpx;
  820. font-weight: bold;
  821. color: #5FCCA7;
  822. text-align: center;
  823. line-height: 32rpx;
  824. margin-top: 10rpx;
  825. }
  826. }
  827. .store-wrap-empty {
  828. text-align: center;
  829. height: 200rpx;
  830. line-height: 200rpx;
  831. }
  832. </style>