paymentOrder.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893
  1. <template>
  2. <view class="content">
  3. <view class="inner">
  4. <!-- 时间、价格 -->
  5. <view class="time-price">
  6. <text class="time">请在{{payLimitTime}}前完成支付</text>
  7. <view class="price-box">
  8. <text class="unit">¥</text>
  9. <text class="num">{{order ? (Number(order.totalPrice) || 0).toFixed(2) : "0.00"}}</text>
  10. </view>
  11. <!-- <text class="desc" v-if="payType==2">代收金额{{payDelivery.toFixed(2)}},请您在收到快递后支付尾款给快递人员。</text>
  12. <text class="desc" v-if="payType==3">货到付款金额{{payDelivery.toFixed(2)}},请您在收到快递后支付给快递人员。</text> -->
  13. </view>
  14. <!-- 支付方式 -->
  15. <view class="pay-type">
  16. <view class="title">支付方式</view>
  17. <!-- 改价订单只能选择微信支付和物流代收 -->
  18. <!-- <radio-group @change="payTypeChange" v-if="order.isEditMoney!=null&&order.isEditMoney==1">
  19. <view class="item" >
  20. <view class="left" >
  21. <image src="/static/images/wecha_pay.png" mode=""></image>
  22. <text class="text">微信支付</text>
  23. </view>
  24. <label>
  25. <radio :value="1" :checked="order.payType=='1'" />
  26. </label>
  27. </view>
  28. <view class="item" >
  29. <view class="left">
  30. <image src="/static/images/pay_de.png" mode=""></image>
  31. <text class="text">物流代收</text>
  32. </view>
  33. <label>
  34. <radio :value="2" :checked="order.payType=='2'" />
  35. </label>
  36. </view>
  37. </radio-group> -->
  38. <!-- <radio-group @change="payTypeChange" v-else-if="order.orderCreateType!=null&& order.orderCreateType==3">
  39. <view class="item" >
  40. <view class="left" >
  41. <image src="/static/images/wecha_pay.png" mode=""></image>
  42. <text class="text">微信支付</text>
  43. </view>
  44. <label>
  45. <radio :value="1" :checked="order.payType=='1'" />
  46. </label>
  47. </view>
  48. <view class="item" >
  49. <view class="left">
  50. <image src="/static/images/pay_de.png" mode=""></image>
  51. <text class="text">物流代收</text>
  52. </view>
  53. <label>
  54. <radio :value="2" :checked="order.payType=='2'" />
  55. </label>
  56. </view>
  57. <view class="item" v-if="user!=null&&user.level==1 ">
  58. <view class="left">
  59. <image src="/static/images/pay_1.png" mode=""></image>
  60. <text class="text">货到付款</text>
  61. </view>
  62. <label>
  63. <radio :value="3" :checked="order.payType=='3'" />
  64. </label>
  65. </view>
  66. </radio-group>
  67. <radio-group @change="payTypeChange" v-else-if="order.orderCreateType!=null&& order.orderCreateType==2">
  68. <view class="item" v-if="payType==1||payType==4" >
  69. <view class="left" >
  70. <image src="/static/images/wecha_pay.png" mode=""></image>
  71. <text class="text">微信支付</text>
  72. </view>
  73. <label>
  74. <radio :value="1" :checked="order.payType=='1'" />
  75. </label>
  76. </view>
  77. <view class="item" v-if="payType==2||payType==4">
  78. <view class="left" >
  79. <image src="/static/images/pay_de.png" mode=""></image>
  80. <text class="text">物流代收</text>
  81. </view>
  82. <label>
  83. <radio :value="2" :checked="order.payType=='2'" />
  84. </label>
  85. </view>
  86. <view class="item" v-if="user!=null&&user.level==1 ">
  87. <view class="left">
  88. <image src="/static/images/pay_1.png" mode=""></image>
  89. <text class="text">货到付款</text>
  90. </view>
  91. <label>
  92. <radio :value="3" :checked="order.payType=='3'" />
  93. </label>
  94. </view>
  95. </radio-group> -->
  96. <!-- <radio-group @change="payTypeChange" v-else-if="order.orderCreateType!=null&&(order.orderCreateType==1)">
  97. <view class="item" >
  98. <view class="left" >
  99. <image src="/static/images/wecha_pay.png" mode=""></image>
  100. <text class="text">微信支付</text>
  101. </view>
  102. <label>
  103. <radio :value="1" checked />
  104. </label>
  105. </view>
  106. </radio-group> -->
  107. <radio-group @change="handlePayTypeChange">
  108. <view class="item">
  109. <view class="left">
  110. <image src="/static/images/wecha_pay.png" mode=""></image>
  111. <text class="text">微信支付</text>
  112. </view>
  113. <label>
  114. <radio :value="1" :checked="payType === 1" />
  115. </label>
  116. </view>
  117. <!-- #ifdef APP-PLUS||H5 -->
  118. <view class="item">
  119. <view class="left">
  120. <image src="/static/images/zfb.png" mode=""></image>
  121. <text class="text">支付宝</text>
  122. </view>
  123. <label>
  124. <radio :value="2" :checked="payType === 2" />
  125. </label>
  126. </view>
  127. <!-- #endif -->
  128. </radio-group>
  129. </view>
  130. <!-- 订单详情查看 -->
  131. <view class="order-info">
  132. <view class="title">订单信息</view>
  133. <view class="item">
  134. <text class="label">订单编号</text>
  135. <view class="sn-box">
  136. <view>
  137. <view class="text">{{order?.orderCode}}</view>
  138. </view>
  139. <!-- <view class="copy-btn" @click="copyOrderSn(order?.orderCode)">复制</view> -->
  140. </view>
  141. </view>
  142. <view class="item">
  143. <text class="label">下单时间</text>
  144. <text class="text">{{ formattedDate}} </text>
  145. </view>
  146. <view class="item">
  147. <text class="label">订单金额</text>
  148. <text class="text" v-if="order!=null">{{order ? (Number(order.totalPrice) || 0).toFixed(2) : "0.00"}}</text>
  149. </view>
  150. <!-- <view class="item">
  151. <text class="label">支付方式</text>
  152. <text class="text">微信支付</text>
  153. </view> -->
  154. </view>
  155. </view>
  156. <view class="btn-box">
  157. <view class="btn" @click="payOrder()">去支付</view>
  158. <!-- <view class="other-btn">
  159. 亲友代付
  160. <button class="share" data-name="shareBtn" open-type="share">分享</button>
  161. </view> -->
  162. </view>
  163. </view>
  164. </template>
  165. <script>
  166. import dayjs from 'dayjs';
  167. import {
  168. zfbPayment,
  169. weChatPayment
  170. } from '@/api/pay'
  171. // const isoDate = "2025-08-07T17:08:33.450+0800";
  172. // const formatted = dayjs(isoDate).format('YYYY-MM-DD HH:mm:ss');
  173. // import {getUserInfo} from '@/api/user'
  174. // import {getStoreConfig} from '@/api/common'
  175. // import {editPayType,pay,getStoreOrderById,payByCombinationId,getStoreOrderByCombinationId,editPayTypeByCombinationId} from '@/api/storeOrder'
  176. export default {
  177. data() {
  178. return {
  179. payType: 2,
  180. order: null,
  181. // formattedDate: '',
  182. orderId: null,
  183. payDelivery: 0,
  184. payMoney: 0,
  185. config: null,
  186. payType: 1,
  187. // payLimitTime: null,
  188. user: null,
  189. combinationOrderId: '',
  190. // 需要开处方的订单id
  191. prescribeOrder: ""
  192. }
  193. },
  194. computed:{
  195. formattedDate() {
  196. return this.order?.createTime? dayjs(this.order.createTime).format('YYYY-MM-DD HH:mm:ss'): '';
  197. },
  198. payLimitTime() {
  199. return this.order?.updateTime? dayjs(this.order.updateTime).format('YYYY-MM-DD HH:mm:ss'): '';
  200. }
  201. },
  202. onLoad(options) {
  203. console.log("支付订单是>>",options)
  204. // this.orderKey = options.orderKey;
  205. // this.liveId = options.liveId
  206. // this.productId=options.productId
  207. // console.log("支付订单",options)
  208. if (options.orderList) {
  209. try {
  210. const decoded = decodeURIComponent(options.orderList);
  211. this.order = JSON.parse(decoded) || {}; // 默认空对象
  212. } catch (e) {
  213. console.error('参数解析失败:', e);
  214. this.order = {}; // 显式赋默认值
  215. }
  216. }
  217. // console.log("支付订单是>>",options)
  218. // this.combinationOrderId = option.combinationOrderId ? decodeURIComponent(option.combinationOrderId) : ''
  219. // this.orderId=option.orderId ? JSON.parse(option.orderId) : '';
  220. // if(this.combinationOrderId) {
  221. // this.getStoreOrderByCombinationId()
  222. // } else {
  223. // this.getStoreOrderById();
  224. // }
  225. // this.getStoreConfig();
  226. // this.getUserInfo();
  227. // uni.showShareMenu({
  228. // withShareTicket:true,
  229. // //小程序的原生菜单中显示分享按钮,才能够让发送给朋友与分享到朋友圈两个按钮可以点击
  230. // menus:["shareAppMessage"] //不设置默认发送给朋友
  231. // })
  232. },
  233. //发送给朋友
  234. onShareAppMessage(res) {
  235. const combinationOrderId = this.combinationOrderId ?
  236. `&combinationOrderId=${encodeURIComponent(this.combinationOrderId)}` : ''
  237. return {
  238. title: "帮TA支付",
  239. path: '/pages_user/user/otherPaymentOrder?orderId=' + this.orderId + combinationOrderId,
  240. imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
  241. }
  242. },
  243. methods: {
  244. payOrder() {
  245. if (this.payType == 1) {
  246. this.doWechatPay()
  247. } else if(this.payType == 2) {
  248. this.doAlipay()
  249. }else{
  250. uni.showToast({
  251. title: "暂时无可用支付",
  252. icon: 'none'
  253. })
  254. }
  255. },
  256. // 选微信支付或者支付宝支付
  257. handlePayTypeChange(e) {
  258. this.payType = e.detail.value; // 获取选中的 value
  259. console.log('当前选中:', this.payType);
  260. // 根据值执行不同逻辑
  261. // if (this.payType === 1) {
  262. // this.doWechatPay();
  263. // } else if (this.payType === 2) {
  264. // this.doAlipay();
  265. // }
  266. },
  267. async doWechatPay() {
  268. try {
  269. uni.showLoading({ title: '发起支付中...', mask: true });
  270. let data={
  271. orderId:this.order.orderId
  272. }
  273. // await weChatPayment(this.order.orderId, Number(this.order.totalPrice));
  274. await weChatPayment(data);
  275. uni.redirectTo({ url: '/pages_shop/success' });
  276. } catch (err) {
  277. console.error('支付流程异常:', err);
  278. } finally {
  279. uni.hideLoading();
  280. }
  281. },
  282. // doWechatPay(){
  283. // weChatPayment(data).then(res => {
  284. // if (res.code == 200) {
  285. // }
  286. // })
  287. // },
  288. // 支付宝支付
  289. doAlipay() {
  290. var data = {
  291. orderId: this.order.orderId
  292. };
  293. console.log("orderId>>", this.order.orderId)
  294. let that = this;
  295. // #ifdef H5||APP-PLUS
  296. // #ifdef APP-PLUS
  297. const tzCashier = uni.requireNativePlugin("TZBank-Cashier");
  298. // #endif
  299. uni.showLoading();
  300. zfbPayment(data).then(res => {
  301. console.log("支付开始",res)
  302. uni.hideLoading();
  303. if (res.code == 200) {
  304. console.log("支付在这里", res)
  305. if (res.type == "tz") {
  306. //console.log("qxj orderFlowNo:"+res.data.body.orderFlowNo+" businessCstNo:"+res.data.body.orderNo+" platMerCstNo:"+res.data.body.platMerCstNo);
  307. const match = res.data.body.url.match(/[\?&]businessCstNo=([^&]+)/);
  308. const businessCstNo = match ? match[1] : null;
  309. console.log("qxj tzCashier:" + tzCashier + " businessCstNo:" + businessCstNo);
  310. tzCashier.pay({
  311. env: 0,
  312. wxMiniProgramType: 0,
  313. // wxAppId: 'wx703c4bd07bbd1695',
  314. wxAppId: 'wx9ea36eecd281bcd3',
  315. wxUniversalLink: "https://yjf.runtzh.com/",
  316. orderFlowNo: res.data.body.orderFlowNo,
  317. businessCstNo: businessCstNo,
  318. platMerCstNo: res.data.body.platMerCstNo
  319. }, (res) => {
  320. // uni.showToast({
  321. // title:'收银台回调:'+JSON.stringify(res),
  322. // icon:'none'
  323. // })
  324. uni.$emit('closePrivilege', {});
  325. that.showPayTips = true;
  326. });
  327. } else if (res.type == 'hf') {
  328. if (uni.getWindowInfo().platform == 'android') {
  329. var alipayScheme = 'alipays://platformapi/startApp?&saId=10000007&qrcode=' + res
  330. .data.qr_code;
  331. } else {
  332. var alipayScheme = 'alipay://platformapi/startApp?&saId=10000007&qrcode=' + res
  333. .data.qr_code;
  334. }
  335. // 在uni-app中使用plus.runtime.openURL打开URL
  336. plus.runtime.openURL(alipayScheme, function(error) {
  337. });
  338. uni.$emit('closePrivilege', {});
  339. that.showPayTips = true;
  340. }
  341. } else {
  342. uni.showToast({
  343. title: res.msg,
  344. icon: 'none'
  345. })
  346. }
  347. },
  348. rej => {}
  349. );
  350. // #endif
  351. },
  352. getUserInfo() {
  353. getUserInfo().then(
  354. res => {
  355. if (res.code == 200) {
  356. if (res.user != null) {
  357. this.user = res.user;
  358. }
  359. } else {
  360. uni.showToast({
  361. icon: 'none',
  362. title: "请求失败",
  363. });
  364. }
  365. },
  366. rej => {}
  367. );
  368. },
  369. getStoreConfig() {
  370. getStoreConfig().then(
  371. res => {
  372. if (res.code == 200) {
  373. this.config = res.data
  374. console.log(this.config);
  375. }
  376. },
  377. rej => {}
  378. );
  379. },
  380. payTypeChange(e) {
  381. if (this.combinationOrderId) {
  382. this.editPayTypeByCombinationId(e.detail.value)
  383. } else {
  384. this.editPayType(e.detail.value)
  385. }
  386. },
  387. // copyOrderSn(text) {
  388. // console.log(text)
  389. // // 复制方法
  390. // uni.setClipboardData({
  391. // data: text,
  392. // success: () => {
  393. // uni.showToast({
  394. // title: '内容已成功复制到剪切板',
  395. // icon: 'none'
  396. // })
  397. // }
  398. // });
  399. // },
  400. // getStoreOrderById(){
  401. // var data = {orderId:this.orderId};
  402. // var that=this;
  403. // uni.showLoading();
  404. // getStoreOrderById(data).then(
  405. // res => {
  406. // if(res.code==200){
  407. // console.log(res);
  408. // uni.hideLoading();
  409. // that.order=res.order;
  410. // that.order.orderCodes = that.order.orderCode ? [that.order.orderCode]:[]
  411. // that.orderCode = that.order.orderCode
  412. // that.payLimitTime=res.payLimitTime;
  413. // //套餐订单处理
  414. // if(res.productPackage!=null){
  415. // this.payType=res.productPackage.payType;
  416. // console.log(this.payType)
  417. // if(this.order.payType==4){
  418. // this.order.payType=1;
  419. // }
  420. // }
  421. // this.editPayType(this.order.payType)
  422. // }else{
  423. // uni.showToast({
  424. // icon:'none',
  425. // title: res.msg,
  426. // });
  427. // }
  428. // },
  429. // rej => {}
  430. // );
  431. // },
  432. editPayType(payType) {
  433. var data = {
  434. orderId: this.orderId,
  435. payType: payType
  436. };
  437. var that = this;
  438. uni.showLoading();
  439. editPayType(data).then(
  440. res => {
  441. if (res.code == 200) {
  442. console.log(res);
  443. uni.hideLoading();
  444. that.order = res.order;
  445. that.order.orderCodes = that.order.orderCode ? [that.order.orderCode] : []
  446. that.orderCode = that.order.orderCode
  447. // this.payType=this.order.payType
  448. this.payMoney = this.order.payMoney;
  449. this.payDelivery = this.order.payDelivery;
  450. } else {
  451. uni.showToast({
  452. icon: 'none',
  453. title: res.msg,
  454. });
  455. }
  456. },
  457. rej => {}
  458. );
  459. },
  460. // getStoreOrderByCombinationId() {
  461. // var data = {combinationId:this.combinationOrderId};
  462. // var that=this;
  463. // uni.showLoading();
  464. // getStoreOrderByCombinationId(data).then(
  465. // res => {
  466. // if(res.code==200){
  467. // console.log(res);
  468. // uni.hideLoading();
  469. // that.order=res.order;
  470. // that.orderCode = res.order.orderCodes ? res.order.orderCodes.join(',') : "";
  471. // that.payLimitTime=res.payLimitTime;
  472. // //套餐订单处理
  473. // if(res.productPackage!=null){
  474. // this.payType=res.productPackage.payType;
  475. // console.log(this.payType)
  476. // if(this.order.payType==4){
  477. // this.order.payType=1;
  478. // }
  479. // }
  480. // that.prescribeOrder = res.prescribeOrder;
  481. // this.editPayTypeByCombinationId(this.order.payType)
  482. // }else{
  483. // uni.showToast({
  484. // icon:'none',
  485. // title: res.msg,
  486. // });
  487. // }
  488. // },
  489. // rej => {}
  490. // );
  491. // },
  492. // editPayTypeByCombinationId(payType){
  493. // var data = {combinationOrderId:this.combinationOrderId,payType:payType};
  494. // var that=this;
  495. // uni.showLoading();
  496. // editPayTypeByCombinationId(data).then(
  497. // res => {
  498. // if(res.code==200){
  499. // console.log(res);
  500. // uni.hideLoading();
  501. // that.order=res.order;
  502. // that.orderCode = res.order.orderCodes ? res.order.orderCodes.join(',') : "";
  503. // //this.payType=this.order.payType
  504. // this.payMoney=this.order.payMoney;
  505. // this.payDelivery=this.order.payDelivery;
  506. // that.prescribeOrder = res.prescribeOrder;
  507. // }else{
  508. // uni.showToast({
  509. // icon:'none',
  510. // title: res.msg,
  511. // });
  512. // }
  513. // },
  514. // rej => {}
  515. // );
  516. // },
  517. otherPayOrder() {
  518. // uni.navigateTo({
  519. // url: '/pages_user/user/otherPaymentOrder?orderId='+this.orderId
  520. // })
  521. uni.navigateTo({
  522. url: '/pages_user/user/otherPaymentOrder?combinationOrderId=' + encodeURIComponent(this
  523. .combinationOrderId)
  524. })
  525. },
  526. // payOrder() {
  527. // if (this.combinationOrderId) {
  528. // let data = {
  529. // combinationOrderId: this.combinationOrderId,
  530. // payType: this.order.payType
  531. // };
  532. // let that = this;
  533. // uni.showLoading();
  534. // payByCombinationId(data).then(
  535. // res => {
  536. // if (res.code == 200) {
  537. // this.payfun(res)
  538. // } else {
  539. // uni.showToast({
  540. // icon: 'none',
  541. // title: res.msg,
  542. // });
  543. // }
  544. // },
  545. // rej => {}
  546. // );
  547. // } else {
  548. // let data = {
  549. // orderId: this.order.id,
  550. // payType: this.order.payType
  551. // };
  552. // let that = this;
  553. // uni.showLoading();
  554. // pay(data).then(
  555. // res => {
  556. // if (res.code == 200) {
  557. // this.payfun(res)
  558. // } else {
  559. // uni.showToast({
  560. // icon: 'none',
  561. // title: res.msg,
  562. // });
  563. // }
  564. // },
  565. // rej => {}
  566. // );
  567. // }
  568. // },
  569. payfun(res) {
  570. const that = this
  571. console.log(res.result);
  572. if (res.payType == 1 || res.payType == 2) {
  573. uni.requestPayment({
  574. provider: 'wxpay',
  575. timeStamp: res.result.timeStamp,
  576. nonceStr: res.result.nonceStr,
  577. // package: res.result.packageValue,
  578. package: res.result.packageStr,
  579. signType: res.result.signType,
  580. paySign: res.result.paySign,
  581. success: function(res) {
  582. uni.hideLoading();
  583. uni.redirectTo({
  584. url: "success?order=" + JSON.stringify(that.order)
  585. })
  586. },
  587. fail: function(err) {
  588. uni.showToast({
  589. icon: 'none',
  590. title: 'fail:' + JSON.stringify(err),
  591. });
  592. console.log('fail:' + JSON.stringify(err));
  593. uni.hideLoading();
  594. }
  595. });
  596. } else if (res.payType == 3) {
  597. uni.hideLoading();
  598. if (that.order.isPrescribe) {
  599. //如果是处方订单开处方
  600. // uni.redirectTo({
  601. // url:"prescribe?orderId="+that.order.id
  602. // })
  603. uni.redirectTo({
  604. url: "prescribe?orderId=" + that.prescribeOrder + "&combinationOrderId=" +
  605. encodeURIComponent(that.order.combinationOrderId)
  606. })
  607. } else {
  608. //如果是普通订单
  609. uni.redirectTo({
  610. url: "success?order=" + JSON.stringify(that.order)
  611. })
  612. }
  613. }
  614. }
  615. }
  616. }
  617. </script>
  618. <style lang="scss">
  619. page {
  620. height: 100%;
  621. }
  622. .content {
  623. height: 100%;
  624. display: flex;
  625. flex-direction: column;
  626. justify-content: space-between;
  627. .inner {
  628. padding: 20upx;
  629. .time-price {
  630. box-sizing: border-box;
  631. padding: 50upx 0upx;
  632. background: #FFFFFF;
  633. border-radius: 16upx;
  634. display: flex;
  635. flex-direction: column;
  636. align-items: center;
  637. .time {
  638. font-size: 32upx;
  639. font-family: PingFang SC;
  640. font-weight: 500;
  641. color: #222222;
  642. line-height: 1;
  643. text-align: center;
  644. }
  645. .desc {
  646. margin: 30upx 0upx 15upx;
  647. font-size: 26upx;
  648. font-family: PingFang SC;
  649. color: #999999;
  650. line-height: 1;
  651. text-align: center;
  652. }
  653. .price-box {
  654. display: flex;
  655. align-items: flex-end;
  656. margin-top: 28upx;
  657. .unit {
  658. font-size: 32upx;
  659. font-family: PingFang SC;
  660. font-weight: bold;
  661. color: #FF6633;
  662. line-height: 1.3;
  663. margin-right: 10upx;
  664. }
  665. .num {
  666. font-size: 56upx;
  667. font-family: PingFang SC;
  668. font-weight: bold;
  669. color: #FF6633;
  670. line-height: 1;
  671. }
  672. }
  673. }
  674. .pay-type {
  675. box-sizing: border-box;
  676. background: #FFFFFF;
  677. border-radius: 16upx;
  678. margin-top: 20upx;
  679. padding: 40upx 30upx;
  680. display: flex;
  681. flex-direction: column;
  682. justify-content: space-between;
  683. .title {
  684. font-size: 28upx;
  685. font-family: PingFang SC;
  686. font-weight: 500;
  687. color: #999999;
  688. line-height: 1;
  689. margin-bottom: 10upx;
  690. }
  691. .item {
  692. padding: 15upx 0upx;
  693. display: flex;
  694. align-items: center;
  695. justify-content: space-between;
  696. .left {
  697. display: flex;
  698. align-items: center;
  699. image {
  700. width: 44upx;
  701. height: 44upx;
  702. margin-right: 20upx;
  703. }
  704. .text {
  705. font-size: 30upx;
  706. font-family: PingFang SC;
  707. font-weight: bold;
  708. color: #222222;
  709. line-height: 1;
  710. }
  711. }
  712. }
  713. }
  714. .order-info {
  715. margin-top: 20upx;
  716. background: #FFFFFF;
  717. border-radius: 16upx;
  718. padding: 40upx 30upx;
  719. .title {
  720. font-size: 30upx;
  721. font-family: PingFang SC;
  722. font-weight: bold;
  723. color: #222222;
  724. line-height: 1;
  725. }
  726. .item {
  727. margin-top: 40upx;
  728. display: flex;
  729. align-items: center;
  730. justify-content: space-between;
  731. .label {
  732. font-size: 26upx;
  733. font-family: PingFang SC;
  734. font-weight: 500;
  735. color: #666666;
  736. line-height: 1;
  737. }
  738. .text {
  739. font-size: 26upx;
  740. font-family: PingFang SC;
  741. font-weight: 500;
  742. color: #222222;
  743. line-height: 32upx;
  744. }
  745. .cont-text {
  746. font-size: 26upx;
  747. font-family: PingFang SC;
  748. font-weight: 500;
  749. color: #666666;
  750. .bold {
  751. color: #111111;
  752. }
  753. }
  754. .sn-box {
  755. display: flex;
  756. align-items: center;
  757. .copy-btn {
  758. width: 58upx;
  759. height: 32upx;
  760. line-height: 32upx;
  761. text-align: center;
  762. font-size: 22upx;
  763. font-weight: 500;
  764. color: #222222;
  765. background: #F5F5F5;
  766. border-radius: 4upx;
  767. margin-left: 24upx;
  768. }
  769. }
  770. }
  771. .line {
  772. width: 100%;
  773. height: 1px;
  774. background: #F0F0F0;
  775. margin-top: 30upx;
  776. }
  777. }
  778. }
  779. .btn-box {
  780. height: 242upx;
  781. background: #FFFFFF;
  782. display: flex;
  783. align-items: center;
  784. justify-content: center;
  785. flex-direction: column;
  786. .btn {
  787. width: 91.73%;
  788. height: 88upx;
  789. line-height: 88upx;
  790. font-size: 30upx;
  791. font-family: PingFang SC;
  792. font-weight: bold;
  793. color: #FFFFFF;
  794. text-align: center;
  795. background: #0bb3f2;
  796. border-radius: 44upx;
  797. margin-bottom: 10rpx;
  798. }
  799. .other-btn {
  800. width: 91.73%;
  801. height: 88upx;
  802. line-height: 88upx;
  803. font-size: 30upx;
  804. font-family: PingFang SC;
  805. font-weight: bold;
  806. color: #0bb3f2;
  807. border: 1rpx solid #0bb3f2;
  808. text-align: center;
  809. background: #FFFFFF;
  810. border-radius: 44upx;
  811. margin-bottom: 10rpx;
  812. position: relative;
  813. .share {
  814. display: inline-block;
  815. position: absolute;
  816. top: 0;
  817. left: 0;
  818. width: 100%;
  819. height: 100%;
  820. opacity: 0;
  821. }
  822. }
  823. }
  824. }
  825. </style>