detail.vue 26 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267
  1. <template>
  2. <view>
  3. <!-- #ifdef MP || APP-PLUS -->
  4. <NavBar titleText="订单详情" :iconColor="iconColor" :textColor="iconColor" :isScrolling="isScrolling" showBack>
  5. </NavBar>
  6. <!-- #endif -->
  7. <view class="headerBg">
  8. <view :style="{ height: `${getHeight.barTop}px` }"></view>
  9. <view :style="{ height: `${getHeight.barHeight}px` }"></view>
  10. <view class="inner"></view>
  11. </view>
  12. <view class="order-detail pos-order-details">
  13. <view class="header">
  14. <view class="state" v-if="orderInfo.status ==0">用户已下单,您可以接单啦!~</view>
  15. <view v-if="orderInfo.status == 1" class="data">您已接单,请及时联系驿站取单配送~</view>
  16. <view v-if="orderInfo.status == 2" class="data">货物正在运输中,等待用户确认收货!</view>
  17. <view v-if="orderInfo.status == 3" class="data">配送完成,等待用户确认收货!</view>
  18. <view v-if="orderInfo.status == 4" class="data">用户已经确认收货啦,您可以联系用户索要好评呦!</view>
  19. <view v-if="orderInfo.status == 5" class="data">订单已经完成,您可以申请提现啦~</view>
  20. </view>
  21. <!-- <view class="remarks acea-row row-middle" @click="modify('1')">
  22. <text class="iconfont icon-ic_notes"></text>
  23. <view class="line1 mark-box" style="text-align: left;">
  24. {{info.merchantRemark ? info.merchantRemark : '订单未备注,点击添加备注信息'}}
  25. </view>
  26. </view> -->
  27. <view class="address">
  28. <view class="name">
  29. <text class="iconfont icon-ic_location4" v-if="orderInfo.userName"></text>
  30. {{ orderInfo.userName}}
  31. <text class="phone">{{ orderInfo.userPhone }}</text>
  32. </view>
  33. <view>地址:{{ orderInfo.userAddress }}</view>
  34. </view>
  35. <!--view class="acea-row row-middle user-box">
  36. <image :src="info.avatar" class="image"></image>
  37. <view class="text">
  38. <view class="acea-row row-middle name">
  39. {{info.nickname}}
  40. </view>
  41. <view v-if="info.phone" class="">{{info.phone}}(ID:{{info.uid}})</view>
  42. <view v-else class="">ID:{{info.uid}}</view>
  43. </view>
  44. </view-->
  45. <!-- 未拆单时,正常单 -->
  46. <view class="pos-order-goods split fast-box">
  47. <view :class="postIndex !== info.postOrderInfoList - 1 ? 'qie-ge' : ''" v-for="(post, postIndex) in info.postOrderInfoList"
  48. :key="postIndex">
  49. <view class="flex-between-center mb-20">
  50. <view>
  51. <view class="fast-yz">{{post.postName}}</view>
  52. <view class="fast-xx">{{info.userAddress}}</view>
  53. <view class="fast-xx" v-if="info.status==4">收件时间:{{info.receivingTime}}</view>
  54. <view class="fast-xx" v-if="info.status < 4">下单时间:{{info.payTime}}</view>
  55. </view>
  56. <!-- <view class="flex-y-center" @tap="makePhone(post.phone)">
  57. <image src="/static/img/phone.png" class="image2"/><text class='phone'>联系驿站</text>
  58. </view> -->
  59. </view>
  60. <view class="fast-item" v-for="(value, key) in post.orderInfoList" :key="key">
  61. <view class="flex-between-center mb-20">
  62. <view class="flex-y-center">
  63. <image style="width: 135rpx; height: 135rpx;border-radius: 30rpx;margin-right: 23rpx;" src="/static/img/ic-qu-chengse.png"></image>
  64. <view>
  65. <view class="fast-yz" style="font-weight: bold;">取件码 <text>{{value.pickUpCode}}</text></view>
  66. <view class="fast-xx">{{value.expressCompany}} {{value.expressNo}}</view>
  67. <view class="fast-yz">规格:{{value.spec}}</view>
  68. </view>
  69. </view>
  70. <view>
  71. <!-- <view class="fast-yz">134m</view> -->
  72. <view class="bg-color-cash">¥<text class="fast-cash">{{value.price}}</text></view>
  73. </view>
  74. </view>
  75. <view class="fast-remark">
  76. <view v-if="value.remark">备注:{{value.remark}}</view>
  77. <view class="flex-y-center" v-if="value.image" @tap="lookImg(value.image)">
  78. <text>附图:</text>
  79. <image style="width: 38rpx; height: 38rpx;" src="/static/img/ic-figure.png"></image>
  80. </view>
  81. </view>
  82. </view>
  83. </view>
  84. <view class="mark acea-row" v-if="info.userRemark">
  85. <view class="name">买家留言:</view>
  86. <view class="value line1">{{info.userRemark}}</view>
  87. </view>
  88. </view>
  89. <!-- 结束 -->
  90. <view class="wrapper">
  91. <view class="item acea-row row-between">
  92. <view>订单编号:</view>
  93. <view class="conter acea-row row-middle row-right">
  94. {{ info.orderNo}}
  95. <!-- #ifdef H5 -->
  96. <text class="copy copy-data" :data-clipboard-text="info.orderNo">复制</text>
  97. <!-- #endif -->
  98. <!-- #ifdef MP -->
  99. <text class="copy copy-data" @click="copyNum(info.orderNo)">复制</text>
  100. <!-- #endif -->
  101. </view>
  102. </view>
  103. <view class="item acea-row row-between">
  104. <view>下单时间:</view>
  105. <view class="conter">{{ info.payTime }}</view>
  106. </view>
  107. </view>
  108. <view class="wrapper" v-if="info.deliveryType != 'fictitious'">
  109. <view class="item acea-row row-between">
  110. <view>配送方式:</view>
  111. <view v-if="Number(info.secondType) > 4" class='conter'>自动发货</view>
  112. <view v-else-if="Number(info.secondType) == 2" class='conter'>虚拟发货</view>
  113. <view class="conter" v-else>
  114. {{info.shippingType==1?'骑手配送':info.shippingType==2?'到店自提':'骑手配送'}}
  115. </view>
  116. </view>
  117. </view>
  118. <!--view class="wrapper" v-if="info.orderExtend&&JSON.parse(info.orderExtend).length">
  119. <systemFromInfo :orderExtend="JSON.parse(info.orderExtend)"></systemFromInfo>
  120. </view-->
  121. <view class="wrapper">
  122. <view class='item acea-row row-between'>
  123. <view>配送运费(共{{info.totalNum}}件)</view>
  124. <view class='conter'>¥{{info.totalPrice}}</view>
  125. </view>
  126. </view>
  127. <view class="height-add"></view>
  128. </view>
  129. </view>
  130. </template>
  131. <script>
  132. import PriceChange from "../components/PriceChange/index.vue";
  133. import countDown from '@/components/countDown/index.vue'
  134. import BaseMoney from "../components/BaseMoney.vue";
  135. import systemFromInfo from '@/components/systemFromInfo';
  136. // #ifdef MP || APP-PLUS
  137. import NavBar from "../components/NavBar.vue";
  138. // #endif
  139. // #ifdef H5
  140. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  141. // #endif
  142. import {
  143. employeeOrderInfo,
  144. employeeOrderMark,
  145. orderInvoiceListInfo,
  146. orderGetVerfication,
  147. printReceipt
  148. } from '@/api/work.js';
  149. import {
  150. isMoney
  151. } from '@/utils/validate.js'
  152. import {
  153. expressOrderInfo
  154. } from '@/api/rider.js';
  155. export default {
  156. name: "AdminOrder",
  157. components: {
  158. PriceChange,
  159. countDown,
  160. BaseMoney,
  161. systemFromInfo,
  162. // #ifdef MP || APP-PLUS
  163. NavBar,
  164. // #endif
  165. },
  166. props: {},
  167. data: function() {
  168. return {
  169. popup_center: 'center',
  170. moreShow: false,
  171. payType: {
  172. 'public': '公众号支付',
  173. 'mini': '小程序支付',
  174. 'h5': '网页支付支付',
  175. 'yue': '余额支付',
  176. 'wechatIos': '微信Ios支付',
  177. 'wechatAndroid': '微信Android支付',
  178. 'alipay': '支付宝支付',
  179. 'alipayApp': '支付宝App支付'
  180. },
  181. orderStatus: ['待支付', '待发货', '部分发货', '待核销', '待收货', '已收货', '已完成', '已取消'],
  182. openErp: false,
  183. giveData: {
  184. give_integral: 0,
  185. give_coupon: []
  186. },
  187. giveCartInfo: [],
  188. totalNmu: 0,
  189. order: false,
  190. change: false,
  191. order_id: "",
  192. status: "",
  193. title: "标题",
  194. types: "",
  195. statusType: '',
  196. clickNum: 1,
  197. isRefund: 0, //1是仅退款;0是同意退货退款
  198. iconColor: '#FFFFFF',
  199. isScrolling: false,
  200. getHeight: this.$util.getWXStatusHeight(),
  201. confirmShow: false,
  202. info: {},
  203. refundSum: '',
  204. orderNo: '',
  205. orderInfo: {}
  206. };
  207. },
  208. onShow() {
  209. let self = this
  210. // #ifdef H5
  211. this.$nextTick(function() {
  212. var clipboard = new ClipboardJS('.copy-data');
  213. // var copybtn = document.getElementsByClassName("copy-data");
  214. // var clipboard = new Clipboard(copybtn);
  215. clipboard.on('success', function(e) {
  216. self.$util.Tips({
  217. title: '复制成功'
  218. })
  219. });
  220. clipboard.on('error', function(e) {
  221. self.$util.Tips({
  222. title: '复制失败'
  223. })
  224. });
  225. });
  226. // #endif
  227. this.initOrderInfo(this.orderNo)
  228. },
  229. onLoad(options) {
  230. //this.orderNo = options.orderNo
  231. this.orderInfo=JSON.parse(options.orderInfo);
  232. console.log(options.orderInfo)
  233. this.initOrderInfo(this.orderInfo.orderNo)
  234. },
  235. onPageScroll(e) {
  236. // #ifdef MP || APP-PLUS
  237. if (e.scrollTop > 50) {
  238. this.iconColor = '#333333';
  239. this.isScrolling = true;
  240. } else {
  241. this.iconColor = '#FFFFFF';
  242. this.isScrolling = false;
  243. }
  244. // #endif
  245. },
  246. methods: {
  247. hsPopupClose() {
  248. this.$refs.hs_popup.close()
  249. },
  250. toRecycle() {
  251. printReceipt(this.info.orderNo).then(res => {
  252. if (res.code == 200) {
  253. this.$util.Tips({
  254. title: '操作成功'
  255. })
  256. this.$refs.hs_popup.close()
  257. }
  258. })
  259. },
  260. hsPopupClose() {
  261. this.$refs.hs_popup.close()
  262. },
  263. print() {
  264. this.$refs.hs_popup.open('center')
  265. },
  266. //更多
  267. toMore() {
  268. this.moreShow = !this.moreShow
  269. },
  270. initOrderInfo(orderNo) {
  271. expressOrderInfo(orderNo).then(res => {
  272. this.info = res.data
  273. let refundSum = 0
  274. let detailList = this.info.orderDetailList
  275. detailList.forEach(item => {
  276. refundSum += item.refundNum
  277. })
  278. this.refundSum = refundSum
  279. })
  280. },
  281. //核销
  282. verify() {
  283. orderGetVerfication({
  284. verifyCode: this.info.verifyCode
  285. }).then(res => {
  286. if (res.code == 200) {
  287. uni.navigateTo({
  288. url: `/pages/admin/cancel/list?info=${JSON.stringify(res.data)}&verifyCode=${this.info.verifyCode}`
  289. })
  290. } else {
  291. this.$util.Tips({
  292. title: res.message
  293. });
  294. }
  295. })
  296. },
  297. //发货
  298. goDelivery(info) {
  299. if (info.refundStatus == 1) return this.$util.Tips({
  300. title: '请处理售后,再操作',
  301. });
  302. uni.navigateTo({
  303. url: `/pages/admin/order/send?orderNo=${this.info.orderNo}`
  304. })
  305. },
  306. //发货记录
  307. goLogistics(info) {
  308. if (info.secondType == 2) {
  309. uni.navigateTo({
  310. url: `/pages/admin/logistics/record?orderNo=${this.orderNo}&index=0&secodeType=2`
  311. })
  312. } else {
  313. orderInvoiceListInfo(info.orderNo).then(res => {
  314. uni.navigateTo({
  315. url: `/pages/admin/logistics/index?orderNo=${info.orderNo}`
  316. })
  317. })
  318. }
  319. },
  320. modify: function(status, type) {
  321. if (status == 2) {
  322. this.isRefund = type
  323. uni.navigateTo({
  324. url: `/pages/admin/refund/index?orderNo=${this.info.orderNo}&type=${this.info.type}`
  325. })
  326. } else {
  327. this.change = true;
  328. this.status = status;
  329. }
  330. },
  331. async savePrice(opt) {
  332. if (!opt.remark) {
  333. return this.$util.Tips({
  334. title: '请输入备注'
  335. })
  336. } else {
  337. this.toMark(this.info.orderNo, opt.remark)
  338. }
  339. },
  340. //备注
  341. toMark(orderNo, remark) {
  342. employeeOrderMark({
  343. orderNo,
  344. remark
  345. }).then(res => {
  346. res.code == 200 && (this.change = false);
  347. this.initOrderInfo(this.info.orderNo)
  348. return this.$util.Tips({
  349. title: '备注成功'
  350. })
  351. })
  352. },
  353. changeclose: function(msg) {
  354. this.change = msg;
  355. },
  356. //复制
  357. // #ifdef MP
  358. copyNum(id) {
  359. uni.setClipboardData({
  360. data: id,
  361. success: function() {}
  362. });
  363. },
  364. // #endif
  365. // #ifdef H5
  366. webCopy(item, index) {
  367. let items = item
  368. let indexs = index
  369. let self = this
  370. if (self.clickNum == 1) {
  371. self.clickNum += 1
  372. self.webCopy(items, indexs)
  373. }
  374. },
  375. // #endif
  376. }
  377. };
  378. </script>
  379. <style lang="scss" scoped>
  380. .headerBg {
  381. position: absolute;
  382. top: 0;
  383. left: 0;
  384. width: 100%;
  385. background-image: linear-gradient(360deg, #F5F5F5 0%, rgba(245, 245, 245, 0) 100%),
  386. linear-gradient(270deg, #01ABF8 0%, #2A7EFB 100%);
  387. background-position: left bottom, left top;
  388. background-repeat: no-repeat;
  389. background-size: 100% 120rpx, 100% 100%;
  390. .inner {
  391. height: 356rpx;
  392. }
  393. }
  394. .order-detail {
  395. position: absolute;
  396. width: 100%;
  397. padding: 0 20rpx;
  398. }
  399. .height-add {
  400. height: calc(120rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  401. height: calc(120rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  402. }
  403. .giveGoods {
  404. .item {
  405. padding: 14rpx 30rpx 14rpx 0;
  406. margin-left: 30rpx;
  407. border-top: 1px solid #eee;
  408. .picTxt {
  409. .pictrue {
  410. width: 76rpx;
  411. height: 76rpx;
  412. border-radius: 6rpx;
  413. background-color: #F5F5F5;
  414. color: #2a7efb;
  415. .iconfont {
  416. font-size: 34rpx;
  417. }
  418. image {
  419. width: 100%;
  420. height: 100%;
  421. border-radius: 6rpx;
  422. }
  423. margin-right: 16rpx;
  424. }
  425. .texts {
  426. width: 360rpx;
  427. color: #999999;
  428. font-size: 20rpx;
  429. .name {
  430. color: #333;
  431. }
  432. .limit {
  433. font-size: 20rpx;
  434. margin-top: 4rpx;
  435. }
  436. }
  437. }
  438. .num {
  439. color: #999999;
  440. font-size: 20rpx;
  441. }
  442. }
  443. }
  444. .splitTitle {
  445. width: 100%;
  446. height: 80rpx;
  447. background-color: #fff;
  448. margin-top: 17rpx;
  449. border-bottom: 1px solid #e5e5e5;
  450. padding: 0 30rpx;
  451. }
  452. .splitTitle .title {
  453. color: #2291f8;
  454. }
  455. /*商户管理订单详情*/
  456. .pos-order-details .header {
  457. // background: linear-gradient(270deg, #1cd1dc 0%, #2291f8 100%);
  458. }
  459. .pos-order-details .header .state {}
  460. .pos-order-details .header .data {}
  461. .pos-order-details .header .data .order-num {
  462. font-size: 26upx;
  463. margin-bottom: 8upx;
  464. }
  465. .pos-order-details .remarks {
  466. width: 710rpx;
  467. height: 100rpx;
  468. background: #FFFFFF;
  469. border-radius: 14rpx;
  470. display: flex;
  471. padding-left: 32rpx;
  472. border-radius: 24rpx;
  473. background: #FFFFFF;
  474. }
  475. .pos-order-details .remarks .iconfont {
  476. font-size: 32rpx;
  477. color: #000000;
  478. }
  479. .pos-order-details .remarks input {
  480. flex: 1;
  481. height: 100rpx;
  482. padding-left: 20rpx;
  483. font-size: 28rpx;
  484. }
  485. .pos-order-details .remarks input::placeholder {
  486. color: #CCCCCC;
  487. }
  488. .pos-order-details .orderingUser {
  489. font-size: 26upx;
  490. color: #282828;
  491. padding: 0 30upx;
  492. height: 67upx;
  493. background-color: #fff;
  494. margin-top: 16upx;
  495. border-bottom: 1px solid #f5f5f5;
  496. }
  497. .pos-order-details .orderingUser .iconfont {
  498. font-size: 40upx;
  499. color: #2a7efb;
  500. margin-right: 15upx;
  501. }
  502. .pos-order-details .address {
  503. margin-top: 0;
  504. }
  505. .pos-order-details .footer .more {
  506. font-size: 27upx;
  507. color: #aaa;
  508. width: 100upx;
  509. height: 64upx;
  510. text-align: center;
  511. line-height: 64upx;
  512. margin-right: 25upx;
  513. position: relative;
  514. }
  515. .pos-order-details .footer .delivery {
  516. border-color: #2A7EFB !important;
  517. background: #2A7EFB;
  518. color: #FFFFFF !important;
  519. }
  520. .pos-order-details .footer .more .order .arrow {
  521. width: 0;
  522. height: 0;
  523. border-left: 11upx solid transparent;
  524. border-right: 11upx solid transparent;
  525. border-top: 20upx solid #e5e5e5;
  526. position: absolute;
  527. left: 15upx;
  528. bottom: -18upx;
  529. }
  530. .pos-order-details .footer .more .order .arrow:before {
  531. content: '';
  532. width: 0;
  533. height: 0;
  534. border-left: 9upx solid transparent;
  535. border-right: 9upx solid transparent;
  536. border-top: 19upx solid #fff;
  537. position: absolute;
  538. left: -10upx;
  539. bottom: 0;
  540. }
  541. .pos-order-details .footer .more .order {
  542. width: 200upx;
  543. background-color: #fff;
  544. border: 1px solid #eee;
  545. border-radius: 10upx;
  546. position: absolute;
  547. top: -200upx;
  548. z-index: 9;
  549. }
  550. .pos-order-details .footer .more .order .item {
  551. height: 77upx;
  552. line-height: 77upx;
  553. }
  554. .pos-order-details .footer .more .order .item~.item {
  555. border-top: 1px solid #f5f5f5;
  556. }
  557. .pos-order-details .footer .more .moreName {
  558. width: 100%;
  559. height: 100%;
  560. }
  561. /*订单详情*/
  562. .order-detail .header {
  563. padding: 48rpx 0 30rpx 12rpx;
  564. }
  565. .order-detail .header.on {
  566. background-color: #666 !important;
  567. }
  568. .order-detail .header .pictrue {
  569. width: 110upx;
  570. height: 110upx;
  571. }
  572. .order-detail .header .pictrue image {
  573. width: 100%;
  574. height: 100%;
  575. }
  576. .order-detail .header .state {
  577. font-weight: 500;
  578. font-size: 36rpx;
  579. line-height: 50rpx;
  580. color: #FFFFFF;
  581. }
  582. .order-detail .header .data {
  583. margin-top: 8rpx;
  584. font-size: 26rpx;
  585. line-height: 36rpx;
  586. color: #FFFFFF;
  587. }
  588. .order-detail .header.on .data {
  589. margin-left: 0;
  590. }
  591. .order-detail .header .data .time {
  592. margin-left: 20rpx;
  593. }
  594. .order-detail .header .data .state {
  595. font-size: 30upx;
  596. font-weight: bold;
  597. color: #fff;
  598. margin-bottom: 7upx;
  599. }
  600. /* .order-details .header .data .time{margin-left:20upx;} */
  601. .order-detail .nav {
  602. background-color: #fff;
  603. font-size: 26upx;
  604. color: #282828;
  605. padding: 25upx 0;
  606. }
  607. .order-detail .nav .navCon {
  608. padding: 0 40upx;
  609. }
  610. .order-detail .nav .navCon .on {
  611. font-weight: bold;
  612. color: #e93323;
  613. }
  614. .order-detail .nav .progress {
  615. padding: 0 65upx;
  616. margin-top: 10upx;
  617. }
  618. .order-detail .nav .progress .line {
  619. width: 100upx;
  620. height: 2upx;
  621. background-color: #939390;
  622. }
  623. .order-detail .nav .progress .iconfont {
  624. font-size: 25upx;
  625. color: #939390;
  626. margin-top: -2upx;
  627. width: 30upx;
  628. height: 30upx;
  629. line-height: 33upx;
  630. text-align: center;
  631. margin-right: 0 !important;
  632. }
  633. .order-detail .address {
  634. position: relative;
  635. padding: 32rpx 32rpx 40rpx;
  636. border-radius: 24rpx;
  637. margin-top: 20rpx;
  638. background: #FFFFFF;
  639. overflow: hidden;
  640. font-size: 24rpx;
  641. line-height: 34rpx;
  642. color: #999999;
  643. }
  644. .order-detail .address .name {
  645. margin-bottom: 12rpx;
  646. font-weight: 500;
  647. font-size: 30rpx;
  648. line-height: 42rpx;
  649. color: #333333;
  650. }
  651. .order-detail .address .name .iconfont {
  652. margin-right: 8rpx;
  653. font-size: 32rpx;
  654. }
  655. .order-detail .address .name .phone {
  656. margin-left: 40upx;
  657. }
  658. .order-detail .line {
  659. position: absolute;
  660. bottom: 0;
  661. left: 0;
  662. width: 100%;
  663. height: 4rpx;
  664. }
  665. .order-detail .line image {
  666. width: 100%;
  667. height: 100%;
  668. display: block;
  669. }
  670. .order-detail .wrapper {
  671. padding: 32rpx 24rpx;
  672. border-radius: 24rpx;
  673. margin-top: 20rpx;
  674. background: #FFFFFF;
  675. }
  676. .order-detail .wrapper .item {
  677. font-size: 28rpx;
  678. line-height: 40rpx;
  679. color: #333333;
  680. }
  681. .order-detail .wrapper .item~.item {
  682. margin-top: 24rpx;
  683. }
  684. .order-detail .wrapper .item .conter {
  685. // color: #868686;
  686. // width: 468rpx;
  687. // display: flex;
  688. // flex-wrap: nowrap;
  689. // justify-content: flex-end;
  690. // text-align: right;
  691. .pictrue {
  692. width: 80rpx;
  693. height: 80rpx;
  694. margin-left: 6rpx;
  695. image {
  696. width: 100%;
  697. height: 100%;
  698. border-radius: 6rpx;
  699. }
  700. }
  701. }
  702. .order-detail .wrapper .item .conter .copy {
  703. height: 36rpx;
  704. padding: 0 12rpx;
  705. border: 0;
  706. border-radius: 18rpx;
  707. margin-left: 8rpx;
  708. background: #F5F5F5;
  709. font-size: 22rpx;
  710. line-height: 36rpx;
  711. color: #333333;
  712. }
  713. .order-detail .wrapper .actualPay {
  714. margin-top: 26rpx;
  715. align-items: center;
  716. }
  717. .order-detail .wrapper .actualPay .money {
  718. font-weight: bold;
  719. font-size: 30upx;
  720. color: #e93323;
  721. }
  722. .order-detail .footer {
  723. width: 100%;
  724. height: 100upx;
  725. position: fixed;
  726. bottom: 0;
  727. left: 0;
  728. background-color: #fff;
  729. padding: 0 30upx;
  730. border-top: 1px solid #eee;
  731. height: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  732. height: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  733. padding-bottom: calc(0rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  734. padding-bottom: calc(0rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  735. }
  736. .order-detail .footer .wait {
  737. color: #2a7efb;
  738. margin-right: 30rpx;
  739. }
  740. .order-detail .footer .bnt {
  741. width: 144rpx;
  742. height: 56rpx;
  743. border: 1rpx solid #CCCCCC;
  744. line-height: 54rpx;
  745. text-align: center;
  746. border-radius: 28rpx;
  747. font-size: 24rpx;
  748. color: #333333;
  749. transform: rotateZ(360deg);
  750. &.on {
  751. color: #c5c8ce !important;
  752. background: #f7f7f7 !important;
  753. border: 1px solid #dcdee2 !important;
  754. }
  755. }
  756. .order-detail .footer .bnt.cancel {
  757. // color: #333333;
  758. // border: 1px solid #CCCCCC;
  759. }
  760. .order-detail .footer .bnt.default {
  761. color: #444;
  762. border: 1px solid #444;
  763. }
  764. .order-detail .footer .bnt~.bnt {
  765. margin-left: 16rpx;
  766. }
  767. .pos-order-goods {
  768. padding: 32rpx 24rpx;
  769. border-radius: 24rpx;
  770. background: #FFFFFF;
  771. }
  772. .pos-order-goods.split {
  773. margin-top: 20rpx;
  774. }
  775. .pos-order-goods .title {
  776. height: 40rpx;
  777. margin-bottom: 32rpx;
  778. font-size: 28rpx;
  779. color: #333333;
  780. }
  781. .pos-order-goods .title .btn {
  782. font-size: 26rpx;
  783. color: #999999;
  784. }
  785. .pos-order-goods .title .btn .iconfont {
  786. font-size: 24rpx;
  787. }
  788. .pos-order-goods.split .goods {}
  789. .pos-order-goods .goods~.goods {
  790. margin-top: 32rpx;
  791. }
  792. .pos-order-goods .goods .picTxt {
  793. flex: 1;
  794. min-width: 0;
  795. }
  796. .pos-order-goods .goods .picTxt .pictrue {
  797. width: 136rpx;
  798. height: 136rpx;
  799. }
  800. .pos-order-goods .goods .picTxt .pictrue image {
  801. width: 100%;
  802. height: 100%;
  803. border-radius: 16rpx;
  804. }
  805. .pos-order-goods .goods .picTxt .text {
  806. flex: 1;
  807. min-width: 0;
  808. padding-left: 20rpx;
  809. }
  810. .pos-order-goods .goods .picTxt .text .info {
  811. font-size: 28rpx;
  812. line-height: 40rpx;
  813. color: #333333;
  814. }
  815. .pos-order-goods .goods .picTxt .text .info .label {
  816. color: #ff4c3c;
  817. }
  818. .pos-order-goods .goods .picTxt .text .attr {
  819. margin-top: 8rpx;
  820. font-size: 24rpx;
  821. line-height: 34rpx;
  822. color: #999999;
  823. }
  824. .pos-order-goods .goods .money {
  825. width: 144rpx;
  826. text-align: right;
  827. }
  828. .pos-order-goods .goods .money .writeOff {
  829. font-size: 24upx;
  830. margin-top: 17upx;
  831. color: #1890FF;
  832. }
  833. .pos-order-goods .goods .money .writeOff .on {
  834. color: #FF7E00;
  835. }
  836. .pos-order-goods .goods .money .x-money {
  837. color: #282828;
  838. }
  839. .pos-order-goods .goods .money .num {
  840. margin-top: 10rpx;
  841. font-size: 24rpx;
  842. line-height: 34rpx;
  843. color: #999999;
  844. }
  845. .pos-order-goods .goods .money .y-money {
  846. color: #999;
  847. text-decoration: line-through;
  848. }
  849. .public-total {
  850. font-size: 28upx;
  851. color: #282828;
  852. border-top: 1px solid #eee;
  853. height: 92upx;
  854. line-height: 92upx;
  855. text-align: right;
  856. padding: 0 30upx;
  857. background-color: #fff;
  858. }
  859. .public-total .money {
  860. color: #ff4c3c;
  861. }
  862. .copy-data {
  863. font-size: 10px;
  864. color: #333;
  865. -webkit-border-radius: 1px;
  866. border-radius: 1px;
  867. border: 1px solid #666;
  868. padding: 0px 7px;
  869. margin-left: 12px;
  870. height: 20px;
  871. }
  872. .pos-order-goods .mark {
  873. margin-top: 32rpx;
  874. font-size: 28rpx;
  875. line-height: 40rpx;
  876. color: #333333;
  877. .value {
  878. flex: 1;
  879. }
  880. }
  881. .mask {
  882. z-index: 21;
  883. }
  884. .confirm-popup {
  885. position: fixed;
  886. top: 50%;
  887. right: 75rpx;
  888. left: 75rpx;
  889. z-index: 21;
  890. transform: translateY(-50%);
  891. border-radius: 32rpx;
  892. background: #FFFFFF;
  893. text-align: center;
  894. .title {
  895. padding: 40rpx 32rpx 0;
  896. font-weight: 500;
  897. font-size: 32rpx;
  898. line-height: 52rpx;
  899. color: #333333;
  900. }
  901. .info {
  902. padding: 24rpx 40rpx 0;
  903. font-size: 30rpx;
  904. line-height: 42rpx;
  905. color: #666666;
  906. }
  907. .btn-box {
  908. padding: 40rpx;
  909. }
  910. .btn {
  911. flex: 1;
  912. height: 72rpx;
  913. border: 1rpx solid #2A7EFB;
  914. border-radius: 36rpx;
  915. margin-left: 32rpx;
  916. font-weight: 500;
  917. font-size: 26rpx;
  918. line-height: 70rpx;
  919. color: #2A7EFB;
  920. transform: rotateZ(360deg);
  921. &.primary {
  922. background: #2A7EFB;
  923. color: #FFFFFF;
  924. }
  925. }
  926. }
  927. .user-box {
  928. padding: 24rpx;
  929. border-radius: 24rpx;
  930. margin-top: 20rpx;
  931. background: #FFFFFF;
  932. .image {
  933. width: 80rpx;
  934. height: 80rpx;
  935. border-radius: 50%;
  936. }
  937. .text {
  938. flex: 1;
  939. padding-left: 20rpx;
  940. font-size: 24rpx;
  941. line-height: 34rpx;
  942. color: #999999;
  943. }
  944. .name {
  945. margin-bottom: 4rpx;
  946. font-weight: 500;
  947. font-size: 28rpx;
  948. line-height: 40rpx;
  949. color: #333333;
  950. }
  951. .svip {
  952. width: 56rpx;
  953. height: 26rpx;
  954. border-radius: 14rpx;
  955. margin-left: 12rpx;
  956. background: linear-gradient(90deg, #484643 0%, #1F1B17 100%);
  957. text-align: center;
  958. font-weight: 600;
  959. font-size: 18rpx;
  960. line-height: 26rpx;
  961. color: #FDDAA4;
  962. }
  963. .grade {
  964. height: 26rpx;
  965. padding: 0 10rpx;
  966. border: 1rpx solid #FACC7D;
  967. border-radius: 14rpx;
  968. margin-left: 10rpx;
  969. background: #FEF0D9;
  970. font-weight: 500;
  971. font-size: 18rpx;
  972. line-height: 24rpx;
  973. color: #DFA541;
  974. transform: rotateZ(360deg);
  975. .iconfont {
  976. margin-right: 6rpx;
  977. font-size: 18rpx;
  978. }
  979. }
  980. }
  981. .tomore {
  982. font-weight: 400;
  983. font-size: 24rpx;
  984. color: #333333;
  985. margin-right: 20rpx;
  986. position: relative;
  987. }
  988. .more-operate {
  989. position: absolute;
  990. top: -120rpx;
  991. left: -50rpx;
  992. width: 150rpx;
  993. height: 100rpx;
  994. background: #fff;
  995. border: 1px solid #eee;
  996. border-radius: 10rpx;
  997. .sjx {
  998. width: 16rpx;
  999. height: 16rpx;
  1000. background: #fff;
  1001. border: 1px solid #eee;
  1002. position: absolute;
  1003. top: 92rpx;
  1004. left: 68rpx;
  1005. transform: rotateZ(45deg);
  1006. }
  1007. .more-operate-item {
  1008. font-size: 24rpx;
  1009. color: #333333;
  1010. text-align: center;
  1011. height: 50rpx;
  1012. line-height: 50rpx;
  1013. }
  1014. }
  1015. /deep/ .uni-popup__wrapper {
  1016. width: 600rpx;
  1017. height: 310rpx;
  1018. background: #FFFFFF;
  1019. border-radius: 14rpx;
  1020. }
  1021. .sh_popup-content {
  1022. // border-radius: 14rpx;
  1023. // padding-bottom: 20rpx;
  1024. .sh_popup_title {
  1025. font-weight: 500;
  1026. font-size: 32rpx;
  1027. color: #333333;
  1028. text-align: center;
  1029. margin-top: 40rpx;
  1030. }
  1031. .sh_popup_text {
  1032. font-weight: 400;
  1033. font-size: 30rpx;
  1034. color: #666666;
  1035. text-align: center;
  1036. margin-top: 30rpx;
  1037. }
  1038. .sh_popup_btn {
  1039. display: flex;
  1040. justify-content: space-between;
  1041. margin-top: 40rpx;
  1042. padding: 0 47rpx;
  1043. .btn {
  1044. width: 244rpx;
  1045. height: 72rpx;
  1046. border-radius: 50rpx;
  1047. text-align: center;
  1048. line-height: 72rpx;
  1049. }
  1050. .no_btn {
  1051. border: 1px solid #2A7EFB;
  1052. color: #2A7EFB;
  1053. }
  1054. .yes_btn {
  1055. background: #2A7EFB;
  1056. color: #FFFFFF;
  1057. }
  1058. }
  1059. }
  1060. .info-text {
  1061. display: flex;
  1062. flex-direction: column;
  1063. justify-content: space-between;
  1064. }
  1065. .line1 {
  1066. width: 90%;
  1067. }
  1068. .order-details .wrapper {
  1069. padding: 0;
  1070. }
  1071. .fast-box {
  1072. padding: 30rpx;
  1073. border-radius: 23rpx;
  1074. background-color: #fff;
  1075. margin-bottom: 10rpx;
  1076. .qie-ge {
  1077. border-bottom: 2rpx solid #D6D7DC;
  1078. }
  1079. .fast-item {
  1080. position: relative;
  1081. padding: 20rpx;
  1082. background-color: #F8F9FB;
  1083. margin-bottom: 20rpx;
  1084. .lx-ly {
  1085. font-weight: 500;
  1086. font-size: 23rpx;
  1087. color: #141414;
  1088. }
  1089. }
  1090. .radios {
  1091. position: absolute;
  1092. left: 38rpx;
  1093. }
  1094. .fast-remark {
  1095. font-weight: 400;
  1096. font-size: 21rpx;
  1097. color: #999999;
  1098. view {
  1099. margin-bottom: 10rpx;
  1100. }
  1101. }
  1102. .fast-yz {
  1103. font-weight: 500;
  1104. font-size: 21rpx;
  1105. color: #141414;
  1106. text {
  1107. color: #FF0202;
  1108. margin-left: 20rpx;
  1109. }
  1110. }
  1111. .fast-xx {
  1112. font-weight: 400;
  1113. font-size: 21rpx;
  1114. color: #646464;
  1115. margin: 10rpx 0;
  1116. }
  1117. .bg-color-cash {
  1118. margin-top: 30rpx;
  1119. color: $bg-color-primary;
  1120. .fast-cash {
  1121. font-weight: 600;
  1122. font-size: 27rpx;
  1123. color: #FF6702;
  1124. }
  1125. }
  1126. }
  1127. </style>