detail.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870
  1. <template>
  2. <view v-if="!isLoading" class="container">
  3. <view class="header">
  4. <!-- 订单状态 -->
  5. <view class="order-status">
  6. <view class="status-icon">
  7. <!-- 进行中的订单 -->
  8. <block v-if="order.order_status == OrderStatusEnum.NORMAL.value">
  9. <!-- 待支付 -->
  10. <block v-if="order.pay_status == PayStatusEnum.PENDING.value">
  11. <image class="image" src="/static/order/status/wait_pay.png" mode="aspectFit"></image>
  12. </block>
  13. <!-- 待发货 -->
  14. <block v-else-if="order.delivery_status == DeliveryStatusEnum.NOT_DELIVERED.value">
  15. <image class="image" src="/static/order/status/wait_deliver.png" mode="aspectFit"></image>
  16. </block>
  17. <!-- 待收货 -->
  18. <block v-else-if="order.receipt_status == ReceiptStatusEnum.NOT_RECEIVED.value">
  19. <image class="image" src="/static/order/status/wait_receipt.png" mode="aspectFit"></image>
  20. </block>
  21. </block>
  22. <!-- 已完成 -->
  23. <block v-if="order.order_status == OrderStatusEnum.COMPLETED.value">
  24. <image class="image" src="/static/order/status/received.png" mode="aspectFit"></image>
  25. </block>
  26. <!-- 已取消/待取消 -->
  27. <block
  28. v-if="order.order_status == OrderStatusEnum.CANCELLED.value || order.order_status == OrderStatusEnum.APPLY_CANCEL.value">
  29. <image class="image" src="/static/order/status/close.png" mode="aspectFit"></image>
  30. </block>
  31. </view>
  32. <view class="status-text">
  33. <text>{{ order.state_text }}</text>
  34. </view>
  35. </view>
  36. <!-- 下一步操作 -->
  37. <view class="next-action" v-if="order.order_status == OrderStatusEnum.NORMAL.value">
  38. <view v-if="order.pay_status == PayStatusEnum.PENDING.value" class="action-btn" @click="onPay()">去支付</view>
  39. <view
  40. v-if="order.delivery_status == DeliveryStatusEnum.DELIVERED.value && order.receipt_status == ReceiptStatusEnum.NOT_RECEIVED.value"
  41. class="action-btn" @click="onReceipt()">确认收货</view>
  42. </view>
  43. </view>
  44. <!-- 快递配送:配送地址 -->
  45. <view class="delivery-address i-card">
  46. <view class="link-man">
  47. <text class="name">{{ order.address.name }}</text>
  48. <text class="phone">{{ order.address.phone }}</text>
  49. </view>
  50. <view class="address">
  51. <text class="region" v-for="(region, idx) in order.address.region" :key="idx">{{ region }}</text>
  52. <text class="detail">{{ order.address.detail }}</text>
  53. </view>
  54. </view>
  55. <!-- 物流信息 -->
  56. <view
  57. v-if="order.delivery_type == DeliveryTypeEnum.EXPRESS.value && order.delivery_status == DeliveryStatusEnum.DELIVERED.value"
  58. class="express i-card" @click="handleTargetExpress()">
  59. <view class="main">
  60. <view class="info-item">
  61. <view class="item-lable">物流公司</view>
  62. <view class="item-content">
  63. <text>{{ order.express.express_name }}</text>
  64. </view>
  65. </view>
  66. <view class="info-item">
  67. <view class="item-lable">物流单号</view>
  68. <view class="item-content">
  69. <text>{{ order.express_no }}</text>
  70. <view class="act-copy" @click.stop="handleCopy(order.express_no)">
  71. <text>复制</text>
  72. </view>
  73. </view>
  74. </view>
  75. </view>
  76. <view class="right-arrow">
  77. <text class="iconfont icon-arrow-right"></text>
  78. </view>
  79. </view>
  80. <!-- 商品列表 -->
  81. <view class="goods-list i-card">
  82. <view class="goods-item" v-for="(goods, idx) in order.goods" :key="idx">
  83. <view class="goods-main" @click="handleTargetGoods(goods.goods_id)">
  84. <!-- 商品图片 -->
  85. <view class="goods-image">
  86. <image class="image" :src="goods.goods_image" mode="scaleToFill"></image>
  87. </view>
  88. <!-- 商品信息 -->
  89. <view class="goods-content">
  90. <view class="goods-title twoline-hide"><text>{{ goods.goods_name }}</text></view>
  91. <view class="goods-props clearfix">
  92. <view class="goods-props-item" v-for="(props, idx) in goods.goods_props" :key="idx">
  93. <text>{{ props.value.name }}</text>
  94. </view>
  95. </view>
  96. </view>
  97. <!-- 交易信息 -->
  98. <view class="goods-trade">
  99. <view class="goods-price">
  100. <text class="unit">¥</text>
  101. <text class="value">{{ goods.goods_price }}</text>
  102. </view>
  103. <view class="goods-num">
  104. <text>×{{ goods.total_num }}</text>
  105. </view>
  106. </view>
  107. </view>
  108. <!-- 商品售后 -->
  109. <view class="goods-refund">
  110. <text v-if="goods.refund" class="stata-text">已申请售后</text>
  111. <view v-else-if="order.isAllowRefund" class="action-btn"
  112. @click.stop="handleApplyRefund(goods.order_goods_id)">申请售后</view>
  113. </view>
  114. </view>
  115. </view>
  116. <!-- 订单信息 -->
  117. <view class="order-info i-card">
  118. <view class="info-item">
  119. <view class="item-lable">订单编号</view>
  120. <view class="item-content">
  121. <text>{{ order.order_no }}</text>
  122. <view class="act-copy" @click="handleCopy(order.order_no)">
  123. <text>复制</text>
  124. </view>
  125. </view>
  126. </view>
  127. <view class="info-item">
  128. <view class="item-lable">下单时间</view>
  129. <view class="item-content">
  130. <text>{{ order.create_time }}</text>
  131. </view>
  132. </view>
  133. <view class="info-item">
  134. <view class="item-lable">买家留言</view>
  135. <view class="item-content">
  136. <text>{{ order.buyer_remark ? order.buyer_remark : '--' }}</text>
  137. </view>
  138. </view>
  139. </view>
  140. <!-- 结算信息 -->
  141. <view class="trade-info i-card">
  142. <view class="info-item">
  143. <view class="item-lable">订单金额</view>
  144. <view class="item-content">
  145. <text>¥{{ order.total_price }}</text>
  146. </view>
  147. </view>
  148. <view v-if="order.coupon_money > 0" class="info-item">
  149. <view class="item-lable">优惠券抵扣</view>
  150. <view class="item-content">
  151. <text>-¥{{ order.coupon_money }}</text>
  152. </view>
  153. </view>
  154. <view v-if="order.points_money > 0" class="info-item">
  155. <view class="item-lable">{{ setting.points_name }}抵扣</view>
  156. <view class="item-content">
  157. <text>-¥{{ order.points_money }}</text>
  158. </view>
  159. </view>
  160. <view class="info-item">
  161. <view class="item-lable">运费</view>
  162. <view class="item-content">
  163. <text>+¥{{ order.express_price }}</text>
  164. </view>
  165. </view>
  166. <view v-if="order.update_price.value != '0.00'" class="info-item">
  167. <view class="item-lable">后台改价</view>
  168. <view class="item-content">
  169. <text>{{ order.update_price.symbol }}</text>
  170. <text>¥{{ order.update_price.value }}</text>
  171. </view>
  172. </view>
  173. <view class="divider"></view>
  174. <view class="trade-total">
  175. <text class="lable">实付款</text>
  176. <view class="goods-price">
  177. <text class="unit">¥</text>
  178. <text class="value">{{ order.pay_price }}</text>
  179. </view>
  180. </view>
  181. </view>
  182. <!-- 底部操作按钮 -->
  183. <view v-if="order.order_status != OrderStatusEnum.CANCELLED.value" class="footer-fixed">
  184. <view class="btn-wrapper">
  185. <!-- 未支付取消订单 -->
  186. <block v-if="order.pay_status == PayStatusEnum.PENDING.value">
  187. <view class="btn-item" @click="onCancel(order.order_id)">取消</view>
  188. </block>
  189. <!-- 已支付进行中的订单 -->
  190. <block v-if="order.order_status != OrderStatusEnum.APPLY_CANCEL.value">
  191. <block
  192. v-if="order.pay_status == PayStatusEnum.SUCCESS.value && order.delivery_status == DeliveryStatusEnum.NOT_DELIVERED.value">
  193. <view class="btn-item" @click="onCancel(order.order_id)">申请取消</view>
  194. </block>
  195. </block>
  196. <!-- 已申请取消 -->
  197. <view v-else class="f-28 col-8">取消申请中</view>
  198. <!-- 未支付的订单 -->
  199. <block v-if="order.pay_status == PayStatusEnum.PENDING.value">
  200. <view class="btn-item active" @click="onPay()">去支付</view>
  201. </block>
  202. <!-- 确认收货 -->
  203. <block
  204. v-if="order.delivery_status == DeliveryStatusEnum.DELIVERED.value && order.receipt_status == ReceiptStatusEnum.NOT_RECEIVED.value">
  205. <view class="btn-item active" @click="onReceipt(order.order_id)">确认收货</view>
  206. </block>
  207. <!-- 订单评价 -->
  208. <block v-if="order.order_status == OrderStatusEnum.COMPLETED.value && order.is_comment == 0">
  209. <view class="btn-item" @click="handleTargetComment(order.order_id)">评价</view>
  210. </block>
  211. </view>
  212. </view>
  213. <!-- 支付方式弹窗 -->
  214. <u-popup v-model="showPayPopup" mode="bottom" border-radius="26" :closeable="true">
  215. <view class="pay-popup">
  216. <view class="title">请选择支付方式</view>
  217. <view class="pop-content">
  218. <!-- 微信支付 -->
  219. <!-- #ifdef MP-WEIXIN -->
  220. <view class="pay-item dis-flex flex-x-between" @click="onSelectPayType(PayTypeEnum.WECHAT.value)">
  221. <view class="item-left dis-flex flex-y-center">
  222. <view class="item-left_icon wechat">
  223. <text class="iconfont icon-wxpay"></text>
  224. </view>
  225. <view class="item-left_text">
  226. <text>{{ PayTypeEnum.WECHAT.name }}</text>
  227. </view>
  228. </view>
  229. </view>
  230. <!-- #endif -->
  231. <!-- 余额支付 -->
  232. <view class="pay-item dis-flex flex-x-between" @click="onSelectPayType(PayTypeEnum.BALANCE.value)">
  233. <view class="item-left dis-flex flex-y-center">
  234. <view class="item-left_icon balance">
  235. <text class="iconfont icon-qiandai"></text>
  236. </view>
  237. <view class="item-left_text">
  238. <text>{{ PayTypeEnum.BALANCE.name }}</text>
  239. </view>
  240. </view>
  241. </view>
  242. </view>
  243. </view>
  244. </u-popup>
  245. </view>
  246. </template>
  247. <script>
  248. import {
  249. DeliveryStatusEnum,
  250. DeliveryTypeEnum,
  251. OrderStatusEnum,
  252. PayStatusEnum,
  253. PayTypeEnum,
  254. ReceiptStatusEnum
  255. } from '@/common/enum/order'
  256. import * as OrderApi from '@/api/order'
  257. import { wxPayment } from '@/utils/app'
  258. export default {
  259. data() {
  260. return {
  261. // 枚举类
  262. DeliveryStatusEnum,
  263. DeliveryTypeEnum,
  264. OrderStatusEnum,
  265. PayStatusEnum,
  266. PayTypeEnum,
  267. ReceiptStatusEnum,
  268. // 当前订单ID
  269. orderId: null,
  270. // 加载中
  271. isLoading: true,
  272. // 当前订单详情
  273. order: {},
  274. // 当前设置
  275. setting: {},
  276. // 支付方式弹窗
  277. showPayPopup: false
  278. }
  279. },
  280. /**
  281. * 生命周期函数--监听页面加载
  282. */
  283. onLoad({ orderId }) {
  284. // 当前订单ID
  285. this.orderId = orderId
  286. },
  287. /**
  288. * 生命周期函数--监听页面显示
  289. */
  290. onShow() {
  291. // 获取当前订单信息
  292. this.getOrderDetail()
  293. },
  294. methods: {
  295. // 获取当前订单信息
  296. getOrderDetail() {
  297. const app = this
  298. app.isLoading = true
  299. OrderApi.detail(app.orderId)
  300. .then(result => {
  301. app.order = result.data.order
  302. app.setting = result.data.setting
  303. app.isLoading = false
  304. })
  305. },
  306. // 复制指定内容
  307. handleCopy(value) {
  308. const app = this
  309. uni.setClipboardData({
  310. data: value,
  311. success() {
  312. app.$toast('复制成功')
  313. }
  314. })
  315. },
  316. // 跳转到物流跟踪页面
  317. handleTargetExpress() {
  318. this.$navTo('pages/order/express/index', { orderId: this.orderId })
  319. },
  320. // 跳转到商品详情页面
  321. handleTargetGoods(goodsId) {
  322. this.$navTo('pages/goods/detail', { goodsId })
  323. },
  324. // 跳转到申请售后页面
  325. handleApplyRefund(orderGoodsId) {
  326. this.$navTo('pages/refund/apply', { orderGoodsId })
  327. },
  328. // 取消订单
  329. onCancel(orderId) {
  330. const app = this
  331. uni.showModal({
  332. title: '友情提示',
  333. content: '确认要取消该订单吗?',
  334. success(o) {
  335. if (o.confirm) {
  336. OrderApi.cancel(orderId)
  337. .then(result => {
  338. // 显示成功信息
  339. app.$success(result.message)
  340. // 刷新当前订单数据
  341. app.getOrderDetail()
  342. })
  343. }
  344. }
  345. });
  346. },
  347. // 确认收货
  348. onReceipt(orderId) {
  349. const app = this
  350. uni.showModal({
  351. title: '友情提示',
  352. content: '确认收到商品了吗?',
  353. success(o) {
  354. if (o.confirm) {
  355. OrderApi.receipt(orderId)
  356. .then(result => {
  357. // 显示成功信息
  358. app.$success(result.message)
  359. // 刷新当前订单数据
  360. app.getOrderDetail()
  361. })
  362. }
  363. }
  364. });
  365. },
  366. // 点击去支付
  367. onPay() {
  368. // 显示支付方式弹窗
  369. this.showPayPopup = true
  370. },
  371. // 选择支付方式
  372. onSelectPayType(payType) {
  373. const app = this
  374. // 隐藏支付方式弹窗
  375. this.showPayPopup = false
  376. // 发起支付请求
  377. OrderApi.pay(app.orderId, payType)
  378. .then(result => app.onSubmitCallback(result))
  379. .catch(err => err)
  380. },
  381. // 订单提交成功后回调
  382. onSubmitCallback(result) {
  383. const app = this
  384. // 发起微信支付
  385. if (result.data.pay_type == PayTypeEnum.WECHAT.value) {
  386. wxPayment(result.data.payment)
  387. .then(() => {
  388. app.$success('支付成功')
  389. setTimeout(() => {
  390. app.getOrderDetail()
  391. }, 1500)
  392. })
  393. .catch(err => {
  394. app.$error('订单未支付')
  395. })
  396. .finally(() => {
  397. app.disabled = false
  398. })
  399. }
  400. // 余额支付
  401. if (result.data.pay_type == PayTypeEnum.BALANCE.value) {
  402. app.$success('支付成功')
  403. app.disabled = false
  404. setTimeout(() => {
  405. // 刷新当前订单数据
  406. app.getOrderDetail()
  407. }, 1500)
  408. }
  409. },
  410. // 跳转到订单评价页
  411. handleTargetComment(orderId) {
  412. this.$navTo('pages/order/comment/index', { orderId })
  413. },
  414. },
  415. }
  416. </script>
  417. <style>
  418. page {
  419. background: #f4f4f4;
  420. }
  421. </style>
  422. <style lang="scss" scoped>
  423. .container {
  424. padding-bottom: constant(env(safe-area-inset-bottom) + 106rpx + 6rpx);
  425. padding-bottom: calc(env(safe-area-inset-bottom) + 106rpx + 6rpx);
  426. }
  427. // 页面顶部
  428. .header {
  429. display: flex;
  430. justify-content: space-between;
  431. background-color: #e8c269;
  432. height: 280rpx;
  433. padding: 56rpx 30rpx 0 30rpx;
  434. .order-status {
  435. display: flex;
  436. align-items: center;
  437. height: 128rpx;
  438. .status-icon {
  439. width: 128rpx;
  440. height: 128rpx;
  441. .image {
  442. display: block;
  443. width: 100%;
  444. height: 100%;
  445. }
  446. }
  447. .status-text {
  448. padding-left: 20rpx;
  449. color: #fff;
  450. font-size: 38rpx;
  451. font-weight: bold;
  452. }
  453. }
  454. .next-action {
  455. display: flex;
  456. align-items: center;
  457. height: 128rpx;
  458. .action-btn {
  459. min-width: 152rpx;
  460. height: 56rpx;
  461. padding: 0 30rpx;
  462. line-height: 56rpx;
  463. background-color: #fff;
  464. text-align: center;
  465. border-radius: 28rpx;
  466. border-color: rgb(102, 102, 102);
  467. cursor: pointer;
  468. user-select: none;
  469. color: #c7a157;
  470. }
  471. }
  472. }
  473. // 通栏卡片
  474. .i-card {
  475. background: #fff;
  476. padding: 24rpx 24rpx;
  477. width: 94%;
  478. box-shadow: 0 1rpx 5rpx 0px rgba(0, 0, 0, 0.05);
  479. margin: 0 auto 20rpx auto;
  480. border-radius: 20rpx;
  481. }
  482. // 收货地址
  483. .delivery-address {
  484. margin-top: -50rpx;
  485. .link-man {
  486. line-height: 46rpx;
  487. color: #333;
  488. .name {
  489. margin-right: 10rpx;
  490. }
  491. }
  492. .address {
  493. margin-top: 12rpx;
  494. color: #999;
  495. font-size: 24rpx;
  496. .detail {
  497. margin-left: 6rpx;
  498. }
  499. }
  500. }
  501. // 物流公司
  502. .express {
  503. display: flex;
  504. align-items: center;
  505. .main {
  506. flex: 1;
  507. }
  508. .info-item {
  509. display: flex;
  510. margin-bottom: 24rpx;
  511. &:last-child {
  512. margin-bottom: 0;
  513. }
  514. .item-lable {
  515. display: flex;
  516. align-items: center;
  517. font-size: 24rpx;
  518. color: #999;
  519. margin-right: 30rpx;
  520. }
  521. .item-content {
  522. flex: 1;
  523. display: flex;
  524. align-items: center;
  525. font-size: 26rpx;
  526. color: #333;
  527. .act-copy {
  528. margin-left: 20rpx;
  529. padding: 2rpx 20rpx;
  530. font-size: 22rpx;
  531. color: #666;
  532. border: 1rpx solid #c1c1c1;
  533. border-radius: 16rpx;
  534. }
  535. }
  536. }
  537. // 右侧箭头
  538. .right-arrow {
  539. margin-left: 16rpx;
  540. // color: #777;
  541. font-size: 26rpx;
  542. }
  543. }
  544. // 商品列表
  545. .goods-list {
  546. // 商品项
  547. .goods-item {
  548. margin-bottom: 40rpx;
  549. &:last-child {
  550. margin-bottom: 0;
  551. }
  552. // 商品信息
  553. .goods-main {
  554. display: flex;
  555. }
  556. // 商品图片
  557. .goods-image {
  558. width: 180rpx;
  559. height: 180rpx;
  560. .image {
  561. display: block;
  562. width: 100%;
  563. height: 100%;
  564. border-radius: 8rpx;
  565. }
  566. }
  567. // 商品内容
  568. .goods-content {
  569. flex: 1;
  570. padding-left: 16rpx;
  571. padding-top: 16rpx;
  572. .goods-title {
  573. font-size: 26rpx;
  574. max-height: 76rpx;
  575. }
  576. .goods-props {
  577. margin-top: 14rpx;
  578. height: 40rpx;
  579. color: #ababab;
  580. font-size: 24rpx;
  581. overflow: hidden;
  582. .goods-props-item {
  583. display: inline-block;
  584. margin-right: 14rpx;
  585. padding: 4rpx 16rpx;
  586. border-radius: 12rpx;
  587. background-color: #F5F5F5;
  588. width: auto;
  589. }
  590. }
  591. }
  592. // 交易信息
  593. .goods-trade {
  594. padding-top: 16rpx;
  595. width: 150rpx;
  596. text-align: right;
  597. color: $uni-text-color-grey;
  598. font-size: 26rpx;
  599. .goods-price {
  600. vertical-align: bottom;
  601. margin-bottom: 16rpx;
  602. .unit {
  603. margin-right: -2rpx;
  604. font-size: 24rpx;
  605. }
  606. }
  607. }
  608. // 商品售后
  609. .goods-refund {
  610. display: flex;
  611. justify-content: flex-end;
  612. .stata-text {
  613. font-size: 24rpx;
  614. color: #999;
  615. }
  616. .action-btn {
  617. border-radius: 28rpx;
  618. padding: 8rpx 26rpx;
  619. font-size: 24rpx;
  620. color: #383838;
  621. border: 1rpx solid #a8a8a8;
  622. }
  623. }
  624. }
  625. }
  626. // 订单信息
  627. .order-info {
  628. .info-item {
  629. display: flex;
  630. margin-bottom: 24rpx;
  631. &:last-child {
  632. margin-bottom: 0;
  633. }
  634. .item-lable {
  635. display: flex;
  636. align-items: center;
  637. font-size: 24rpx;
  638. color: #999;
  639. margin-right: 30rpx;
  640. }
  641. .item-content {
  642. flex: 1;
  643. display: flex;
  644. align-items: center;
  645. font-size: 26rpx;
  646. color: #333;
  647. .act-copy {
  648. margin-left: 20rpx;
  649. padding: 2rpx 20rpx;
  650. font-size: 22rpx;
  651. color: #666;
  652. border: 1rpx solid #c1c1c1;
  653. border-radius: 16rpx;
  654. }
  655. }
  656. }
  657. }
  658. // 交易信息
  659. .trade-info {
  660. .info-item {
  661. display: flex;
  662. margin-bottom: 24rpx;
  663. .item-lable {
  664. font-size: 24rpx;
  665. color: #999;
  666. margin-right: 24rpx;
  667. }
  668. .item-content {
  669. flex: 1;
  670. font-size: 26rpx;
  671. color: #333;
  672. text-align: right;
  673. }
  674. }
  675. .divider {
  676. height: 1rpx;
  677. background: #f1f1f1;
  678. margin-bottom: 24rpx;
  679. }
  680. .trade-total {
  681. display: flex;
  682. justify-content: flex-end;
  683. .goods-price {
  684. margin-left: 12rpx;
  685. vertical-align: bottom;
  686. color: $uni-text-color-active;
  687. .unit {
  688. margin-right: -2rpx;
  689. font-size: 24rpx;
  690. }
  691. }
  692. }
  693. }
  694. /* 底部操作栏 */
  695. .footer-fixed {
  696. position: fixed;
  697. bottom: var(--window-bottom);
  698. left: 0;
  699. right: 0;
  700. z-index: 11;
  701. box-shadow: 0 -4rpx 40rpx 0 rgba(151, 151, 151, 0.24);
  702. background: #fff;
  703. // 设置ios刘海屏底部横线安全区域
  704. padding-bottom: constant(safe-area-inset-bottom);
  705. padding-bottom: env(safe-area-inset-bottom);
  706. .btn-wrapper {
  707. height: 106rpx;
  708. display: flex;
  709. align-items: center;
  710. justify-content: flex-end;
  711. padding: 0 30rpx;
  712. }
  713. .btn-item {
  714. min-width: 164rpx;
  715. border-radius: 28rpx;
  716. padding: 10rpx 24rpx;
  717. font-size: 28rpx;
  718. color: #383838;
  719. text-align: center;
  720. border: 1rpx solid #a8a8a8;
  721. margin-left: 24rpx;
  722. &.active {
  723. color: #fff;
  724. border: none;
  725. background: linear-gradient(to right, #f9211c, #ff6335);
  726. }
  727. }
  728. }
  729. // 弹出层-支付方式
  730. .pay-popup {
  731. padding: 24rpx;
  732. .title {
  733. font-size: 30rpx;
  734. margin-bottom: 50rpx;
  735. font-weight: bold;
  736. text-align: center;
  737. }
  738. .pop-content {
  739. min-height: 260rpx;
  740. padding: 0 10rpx;
  741. .pay-item {
  742. padding: 20rpx 35rpx;
  743. font-size: 28rpx;
  744. border-bottom: 1rpx solid #f1f1f1;
  745. &:last-child {
  746. border-bottom: none;
  747. }
  748. .item-left_icon {
  749. margin-right: 20rpx;
  750. font-size: 32rpx;
  751. &.wechat {
  752. color: #00c800;
  753. }
  754. &.balance {
  755. color: #ff9700;
  756. }
  757. }
  758. }
  759. }
  760. }
  761. //
  762. </style>