index.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047
  1. <template>
  2. <view :data-theme="theme">
  3. <view class='order-details'>
  4. <!-- 给header上与data上加on为退款订单-->
  5. <view class='header bg_color on'>
  6. <view class='picTxt acea-row row-middle'>
  7. <view class='data on'>
  8. <view class="acea-row row-middle mb20">
  9. <view class='state line-heightOne'>{{refundInfo.refundStatus | refundStatusFilter}}</view>
  10. <view v-show="refundInfo.refundStatus===3"><text class="font-color refundPrice">{{refundInfo.refundPrice}}元</text></view>
  11. </view>
  12. <view class="mb30 line2" v-if="refundInfo.refundStatus===1">{{refundInfo.refundReason}}</view>
  13. <view v-else class="mb30">{{refundInfo.refundStatus | orderRefundTipsStatusFilter}}</view>
  14. </view>
  15. </view>
  16. </view>
  17. <!-- 商品详情 -->
  18. <view class="borderPad margin-100">
  19. <view class="borRadius14 wrapper">
  20. <orderGoods :isShowBtn="false" :refundInfo="refundInfo" :cartInfo="[refundInfo]" :jump="true" :orderData="refundInfo">
  21. </orderGoods>
  22. <view class="borderPad">
  23. <view class="return_info">
  24. <view class='item acea-row row-between line-heightOne'>
  25. <view>退款件数:</view>
  26. <view class='conter'>{{refundInfo.applyRefundNum}}</view>
  27. </view>
  28. <view class='item acea-row row-between line-heightOne'>
  29. <view>退款金额:</view>
  30. <view class='conter'>¥{{refundInfo.refundPrice}}</view>
  31. </view>
  32. <view class='item acea-row row-between line-heightOne'>
  33. <view>退款方式:</view>
  34. <view class='conter'>原路返回</view>
  35. </view>
  36. <view class='item acea-row row-between line-heightOne'>
  37. <view>退款原因:</view>
  38. <view v-if="refundInfo.promoterType==='user'" class='conter'>{{refundInfo.refundReasonWap}}</view>
  39. <view v-else class='conter'>商家直接退款</view>
  40. </view>
  41. </view>
  42. </view>
  43. </view>
  44. </view>
  45. <!-- 商家店铺地址 -->
  46. <view v-if="refundInfo.returnGoodsType ===2 && merAddress && refundInfo.refundStatus>0" class="borderPad">
  47. <view class="borRadius14 wrapper return_info_pad">
  48. <view class='item acea-row row-between mb30'>
  49. <view>商家退回地址:</view>
  50. <view class='conter acea-row row-middle row-right'>
  51. <!-- #ifndef H5 -->
  52. <text class='copy line-heightOne' @tap="copy(merAddress.name+','+merAddress.phone+','+merAddress.addressDetail)">复制</text>
  53. <!-- #endif -->
  54. <!-- #ifdef H5 -->
  55. <text class='copy copy-data line-heightOne' :data-clipboard-text="merAddress.name+','+merAddress.phone+','+merAddress.addressDetail">复制</text>
  56. <!-- #endif -->
  57. </view>
  58. </view>
  59. <view class="text-2828 f-s-26 mb20">
  60. <text class="text-2828">{{merAddress.name}}</text>
  61. <text>{{merAddress.phone}}</text>
  62. </view>
  63. <view class="text-666 f-s-26 addressDetail">{{merAddress.addressDetail}}</view>
  64. </view>
  65. </view>
  66. <!-- 商家退回地址 -->
  67. <view v-if="refundInfo.returnGoodsType ===1 && refundInfo.refundStatus>0 &&refundInfo.receiver&&refundInfo.receiverPhone&&refundInfo.receiverAddressDetail"
  68. class="borderPad">
  69. <view class="borRadius14 wrapper return_info_pad">
  70. <view class='item acea-row row-between mb30'>
  71. <view>商家退回地址:</view>
  72. <view class='conter acea-row row-middle row-right'>
  73. <!-- #ifndef H5 -->
  74. <text class='copy line-heightOne' @tap="copy(refundInfo.receiver+','+refundInfo.receiverPhone+','+refundInfo.receiverAddressDetail)">复制</text>
  75. <!-- #endif -->
  76. <!-- #ifdef H5 -->
  77. <text class='copy copy-data line-heightOne' :data-clipboard-text="refundInfo.receiver+','+refundInfo.receiverPhone+','+refundInfo.receiverAddressDetail">复制</text>
  78. <!-- #endif -->
  79. </view>
  80. </view>
  81. <view class="text-2828 f-s-26 mb20">
  82. <text class="text-2828">{{refundInfo.receiver}}</text>
  83. <text>{{refundInfo.receiverPhone}}</text>
  84. </view>
  85. <view class="text-666 f-s-26 addressDetail">{{refundInfo.receiverAddressDetail}}</view>
  86. </view>
  87. </view>
  88. <!-- 退款订单详情 "-->
  89. <view class="borderPad">
  90. <view class='wrapper borRadius14 return_info_pad'>
  91. <view class='item acea-row row-between '>
  92. <view>订单单号:</view>
  93. <view class='conter acea-row row-middle row-right'><text class="text-overflow">{{refundInfo.orderNo}}</text>
  94. <!-- #ifndef H5 -->
  95. <text class='copy line-heightOne' @tap='copy(refundInfo.orderNo)'>复制</text>
  96. <!-- #endif -->
  97. <!-- #ifdef H5 -->
  98. <text class='copy copy-data line-heightOne' :data-clipboard-text="refundInfo.orderNo">复制</text>
  99. <!-- #endif -->
  100. </view>
  101. </view>
  102. <view class='item acea-row row-between'>
  103. <view>售后单号:</view>
  104. <view class='conter acea-row row-middle row-right'><text class="text-overflow">{{refundInfo.refundOrderNo}}</text>
  105. <!-- #ifndef H5 -->
  106. <text class='copy line-heightOne' @tap='copy(refundInfo.refundOrderNo)'>复制</text>
  107. <!-- #endif -->
  108. <!-- #ifdef H5 -->
  109. <text class='copy copy-data line-heightOne' :data-clipboard-text="refundInfo.refundOrderNo">复制</text>
  110. <!-- #endif -->
  111. </view>
  112. </view>
  113. <view class='item acea-row row-between'>
  114. <view>申请时间:</view>
  115. <view class='conter'>{{(refundInfo.createTime || 0)}}</view>
  116. </view>
  117. <view class='item acea-row row-between'>
  118. <view>售后类型:</view>
  119. <view class='conter'>{{refundInfo.afterSalesType===1?'仅退款':'退货退款'}}</view>
  120. </view>
  121. <view class='item acea-row row-between'>
  122. <view>退回方式:</view>
  123. <view class='conter'>
  124. {{refundInfo.returnGoodsType===1?'快递退回':refundInfo.returnGoodsType===2?'到店退货':'不退货'}}</view>
  125. </view>
  126. <view class='item acea-row row-between' v-if="refundInfo.refundReasonWapExplain">
  127. <view>备注说明:</view>
  128. <view class='conter-refund text-left'>{{refundInfo.refundReasonWapExplain}}</view>
  129. </view>
  130. <view class='item acea-row row-between' v-if="refundInfo.refundReasonWapImg">
  131. <view>售后凭证:</view>
  132. <view class='conter-refund text-left'>
  133. <image class="wapImg" :src="item" v-for="item in refundInfo.refundReasonWapImg.split(',')" :key='item.id'></image>
  134. </view>
  135. </view>
  136. </view>
  137. </view>
  138. <!-- 用户到店退回信息 -->
  139. <view v-if="refundInfo.returnGoodsType ===2 && refundInfo.refundStatus>0 && refundInfo.telephone" class="borderPad">
  140. <view class="borRadius14 wrapper return_info_pad">
  141. <view class='item acea-row row-between'>
  142. <view>联系电话:</view>
  143. <view class='conter'>{{refundInfo.telephone}}</view>
  144. </view>
  145. </view>
  146. </view>
  147. <!-- 用户发货信息 -->
  148. <view v-if="refundInfo.returnGoodsType ===1 && refundInfo.refundStatus>0 && refundInfo.expressName && refundInfo.trackingNumber"
  149. class="borderPad">
  150. <view class="borRadius14 wrapper return_info_pad">
  151. <view class='item acea-row row-between mb30'>
  152. <view>物流公司:</view>
  153. <view class='conter'>{{refundInfo.expressName}}</view>
  154. </view>
  155. <view class='item acea-row row-between mb30'>
  156. <view>物流单号:</view>
  157. <view class='conter acea-row row-middle row-right'>
  158. <text class="text-overflow">{{refundInfo.trackingNumber}}</text>
  159. <!-- #ifndef H5 -->
  160. <text class='copy line-heightOne' @tap='copy(refundInfo.trackingNumber)'>复制</text>
  161. <!-- #endif -->
  162. <!-- #ifdef H5 -->
  163. <text class='copy copy-data line-heightOne' :data-clipboard-text="refundInfo.trackingNumber">复制</text>
  164. <!-- #endif -->
  165. </view>
  166. </view>
  167. <view class='item acea-row row-between'>
  168. <view>联系电话:</view>
  169. <view class='conter'>{{refundInfo.telephone}}</view>
  170. </view>
  171. </view>
  172. </view>
  173. <!-- 操作按钮 "-->
  174. <view v-if="refundInfo.refundStatus === 0 || refundInfo.refundStatus === 4 || refundInfo.refundStatus === 5" class="borderPad">
  175. <view class='wrapper borRadius14 return_info_pad btn-box acea-row' style="justify-content: flex-end;">
  176. <view></view>
  177. <view v-if="orderTypeId == 10 && refundInfo.refundStatus === 0" class="btn btn-999 acea-row row-center line-heightOne mr-20" @click="handleRevokeAudit(refundInfo.refundOrderNo, false)">审核不通过</view>
  178. <view v-if="refundInfo.refundStatus === 0 || refundInfo.refundStatus === 4 || refundInfo.refundStatus === 5"
  179. :class="orderTypeId == 10 ? 'bg-tk-color' : 'btn-999'" class="btn" @click="orderTypeId == 10 ? handleRevokeAudit(refundInfo.refundOrderNo, pictrue) : handleRevokeRefund(refundInfo.refundOrderNo)">{{orderTypeId == 10 ? '审核通过' : '撤销售后'}}</view>
  180. <view v-if="refundInfo.refundStatus === 4 && refundInfo.afterSalesType === 2" style="color: #fff;" class="btn bg-color"
  181. @click="handleReturningRefund(refundInfo)">退回商品</view>
  182. </view>
  183. </view>
  184. </view>
  185. <uni-popup ref="rejectDialog" type="dialog">
  186. <view class="tui-modal-custom">
  187. <view class="fs-32 fw-500 lh-44rpx text-center">审核不通过原因</view>
  188. <view class="mt-24 bg--w111-f5f5f5 rd-16rpx p-24">
  189. <textarea class="w-full fs-26 h-342" ref="myTextarea" v-model="rejectText" :always-embed="true" :adjust-position="true"
  190. cursor-spacing="85rpx" placeholder="请输入审核不通过原因" :maxlength="100" name="desc" />
  191. </view>
  192. <view class="flex-between-center mt-40">
  193. <view class="w-244 h-72 rd-36rpx flex-center fs-26 font-color close-btn" @tap="handleInputClose">取消
  194. </view>
  195. <view class="w-244 h-72 rd-36rpx flex-center bg-color text--w111-fff fs-26"
  196. @tap="handleInputConfirm">保存
  197. </view>
  198. </view>
  199. </view>
  200. </uni-popup>
  201. </view>
  202. </template>
  203. <script>
  204. // +----------------------------------------------------------------------
  205. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  206. // +----------------------------------------------------------------------
  207. // | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
  208. // +----------------------------------------------------------------------
  209. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  210. // +----------------------------------------------------------------------
  211. // | Author: CRMEB Team <admin@crmeb.com>
  212. // +----------------------------------------------------------------------
  213. import {
  214. orderRefundInfoApi
  215. } from '@/api/order.js';
  216. import {
  217. refundSecondHandOkApi,
  218. returningSecondHandRejectApi,
  219. secondHandRefundInfoApi,
  220. returningSecondHandAuditApi
  221. } from '@/api/secondHand.js';
  222. import {
  223. onRevokeRefund
  224. } from '@/libs/order';
  225. import orderGoods from "../components/orderGoods";
  226. import {
  227. getMerAddressApi
  228. } from '@/api/merchant.js'
  229. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  230. import {
  231. toLogin
  232. } from '@/libs/login.js';
  233. import {
  234. mapGetters
  235. } from "vuex";
  236. // #ifdef MP
  237. import uQRCode from '@/js_sdk/Sansnn-uQRCode/uqrcode.js'
  238. // #endif
  239. import {
  240. setThemeColor
  241. } from '@/utils/setTheme.js'
  242. const app = getApp();
  243. export default {
  244. components: {
  245. orderGoods
  246. },
  247. data() {
  248. return {
  249. rejectText: '',
  250. orderType: '',
  251. orderTypeId: null,
  252. rejectOrder: '',
  253. merAddress: null, //店铺地址
  254. refundOrderNo: '',
  255. refundInfo: {}, //退款单详情
  256. theme: app.globalData.theme,
  257. chatConfig: {
  258. consumer_hotline: '',
  259. telephone_service_switch: 'false'
  260. }, //客服配置
  261. };
  262. },
  263. computed: mapGetters(['isLogin', 'chatUrl', 'userInfo']),
  264. onLoad: function(options) {
  265. options.type == undefined || options.type == null ? this.type = 'normal' : this.type = options.type;
  266. if (!options.refundOrderNo) return this.$util.Tips({
  267. title: '缺少参数'
  268. }, {
  269. tab: 3,
  270. url: 1
  271. });
  272. this.$set(this, 'refundOrderNo', options.refundOrderNo);
  273. this.$set(this, 'orderType', options.orderType);
  274. this.$set(this, 'orderTypeId', options.orderTypeId);
  275. this.bgColor = setThemeColor();
  276. this.$set(this, 'chatConfig', this.$Cache.getItem('chatConfig'));
  277. },
  278. onShow() {
  279. if (this.isLogin) {
  280. this.orderRefundInfo();
  281. } else {
  282. toLogin();
  283. }
  284. },
  285. onHide: function() {
  286. this.isClose = true;
  287. },
  288. // 滚动监听
  289. onPageScroll(e) {
  290. // 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
  291. uni.$emit('scroll');
  292. },
  293. onReady: function() {
  294. // #ifdef H5
  295. this.$nextTick(function() {
  296. const clipboard = new ClipboardJS(".copy-data");
  297. clipboard.on("success", () => {
  298. this.$util.Tips({
  299. title: '复制成功'
  300. });
  301. });
  302. });
  303. // #endif
  304. },
  305. methods: {
  306. //审核保存
  307. handleInputConfirm() {
  308. let that = this;
  309. if (!this.rejectText) return this.$util.Tips({
  310. title: '请输入审核不通过原因!'
  311. });
  312. uni.showLoading({
  313. title: '正在处理中'
  314. });
  315. let params = {
  316. refundOrderNo: this.rejectOrder,
  317. auditType: 'refuse',
  318. reason: this.rejectText
  319. }
  320. returningSecondHandAuditApi(params).then(res => {
  321. uni.hideLoading();
  322. return that.$util.Tips({
  323. title: '处理成功',
  324. icon: 'success'
  325. }, function() {
  326. that.orderRefundInfo();
  327. });
  328. }).catch(err => {
  329. return that.$util.Tips({
  330. title: err
  331. });
  332. });
  333. // 关闭窗口后,恢复默认内容
  334. this.$refs.rejectDialog.close()
  335. },
  336. //审核取消
  337. handleInputClose() {
  338. this.$refs.rejectDialog.close()
  339. },
  340. // 审核
  341. handleRevokeAudit(orderNo, type) {
  342. this.rejectOrder = orderNo;
  343. if (type) {
  344. uni.showLoading({
  345. title: '正在处理中'
  346. });
  347. returningSecondHandAuditApi({refundOrderNo: this.rejectOrder, auditType: 'success'}).then(res => {
  348. uni.hideLoading();
  349. return that.$util.Tips({
  350. title: '处理成功',
  351. icon: 'success'
  352. }, function() {
  353. that.orderRefundInfo();
  354. });
  355. }).catch(err => {
  356. return that.$util.Tips({
  357. title: err
  358. });
  359. });
  360. } else {
  361. this.$refs.rejectDialog.open();
  362. }
  363. },
  364. //店铺地址
  365. getMerAddress() {
  366. getMerAddressApi(this.refundInfo.merId).then(res => {
  367. this.$set(this, 'merAddress', res.data);
  368. }).catch(err => {
  369. return this.$util.Tips({
  370. title: err
  371. });
  372. })
  373. },
  374. //撤销售后
  375. handleRevokeRefund(refundOrderNo) {
  376. let that = this;
  377. onRevokeRefund(refundOrderNo, this.orderType).then(() => {
  378. this.orderRefundInfo()
  379. });
  380. },
  381. //退回商品
  382. handleReturningRefund(item) {
  383. this.$Cache.set('productInfo', item)
  384. let url =
  385. `/pages/goods/returns_and_refunds/index?refundOrderNo=${item.refundOrderNo}&returnGoodsType=${item.returnGoodsType}`;
  386. this.orderType == 'secondHand' ? url = url + '&orderType=secondHand' : ''
  387. uni.navigateTo({
  388. url: url
  389. })
  390. },
  391. kefuClick() {
  392. if (this.chatConfig.telephone_service_switch === 'true') {
  393. uni.makePhoneCall({
  394. phoneNumber: this.chatConfig.consumer_hotline //仅为示例
  395. });
  396. } else {
  397. // #ifdef APP-PLUS
  398. uni.navigateTo({
  399. url: '/pages/users/web_page/index?webUel=' + this.chatUrl + '&title=客服'
  400. })
  401. // #endif
  402. // #ifndef APP-PLUS
  403. location.href = this.chatUrl;
  404. // #endif
  405. }
  406. },
  407. /**
  408. * 拨打电话
  409. */
  410. makePhone: function(e) {
  411. uni.makePhoneCall({
  412. phoneNumber: e
  413. })
  414. },
  415. /**
  416. * 获取退款订单详细信息
  417. *
  418. */
  419. orderRefundInfo() {
  420. let that = this;
  421. uni.showLoading({
  422. title: "正在加载中"
  423. });
  424. let api = that.orderType == 'secondHand' ? secondHandRefundInfoApi : orderRefundInfoApi;
  425. api(that.refundOrderNo).then(res => {
  426. uni.hideLoading();
  427. let data = res.data;
  428. that.$set(that, 'refundInfo', data);
  429. //returnGoodsType 退货类型:0-不退货 1-快递退回,2-到店退货
  430. if (that.refundInfo.returnGoodsType === 2) that.getMerAddress();
  431. }).catch(err => {
  432. that.$util.Tips({
  433. title: err
  434. }, {
  435. tab: 4,
  436. url: '/pages/user/index'
  437. });
  438. });
  439. },
  440. /**
  441. *
  442. * 剪切订单号
  443. */
  444. // #ifndef H5
  445. copy: function(orderNo) {
  446. let that = this;
  447. uni.setClipboardData({
  448. data: orderNo
  449. });
  450. },
  451. // #endif
  452. /**
  453. * 打电话
  454. */
  455. goTel: function() {
  456. uni.makePhoneCall({
  457. phoneNumber: this.refundInfo.deliveryId
  458. })
  459. }
  460. }
  461. }
  462. </script>
  463. <style scoped lang="scss">
  464. .addressDetail {
  465. line-height: 36rpx;
  466. }
  467. .btn-box {
  468. display: flex;
  469. padding-top: 20rpx;
  470. line-height: 60rpx;
  471. .btn-line {
  472. @include main_color(theme);
  473. @include coupons_border_color(theme);
  474. }
  475. .btn-bg {
  476. color: #fff;
  477. }
  478. .btn-999 {
  479. border: 1px solid #999999;
  480. color: #666666;
  481. }
  482. .btn {
  483. width: 176rpx;
  484. height: 60rpx;
  485. line-height: 56rpx;
  486. margin-left: 18rpx;
  487. text-align: center;
  488. border-radius: 30rpx;
  489. font-size: 28rpx;
  490. }
  491. }
  492. .margin-100 {
  493. margin: -86rpx auto 0 auto;
  494. }
  495. .return_info_pad {
  496. padding: 30rpx 24rpx;
  497. }
  498. .return_info {
  499. border-top: 1px solid #EEEEEE;
  500. background-color: #fff;
  501. padding: 32rpx 0;
  502. }
  503. .refundPrice {
  504. font-size: 35rpx;
  505. font-weight: bold;
  506. }
  507. .qs-btn {
  508. width: auto;
  509. height: 60rpx;
  510. text-align: center;
  511. line-height: 60rpx;
  512. border-radius: 50rpx;
  513. color: #fff;
  514. font-size: 27rpx;
  515. padding: 0 3%;
  516. color: #aaa;
  517. border: 1px solid #ddd;
  518. margin-right: 20rpx;
  519. }
  520. .text-overflow {
  521. width: 392rpx;
  522. overflow: hidden;
  523. text-overflow: ellipsis;
  524. white-space: nowrap;
  525. }
  526. .shuoming {
  527. width: 32rpx;
  528. height: 32rpx;
  529. }
  530. .mp-header {
  531. width: 100%;
  532. @include main_bg_color(theme);
  533. }
  534. .goodCall {
  535. @include main_color(theme);
  536. text-align: center;
  537. width: 100%;
  538. height: 86rpx;
  539. padding: 0 30rpx;
  540. border-bottom: 1rpx solid #eee;
  541. font-size: 30rpx;
  542. line-height: 86rpx;
  543. background: #fff;
  544. .icon-kefu {
  545. font-size: 36rpx;
  546. margin-right: 15rpx;
  547. }
  548. /* #ifdef MP */
  549. button {
  550. display: flex;
  551. align-items: center;
  552. justify-content: center;
  553. height: 86rpx;
  554. font-size: 30rpx;
  555. @include main_color(theme);
  556. }
  557. /* #endif */
  558. }
  559. .justify-between {
  560. justify-content: space-between;
  561. }
  562. .align-center {
  563. align-items: center;
  564. }
  565. .order-details {
  566. padding-bottom: 30rpx;
  567. .header {
  568. height: 250rpx;
  569. padding: 0 24rpx;
  570. }
  571. }
  572. .bg_color {
  573. @include main_bg_color(theme);
  574. }
  575. .order-details .header.on {
  576. // /background-color: #666 !important;
  577. }
  578. .order-details .header .pictrue {
  579. width: 110rpx;
  580. height: 110rpx;
  581. }
  582. .order-details .header .pictrue image {
  583. width: 100%;
  584. height: 100%;
  585. }
  586. .order-details .header .data {
  587. color: rgba(255, 255, 255, 0.8);
  588. font-size: 24rpx;
  589. margin-left: 27rpx;
  590. }
  591. .order-details .header .data.on {
  592. margin-left: 0;
  593. padding-top: 34rpx;
  594. }
  595. .order-details .header .data .state {
  596. font-size: 30rpx;
  597. font-weight: bold;
  598. color: #fff;
  599. }
  600. .order-details .header .data .time {
  601. margin-left: 20rpx;
  602. }
  603. .picTxt {
  604. padding-left: 10rpx;
  605. }
  606. .order-details .nav {
  607. background-color: #fff;
  608. font-size: 26rpx;
  609. color: #282828;
  610. padding: 27rpx 0;
  611. width: 100%;
  612. border-radius: 14rpx;
  613. margin: -100rpx auto 0 auto;
  614. }
  615. .order-details .nav .navCon {
  616. padding: 0 40rpx;
  617. }
  618. .order-details .nav .on {
  619. @include main_color(theme);
  620. }
  621. .font_color {
  622. @include main_color(theme);
  623. }
  624. .order-details .nav .progress {
  625. padding: 0 65rpx;
  626. margin-top: 10rpx;
  627. }
  628. .order-details .nav .progress .line {
  629. width: 100rpx;
  630. height: 2rpx;
  631. background-color: #939390;
  632. }
  633. .order-details .nav .progress .iconfont {
  634. font-size: 25rpx;
  635. color: #939390;
  636. margin-top: -2rpx;
  637. }
  638. .order-details .address {
  639. font-size: 26rpx;
  640. color: #868686;
  641. background-color: #fff;
  642. padding: 30rpx 0;
  643. .phone {
  644. margin-left: 20rpx;
  645. }
  646. }
  647. .order-details .address .name {
  648. font-size: 30rpx;
  649. color: #333;
  650. margin-bottom: 15rpx;
  651. }
  652. .order-details .line {
  653. width: 100%;
  654. height: 3rpx;
  655. }
  656. .order-details .line image {
  657. width: 100%;
  658. height: 100%;
  659. display: block;
  660. }
  661. .order-details .wrapper {
  662. background-color: #fff;
  663. margin-top: 12rpx;
  664. }
  665. .order-details .wrapper .item {
  666. font-size: 28rpx;
  667. color: #282828;
  668. }
  669. .order-details .wrapper .item~.item {
  670. margin-top: 34rpx;
  671. }
  672. .order-details .wrapper .item .conter {
  673. color: #282828;
  674. text-align: right;
  675. overflow: hidden;
  676. text-overflow: ellipsis;
  677. white-space: nowrap;
  678. }
  679. .mark_show {
  680. color: #868686;
  681. width: 470rpx;
  682. text-align: right;
  683. }
  684. .order-details .wrapper .item .conter .copy {
  685. font-size: 20rpx;
  686. color: #666;
  687. border-radius: 20rpx;
  688. border: 1rpx solid #999;
  689. padding: 8rpx 18rpx;
  690. margin-left: 10rpx;
  691. }
  692. .order-details .wrapper .actualPay {
  693. border-top: 1rpx solid #eee;
  694. margin-top: 30rpx;
  695. padding-top: 30rpx;
  696. }
  697. .order-details .wrapper .actualPay .money {
  698. font-weight: bold;
  699. font-size: 30rpx;
  700. @include price_color(theme);
  701. }
  702. .order-details .footer {
  703. width: 100%;
  704. height: 100rpx;
  705. position: fixed;
  706. bottom: 0;
  707. left: 0;
  708. background-color: #fff;
  709. padding-right: 30rpx;
  710. box-sizing: border-box;
  711. }
  712. .order-details .footer .bnt {
  713. width: 158rpx;
  714. height: 54rpx;
  715. text-align: center;
  716. line-height: 54rpx;
  717. border-radius: 50rpx;
  718. color: #fff;
  719. font-size: 27rpx;
  720. }
  721. .order-details .footer .bnt.cancel {
  722. color: #aaa;
  723. border: 1rpx solid #ddd;
  724. }
  725. .order-details .footer .bnt~.bnt {
  726. margin-left: 18rpx;
  727. }
  728. .order-details .writeOff {
  729. background-color: #fff;
  730. margin-top: 15rpx;
  731. padding-bottom: 50rpx;
  732. }
  733. .order-details .writeOff .title {
  734. font-size: 30rpx;
  735. color: #282828;
  736. height: 87rpx;
  737. border-bottom: 1px solid #f0f0f0;
  738. padding: 0 24rpx;
  739. line-height: 87rpx;
  740. }
  741. .order-details .writeOff .grayBg {
  742. background-color: #f2f5f7;
  743. width: 590rpx;
  744. height: 384rpx;
  745. border-radius: 20rpx 20rpx 0 0;
  746. margin: 50rpx auto 0 auto;
  747. padding-top: 55rpx;
  748. }
  749. .order-details .writeOff .grayBg .pictrue {
  750. width: 290rpx;
  751. height: 290rpx;
  752. margin: 0 auto;
  753. }
  754. .order-details .writeOff .grayBg .pictrue image {
  755. width: 100%;
  756. height: 100%;
  757. display: block;
  758. }
  759. .order-details .writeOff .gear {
  760. width: 590rpx;
  761. height: 30rpx;
  762. margin: 0 auto;
  763. }
  764. .order-details .writeOff .gear image {
  765. width: 100%;
  766. height: 100%;
  767. display: block;
  768. }
  769. .order-details .writeOff .num {
  770. background-color: #f0c34c;
  771. width: 590rpx;
  772. height: 84rpx;
  773. color: #282828;
  774. font-size: 48rpx;
  775. margin: 0 auto;
  776. border-radius: 0 0 20rpx 20rpx;
  777. text-align: center;
  778. padding-top: 4rpx;
  779. }
  780. .order-details .writeOff .rules {
  781. margin: 46rpx 30rpx 0 30rpx;
  782. border-top: 1px solid #f0f0f0;
  783. padding-top: 10rpx;
  784. }
  785. .order-details .writeOff .rules .item {
  786. margin-top: 20rpx;
  787. }
  788. .order-details .writeOff .rules .item .rulesTitle {
  789. font-size: 28rpx;
  790. color: #282828;
  791. }
  792. .order-details .writeOff .rules .item .rulesTitle .iconfont {
  793. font-size: 30rpx;
  794. color: #333;
  795. margin-right: 8rpx;
  796. margin-top: 5rpx;
  797. }
  798. .order-details .writeOff .rules .item .info {
  799. font-size: 28rpx;
  800. color: #999;
  801. margin-top: 7rpx;
  802. }
  803. .order-details .writeOff .rules .item .info .time {
  804. margin-left: 20rpx;
  805. }
  806. .order-details .map {
  807. font-size: 30rpx;
  808. color: #282828;
  809. margin-top: 15rpx;
  810. background-color: #fff;
  811. padding: 0 24rpx;
  812. .title {
  813. line-height: 86rpx;
  814. border-bottom: 1px solid #f0f0f0;
  815. }
  816. }
  817. .order-details .map .place {
  818. font-size: 26rpx;
  819. width: 176rpx;
  820. height: 50rpx;
  821. border-radius: 25rpx;
  822. line-height: 50rpx;
  823. text-align: center;
  824. }
  825. .order-details .map .place .iconfont {
  826. font-size: 27rpx;
  827. height: 27rpx;
  828. line-height: 27rpx;
  829. margin: 2rpx 3rpx 0 0;
  830. }
  831. .order-details .address .name .iconfont {
  832. font-size: 34rpx;
  833. margin-left: 10rpx;
  834. }
  835. .refund {
  836. padding: 0 !important;
  837. margin-top: 15rpx;
  838. background-color: #fff;
  839. .title {
  840. display: flex;
  841. align-items: center;
  842. font-size: 30rpx;
  843. color: #333;
  844. height: 86rpx;
  845. border-bottom: 1px solid #f5f5f5;
  846. font-weight: 400;
  847. padding: 0 24rpx;
  848. image {
  849. width: 32rpx;
  850. height: 32rpx;
  851. margin-right: 10rpx;
  852. }
  853. }
  854. .con {
  855. font-size: 26rpx;
  856. color: #666666;
  857. padding: 30rpx 24rpx;
  858. }
  859. }
  860. .pictrue {
  861. width: 130rpx;
  862. height: 130rpx;
  863. border-radius: 14rpx;
  864. overflow: hidden;
  865. image {
  866. width: 100%;
  867. height: 100%;
  868. }
  869. }
  870. .text {
  871. width: 490rpx;
  872. // position: relative;
  873. .name {
  874. font-size: 28rpx;
  875. color: #282828;
  876. }
  877. .attr {
  878. font-size: 16rpx;
  879. color: #868686;
  880. margin-top: 7rpx
  881. }
  882. }
  883. .wrapper-head {
  884. background-color: #fff;
  885. margin-top: 12rpx;
  886. padding: 30rpx 24rpx;
  887. }
  888. .wrapper-info {
  889. background-color: #fff;
  890. margin: -100rpx auto 0 auto;
  891. padding: 15px 12px;
  892. .name {
  893. width: 414rpx;
  894. color: #333;
  895. }
  896. .num {
  897. color: #999;
  898. }
  899. .attr {
  900. color: #999;
  901. font-size: 20rpx;
  902. margin: 7rpx 0 16rpx 0;
  903. }
  904. .price {
  905. font-size: 26rpx;
  906. color: #E93323;
  907. }
  908. }
  909. .borRadius-top {
  910. border-radius: 14rpx 14rpx 0px 0px;
  911. }
  912. .borRadius-bottom {
  913. border-radius: 0px 0px 14rpx 14rpx;
  914. }
  915. .conter-refund {
  916. width: 76%;
  917. text-align: right;
  918. color: #868686;
  919. .wapImg {
  920. width: 106rpx;
  921. height: 106rpx;
  922. border-radius: 10rpx;
  923. margin-right: 10rpx;
  924. }
  925. }
  926. .bg-tk-color {
  927. background-color: $bg-color-primary;
  928. color: #fff;
  929. border: none;
  930. }
  931. .tui-modal-custom {
  932. width: 600rpx;
  933. position: relative;
  934. box-sizing: border-box;
  935. padding: 40rpx;
  936. border-radius: 16px;
  937. background-color: #fff;
  938. z-index: 9999;
  939. .h-342 {
  940. min-height: 268rpx;
  941. max-height: 268rpx;
  942. ;
  943. overflow-y: scroll;
  944. }
  945. }
  946. </style>