storeOrder.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759
  1. <template>
  2. <view>
  3. <view class="top-fixed">
  4. <!-- tab切换 -->
  5. <view class="pub-tab-box">
  6. <view class="tab-inner">
  7. <view
  8. v-for="(item,index) in orderStatus"
  9. :key="index"
  10. :class="status ==item.value?'item active':'item'"
  11. @click="orderStatusChange(item)">
  12. <view class="text">
  13. {{ item.name }}
  14. <image v-show="status ==item.value" class="tab-bg" src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/tab_bg.png" mode=""></image>
  15. </view>
  16. </view>
  17. </view>
  18. </view>
  19. <view class="search-cont">
  20. <view class="inner">
  21. <image class="icon-search" src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/search.png" mode=""></image>
  22. <input type="text" value="" placeholder="输入订单号" confirm-type="搜索" @confirm="goSearch" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" />
  23. </view>
  24. </view>
  25. </view>
  26. <view class="top-seat"></view>
  27. <!-- 订单列表 -->
  28. <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
  29. <view class="order-list">
  30. <view v-for="(item,index) in dataList" :key="index" class="item" >
  31. <!-- 订单号,状态 -->
  32. <view class="ordersn-box" @click="showDetail(item)">
  33. <view class="num">订单号:{{item.orderCode}}</view>
  34. <view class="status-box">
  35. <!-- <view class="recom-box">推荐订单</view> -->
  36. <text class="text success">
  37. {{utils.getDictLabelName("storeOrderStatus",item.status)||''}}
  38. </text>
  39. </view>
  40. </view>
  41. <!-- 产品列表 -->
  42. <!-- 商城 -->
  43. <view class="drug-list" v-if="item.orderType!==2">
  44. <view @click="showDetail(item)" v-if="item.isPackage!=1" v-for="(subItem,subIndex) in item.items" :key="subIndex" class="drug-item" >
  45. <view class="img-box">
  46. <image :src="JSON.parse(subItem.jsonInfo).image" mode="aspectFill"></image>
  47. </view>
  48. <view class="drug-info" >
  49. <view>
  50. <view class="name-box ellipsis2">
  51. <view v-if="subItem.isPrescribe==1" class="tag">处方药</view>{{JSON.parse(subItem.jsonInfo).productName}}
  52. </view>
  53. <view class="spec ellipsis2">{{JSON.parse(subItem.jsonInfo).sku}}</view>
  54. </view>
  55. <view class="num-box">
  56. <view class="price">
  57. <text class="unit">¥</text>
  58. <text class="num">{{JSON.parse(subItem.jsonInfo).price.toFixed(2)}}</text>
  59. </view>
  60. <view class="amount">x{{JSON.parse(subItem.jsonInfo).num}}</view>
  61. </view>
  62. </view>
  63. </view>
  64. <view v-if="item.isPackage==1&&item.packageJson!=null" class="drug-item" @click="showDetail(item)">
  65. <view class="img-box">
  66. <image :src="JSON.parse(item.packageJson).imgUrl" mode="aspectFill"></image>
  67. </view>
  68. <view class="drug-info" >
  69. <view>
  70. <view class="name-box ellipsis2">
  71. <view class="tag">套餐</view>{{JSON.parse(item.packageJson).title}}
  72. </view>
  73. <view class="spec ellipsis2">{{JSON.parse(item.packageJson).descs}}</view>
  74. </view>
  75. <!-- <view class="num-box">
  76. <view class="price">
  77. <text class="unit">¥</text>
  78. <text class="num">{{JSON.parse(item.packageJson).payMoney.toFixed(2)}}</text>
  79. </view>
  80. <view class="amount"></view>
  81. </view> -->
  82. </view>
  83. </view>
  84. <!-- 实付金额、按钮 -->
  85. <view class="bottom-box">
  86. <view class="amount-paid">
  87. <text class="label">订单金额:</text>
  88. <view class="price-box">
  89. <view class="unit">¥</view>
  90. <view class="num" >{{item.payPrice.toFixed(2)}}</view>
  91. </view>
  92. </view>
  93. <view class="btn-box">
  94. <view v-if="item.status == 0" class="btn cancel" @click="cancel(item)">取消订单</view>
  95. <view v-if="item.status == 0" class="btn pay" @click="pay(item)">支付</view>
  96. <view v-if="item.isAfterSales==1" class="btn cancel" @click="refund(item)">申请售后</view>
  97. <view v-if="item.status >=2 &&item.deliveryId!=null" class="btn pay" @click.stop="showDelivery(item)">查看物流</view>
  98. <view v-if="item.status == -3" class="btn cancel" @click="deleteOrder(item)">删除订单</view>
  99. <!-- <view v-if="item.status==4" class="btn pay">再次购买</view> -->
  100. </view>
  101. </view>
  102. </view>
  103. <!-- 直播 -->
  104. <view class="drug-list" v-if="item.orderType==2">
  105. <view @click="showDetail(item)" v-if="item.isPackage!=1" class="drug-item" >
  106. <view class="img-box">
  107. <image :src="JSON.parse(item.itemJson).image" mode="aspectFill"></image>
  108. </view>
  109. <view class="drug-info" >
  110. <view>
  111. <view class="name-box ellipsis2">
  112. <view v-if="item.isPrescribe==1" class="tag">处方药</view>{{JSON.parse(item.itemJson).productName}}
  113. </view>
  114. <view class="spec ellipsis2">{{JSON.parse(item.itemJson).sku}}</view>
  115. </view>
  116. <view class="num-box">
  117. <view class="price">
  118. <text class="unit">¥</text>
  119. <text class="num">{{JSON.parse(item.itemJson).price.toFixed(2)}}</text>
  120. </view>
  121. <view class="amount">x{{item.totalNum}}</view>
  122. </view>
  123. </view>
  124. </view>
  125. <view v-if="item.isPackage==1&&item.packageJson!=null" class="drug-item" @click="showDetail(item)">
  126. <view class="img-box">
  127. <image :src="JSON.parse(item.packageJson).imgUrl" mode="aspectFill"></image>
  128. </view>
  129. <view class="drug-info" >
  130. <view>
  131. <view class="name-box ellipsis2">
  132. <view class="tag">套餐</view>{{JSON.parse(item.packageJson).title}}
  133. </view>
  134. <view class="spec ellipsis2">{{JSON.parse(item.packageJson).descs}}</view>
  135. </view>
  136. <!-- <view class="num-box">
  137. <view class="price">
  138. <text class="unit">¥</text>
  139. <text class="num">{{JSON.parse(item.packageJson).payMoney.toFixed(2)}}</text>
  140. </view>
  141. <view class="amount"></view>
  142. </view> -->
  143. </view>
  144. </view>
  145. <!-- 实付金额、按钮 -->
  146. <view class="bottom-box">
  147. <view class="amount-paid">
  148. <text class="label">订单金额:</text>
  149. <view class="price-box">
  150. <view class="unit">¥</view>
  151. <view class="num" >{{item.payPrice.toFixed(2)}}</view>
  152. </view>
  153. </view>
  154. <view class="btn-box">
  155. <view v-if="item.status == 0" class="btn cancel" @click="cancel(item)">取消订单</view>
  156. <view v-if="item.status == 0" class="btn pay" @click="pay(item)">支付</view>
  157. <view v-if="item.isAfterSales==1" class="btn cancel" @click="refund(item)">申请售后</view>
  158. <view v-if="item.status >=2 &&item.deliveryId!=null" class="btn pay" @click.stop="showDelivery(item)">查看物流</view>
  159. <view v-if="item.status == -3" class="btn cancel" @click="deleteOrder(item)">删除订单</view>
  160. <!-- <view v-if="item.status==4" class="btn pay">再次购买</view> -->
  161. </view>
  162. </view>
  163. </view>
  164. </view>
  165. </view>
  166. </mescroll-body>
  167. </view>
  168. </template>
  169. <script>
  170. import {getMyStoreOrderList,cancelOrder,canceliveOrder, deleteOrder as deleteOrderApi, cancelLiveOrder} from '@/api/storeOrder'
  171. import {getDicts} from '@/api/index'
  172. import {checkPurchaseLimit} from '@/api/product'
  173. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  174. export default {
  175. mixins: [MescrollMixin],
  176. data() {
  177. return {
  178. searchKey:"",
  179. status:0,
  180. orderStatus: [
  181. {name:"全部",value:""},
  182. {name:"待付款",value:"0"},
  183. {name:"待发货",value:"1"},
  184. {name:"待收货",value:"2"},
  185. {name:"已完成",value:"3"}
  186. ],
  187. mescroll:null,
  188. // 上拉加载的配置
  189. upOption: {
  190. onScroll:true,
  191. use: true, // 是否启用上拉加载; 默认true
  192. page: {
  193. num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
  194. size: 10 // 每页数据的数量,默认10
  195. },
  196. noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
  197. empty: {
  198. icon:'https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/no_data.png',
  199. tip: '暂无数据'
  200. }
  201. },
  202. // 列表数据
  203. dataList: [],
  204. };
  205. },
  206. onLoad(option) {
  207. this.status = option.status
  208. this.getDicts();
  209. var that=this;
  210. uni.$on('refreshOrder', () => {
  211. that.mescroll.resetUpScroll()
  212. });
  213. },
  214. methods: {
  215. goSearch(e) {
  216. this.searchKey=e.detail.value;
  217. this.mescroll.resetUpScroll()
  218. },
  219. getDicts:function(){
  220. getDicts().then(
  221. res => {
  222. if(res.code==200){
  223. uni.setStorageSync('dicts',JSON.stringify(res));
  224. }else{
  225. }
  226. // this.loadding=false;
  227. // this.navigatHandler();
  228. },
  229. rej => {}
  230. );
  231. },
  232. refund(item) {
  233. if(item.orderType==2){
  234. uni.navigateTo({
  235. url: '/pages_shopping/live/refundOrderProduct?orderId=' + item.orderId
  236. })
  237. }else{
  238. uni.navigateTo({
  239. url: './refundOrderProduct?orderId='+item.id
  240. })
  241. }
  242. },
  243. // tab切换
  244. orderStatusChange(item) {
  245. this.status = item.value
  246. this.mescroll.resetUpScroll()
  247. },
  248. mescrollInit(mescroll) {
  249. this.mescroll = mescroll;
  250. },
  251. /*下拉刷新的回调 */
  252. downCallback(mescroll) {
  253. mescroll.resetUpScroll()
  254. },
  255. upCallback(page) {
  256. //联网加载数据
  257. var that = this;
  258. var data = {
  259. keyword:this.searchKey,
  260. status:this.status,
  261. page: page.num,
  262. pageSize: page.size
  263. };
  264. getMyStoreOrderList(data).then(res => {
  265. if(res.code==200){
  266. //设置列表数据
  267. if (page.num == 1) {
  268. that.dataList = res.data.list;
  269. } else {
  270. that.dataList = that.dataList.concat(res.data.list);
  271. }
  272. that.mescroll.endBySize(res.data.list.length, res.data.total);
  273. }else{
  274. uni.showToast({
  275. icon:'none',
  276. title: "请求失败",
  277. });
  278. that.dataList = null;
  279. that.mescroll.endErr();
  280. }
  281. });
  282. },
  283. // 查看订单详情
  284. showDetail(item) {
  285. console.log(item)
  286. if(item.orderType==2){
  287. uni.navigateTo({
  288. url: '/pages_shopping/live/storeOrderDetail?orderId=' + item.orderId
  289. })
  290. }else{
  291. uni.navigateTo({
  292. url: './storeOrderDetail?id=' + item.id
  293. })
  294. }
  295. },
  296. cancel(item){
  297. var that=this;
  298. uni.showModal({
  299. title: '提示',
  300. content: '确定取消订单吗',
  301. success: function (res) {
  302. if (res.confirm) {
  303. var data = {
  304. orderId:item.orderType==2?item.orderId:item.id
  305. };
  306. if(item.orderType==2){
  307. cancelLiveOrder(data).then(res => {
  308. if(res.code==200){
  309. uni.showToast({
  310. icon:'success',
  311. title: "操作成功",
  312. });
  313. that.mescroll.resetUpScroll()
  314. }else{
  315. uni.showToast({
  316. icon:'none',
  317. title: res.msg,
  318. });
  319. }
  320. });
  321. }else{
  322. cancelOrder(data).then(res => {
  323. if(res.code==200){
  324. uni.showToast({
  325. icon:'success',
  326. title: "操作成功",
  327. });
  328. that.mescroll.resetUpScroll()
  329. }else{
  330. uni.showToast({
  331. icon:'none',
  332. title: res.msg,
  333. });
  334. }
  335. });
  336. }
  337. }
  338. else if (res.cancel) {
  339. }
  340. }
  341. });
  342. },
  343. async pay(item) {
  344. if(item.isPrescribe==1 && item.prescribeId==null){
  345. uni.navigateTo({
  346. url:"/pages/shopping/prescribe?orderId="+item.id
  347. });
  348. }
  349. else{
  350. // 检查限购
  351. let productId = null;
  352. if(item.orderType==2){
  353. // 直播订单,从 item 中获取 productId
  354. if(item.productId){
  355. productId = item.productId;
  356. } else if(item.itemJson){
  357. try {
  358. const itemJson = JSON.parse(item.itemJson);
  359. productId = itemJson.productId;
  360. } catch(e) {
  361. console.error('解析 itemJson 失败:', e);
  362. }
  363. }
  364. } else {
  365. // 普通订单,从 items 中获取第一个商品的 productId
  366. if(item.items && item.items.length > 0 && item.items[0].jsonInfo){
  367. try {
  368. const jsonInfo = JSON.parse(item.items[0].jsonInfo);
  369. productId = jsonInfo.productId;
  370. } catch(e) {
  371. console.error('解析 jsonInfo 失败:', e);
  372. }
  373. }
  374. }
  375. // 如果获取到 productId,检查限购
  376. if(productId){
  377. try {
  378. const res = await checkPurchaseLimit({ productId: productId });
  379. if (res.code !== 200) {
  380. uni.showToast({
  381. icon: 'none',
  382. title: res.msg || '该商品限购,目前剩余可购买数量不足'
  383. });
  384. return;
  385. }
  386. } catch (error) {
  387. console.error('检查限购失败:', error);
  388. uni.showToast({
  389. icon: 'none',
  390. title: '检查限购失败,请稍后重试'
  391. });
  392. return;
  393. }
  394. }
  395. // 限购检查通过,进行支付跳转
  396. if(item.orderType==2){
  397. // 支付
  398. console.log("去支付", item)
  399. uni.navigateTo({
  400. url: `/pages_shopping/live/paymentOrder?orderList=${encodeURIComponent(JSON.stringify(item))}`
  401. })
  402. }else{
  403. uni.navigateTo({
  404. url: '/pages/shopping/paymentOrder?orderId='+item.id
  405. })
  406. }
  407. }
  408. },
  409. // 查看物流
  410. showDelivery(item) {
  411. if(item.orderType==2){
  412. uni.navigateTo({
  413. url: `/pages_shopping/live/storeOrderDelivery?orderId=${item.orderId}`
  414. })
  415. }else{
  416. uni.navigateTo({
  417. url: './storeOrderDelivery?orderId='+item.id
  418. })
  419. }
  420. },
  421. // 删除订单
  422. deleteOrder(item) {
  423. var that = this;
  424. uni.showModal({
  425. title: '提示',
  426. content: '确定删除订单吗?删除后无法恢复',
  427. success: function (res) {
  428. if (res.confirm) {
  429. var data = {
  430. orderId: item.orderType == 2 ? item.orderId : item.id,
  431. orderType: item.orderType
  432. };
  433. deleteOrderApi(data).then(res => {
  434. if(res.code == 200){
  435. uni.showToast({
  436. icon:'success',
  437. title: "删除成功",
  438. });
  439. that.mescroll.resetUpScroll()
  440. }else{
  441. uni.showToast({
  442. icon:'none',
  443. title: res.msg,
  444. });
  445. }
  446. });
  447. }
  448. }
  449. });
  450. }
  451. }
  452. }
  453. </script>
  454. <style lang="scss">
  455. .top-fixed{
  456. width: 100%;
  457. position: fixed;
  458. top: 0;
  459. left: 0;
  460. z-index: 10;
  461. }
  462. .pub-tab-box{
  463. box-sizing: border-box;
  464. width: 100%;
  465. padding: 0 40upx;
  466. background-color: #FFFFFF;
  467. .tab-inner{
  468. height: 88upx;
  469. line-height: 88upx;
  470. display: flex;
  471. align-items: center;
  472. justify-content: space-between;
  473. overflow-x: auto;
  474. }
  475. .item{
  476. font-size: 28upx;
  477. white-space: nowrap;
  478. line-height: 1;
  479. font-family: PingFang SC;
  480. font-weight: 500;
  481. color: #666666;
  482. margin-right: 60upx;
  483. display: flex;
  484. align-items: center;
  485. justify-content: center;
  486. &:last-child{
  487. margin-right: 0;
  488. }
  489. &.active{
  490. font-weight: bold;
  491. color: #333333;
  492. }
  493. .text{
  494. position: relative;
  495. z-index: 1;
  496. }
  497. .tab-bg{
  498. width: 72upx;
  499. height: 28upx;
  500. position: absolute;
  501. top: 17upx;
  502. left: 50%;
  503. transform: translateX(-36upx);
  504. z-index: -1;
  505. }
  506. }
  507. }
  508. .top-seat{
  509. width: 100%;
  510. height: 192upx;
  511. }
  512. .search-cont{
  513. padding: 16upx 30upx;
  514. background-color: #FFFFFF;
  515. .inner{
  516. box-sizing: border-box;
  517. width: 100%;
  518. height: 72upx;
  519. background: #F7F7F7;
  520. border-radius: 36upx;
  521. display: flex;
  522. align-items: center;
  523. padding: 0 30upx;
  524. .icon-search{
  525. width: 28upx;
  526. height: 28upx;
  527. margin-right: 20upx;
  528. }
  529. input{
  530. height: 60upx;
  531. line-height: 60upx;
  532. flex: 1;
  533. }
  534. }
  535. }
  536. .order-list{
  537. padding: 20upx;
  538. .item{
  539. background: #FFFFFF;
  540. border-radius: 16upx;
  541. padding: 0 30upx;
  542. margin-bottom: 20upx;
  543. .ordersn-box{
  544. display: flex;
  545. align-items: center;
  546. justify-content: space-between;
  547. padding: 34upx 0 20upx;
  548. .num{
  549. font-size: 26upx;
  550. font-family: PingFang SC;
  551. font-weight: 500;
  552. color: #999999;
  553. line-height: 1;
  554. }
  555. .status-box{
  556. display: flex;
  557. align-items: center;
  558. .recom-box{
  559. width: 108upx;
  560. height: 30upx;
  561. line-height: 30upx;
  562. text-align: left;
  563. padding-left: 8upx;
  564. font-size: 22upx;
  565. font-family: PingFang SC;
  566. font-weight: 500;
  567. color: #FFFFFF;
  568. background-image: url(https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/recom.png);
  569. background-repeat: no-repeat;
  570. background-size: 100% 100%;
  571. margin-right: 8upx;
  572. }
  573. .text{
  574. font-size: 28upx;
  575. font-family: PingFang SC;
  576. font-weight: 500;
  577. line-height: 1;
  578. &.success{
  579. color: #2BC7B9;
  580. }
  581. &.black{
  582. color: #111111;
  583. }
  584. &.info{
  585. color: #999999;
  586. }
  587. }
  588. }
  589. }
  590. .drug-list{
  591. .drug-item{
  592. padding: 30upx 0;
  593. border-bottom: 1px soli #F0F0F0;
  594. display: flex;
  595. align-items: center;
  596. .img-box{
  597. width: 160upx;
  598. height: 160upx;
  599. margin-right: 30upx;
  600. flex-shrink: 0;
  601. image{
  602. width: 100%;
  603. height: 100%;
  604. }
  605. }
  606. .drug-info{
  607. width: calc(100% - 190upx);
  608. height: 160upx;
  609. display: flex;
  610. flex-direction: column;
  611. justify-content: space-between;
  612. .name-box{
  613. font-size: 28upx;
  614. font-family: PingFang SC;
  615. font-weight: 500;
  616. color: #111111;
  617. line-height: 40upx;
  618. .tag{
  619. display: inline-block;
  620. padding: 0 6upx;
  621. height: 30upx;
  622. background: linear-gradient(90deg, #66b2ef 0%, #2BC7B9 100%);
  623. border-radius: 4upx;
  624. margin-right: 10upx;
  625. font-size: 22upx;
  626. font-family: PingFang SC;
  627. font-weight: bold;
  628. color: #FFFFFF;
  629. line-height: 30upx;
  630. float: left;
  631. margin-top: 7upx;
  632. }
  633. }
  634. .spec{
  635. font-size: 24upx;
  636. font-family: PingFang SC;
  637. font-weight: 500;
  638. color: #999999;
  639. line-height: 1;
  640. margin-top: 10upx;
  641. }
  642. .num-box{
  643. display: flex;
  644. align-items: center;
  645. justify-content: space-between;
  646. .price{
  647. display: flex;
  648. align-items: flex-end;
  649. .unit{
  650. font-size: 24upx;
  651. font-family: PingFang SC;
  652. font-weight: 500;
  653. color: #111111;
  654. line-height: 1.2;
  655. margin-right: 4upx;
  656. }
  657. .num{
  658. font-size: 32upx;
  659. font-family: PingFang SC;
  660. font-weight: 500;
  661. color: #111111;
  662. line-height: 1;
  663. }
  664. }
  665. .amount{
  666. font-size: 24upx;
  667. font-family: PingFang SC;
  668. font-weight: 500;
  669. color: #999999;
  670. line-height: 1;
  671. }
  672. }
  673. }
  674. }
  675. .bottom-box{
  676. height: 110upx;
  677. display: flex;
  678. align-items: center;
  679. justify-content: space-between;
  680. .amount-paid{
  681. display: flex;
  682. align-items: center;
  683. .label{
  684. font-size: 24upx;
  685. font-family: PingFang SC;
  686. font-weight: 500;
  687. color: #999999;
  688. line-height: 1;
  689. }
  690. .price-box{
  691. display: flex;
  692. align-items: flex-end;
  693. .unit{
  694. font-size: 24upx;
  695. font-family: PingFang SC;
  696. font-weight: 500;
  697. color: #FF6633;
  698. line-height: 1.2;
  699. margin-right: 4upx;
  700. }
  701. .num{
  702. font-size: 32upx;
  703. font-family: PingFang SC;
  704. font-weight: bold;
  705. color: #FF6633;
  706. line-height: 1;
  707. }
  708. }
  709. }
  710. .btn-box{
  711. box-sizing: border-box;
  712. display: flex;
  713. align-items: center;
  714. .btn{
  715. width: 155upx;
  716. height: 64upx;
  717. line-height: 64upx;
  718. font-size: 26upx;
  719. font-family: PingFang SC;
  720. font-weight: 500;
  721. text-align: center;
  722. border-radius: 32upx;
  723. margin-left: 15upx;
  724. &:first-child{
  725. margin-left: 0;
  726. }
  727. &.cancel{
  728. border: 1px solid #DDDDDD;
  729. color: #666666;
  730. }
  731. &.pay{
  732. background: #2BC7B9;
  733. color: #FFFFFF;
  734. }
  735. }
  736. }
  737. }
  738. }
  739. }
  740. }
  741. </style>