detail.vue 26 KB

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