index.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059
  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" class="btn btn-999 acea-row row-center line-heightOne mr-20" @click="handleRevokeReject(refundInfo.refundOrderNo)">拒绝退款</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="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. } from '@/api/secondHand.js';
  221. import {
  222. onRevokeRefund
  223. } from '@/libs/order';
  224. import orderGoods from "../components/orderGoods";
  225. import {
  226. getMerAddressApi
  227. } from '@/api/merchant.js'
  228. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  229. import {
  230. toLogin
  231. } from '@/libs/login.js';
  232. import {
  233. mapGetters
  234. } from "vuex";
  235. // #ifdef MP
  236. import uQRCode from '@/js_sdk/Sansnn-uQRCode/uqrcode.js'
  237. // #endif
  238. import {
  239. setThemeColor
  240. } from '@/utils/setTheme.js'
  241. const app = getApp();
  242. export default {
  243. components: {
  244. orderGoods
  245. },
  246. data() {
  247. return {
  248. rejectText: '',
  249. orderType: '',
  250. orderTypeId: null,
  251. rejectOrder: '',
  252. merAddress: null, //店铺地址
  253. refundOrderNo: '',
  254. refundInfo: {}, //退款单详情
  255. theme: app.globalData.theme,
  256. chatConfig: {
  257. consumer_hotline: '',
  258. telephone_service_switch: 'false'
  259. }, //客服配置
  260. };
  261. },
  262. computed: mapGetters(['isLogin', 'chatUrl', 'userInfo']),
  263. onLoad: function(options) {
  264. options.type == undefined || options.type == null ? this.type = 'normal' : this.type = options.type;
  265. if (!options.refundOrderNo) return this.$util.Tips({
  266. title: '缺少参数'
  267. }, {
  268. tab: 3,
  269. url: 1
  270. });
  271. this.$set(this, 'refundOrderNo', options.refundOrderNo);
  272. this.$set(this, 'orderType', options.orderType);
  273. this.$set(this, 'orderTypeId', options.orderTypeId);
  274. this.bgColor = setThemeColor();
  275. this.$set(this, 'chatConfig', this.$Cache.getItem('chatConfig'));
  276. },
  277. onShow() {
  278. if (this.isLogin) {
  279. this.orderRefundInfo();
  280. } else {
  281. toLogin();
  282. }
  283. },
  284. onHide: function() {
  285. this.isClose = true;
  286. },
  287. // 滚动监听
  288. onPageScroll(e) {
  289. // 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
  290. uni.$emit('scroll');
  291. },
  292. onReady: function() {
  293. // #ifdef H5
  294. this.$nextTick(function() {
  295. const clipboard = new ClipboardJS(".copy-data");
  296. clipboard.on("success", () => {
  297. this.$util.Tips({
  298. title: '复制成功'
  299. });
  300. });
  301. });
  302. // #endif
  303. },
  304. methods: {
  305. //拒绝退款保存
  306. handleInputConfirm() {
  307. let that = this;
  308. if (!this.rejectText) return this.$util.Tips({
  309. title: '请输入拒绝退款原因内容!'
  310. });
  311. uni.showLoading({
  312. title: '正在处理中'
  313. });
  314. let params = {
  315. refundOrderNo: this.rejectOrder,
  316. auditType: 'refuse',
  317. reason: this.rejectText
  318. }
  319. returningSecondHandRejectApi(params).then(res => {
  320. uni.hideLoading();
  321. return that.$util.Tips({
  322. title: '处理成功',
  323. icon: 'success'
  324. }, function() {
  325. that.orderRefundInfo();
  326. });
  327. }).catch(err => {
  328. return that.$util.Tips({
  329. title: err
  330. });
  331. });
  332. // 关闭窗口后,恢复默认内容
  333. this.$refs.rejectDialog.close()
  334. },
  335. //拒绝退款取消
  336. handleInputClose() {
  337. this.$refs.rejectDialog.close()
  338. },
  339. // 拒绝退款
  340. handleRevokeReject(orderNo) {
  341. this.rejectOrder = orderNo;
  342. this.$refs.rejectDialog.open();
  343. },
  344. //店铺地址
  345. getMerAddress() {
  346. getMerAddressApi(this.refundInfo.merId).then(res => {
  347. this.$set(this, 'merAddress', res.data);
  348. }).catch(err => {
  349. return this.$util.Tips({
  350. title: err
  351. });
  352. })
  353. },
  354. //撤销售后
  355. handleRevokeRefund(refundOrderNo) {
  356. let that = this;
  357. if (this.orderTypeId == 10) {
  358. uni.showModal({
  359. content: '是否确认退款该订单',
  360. cancelText: "取消",
  361. confirmText: "确定",
  362. showCancel: true,
  363. confirmColor: '#f55850',
  364. success: (res) => {
  365. if (res.confirm) {
  366. uni.showLoading({
  367. title: '正在处理中'
  368. });
  369. refundSecondHandOkApi(refundOrderNo).then(res => {
  370. uni.hideLoading();
  371. return that.$util.Tips({
  372. title: '退款成功',
  373. icon: 'success'
  374. }, function() {
  375. that.orderRefundInfo();
  376. });
  377. }).catch(err => {
  378. return that.$util.Tips({
  379. title: err
  380. });
  381. });
  382. } else {
  383. }
  384. },
  385. })
  386. } else {
  387. onRevokeRefund(refundOrderNo, this.orderType).then(() => {
  388. this.orderRefundInfo()
  389. });
  390. }
  391. },
  392. //退回商品
  393. handleReturningRefund(item) {
  394. this.$Cache.set('productInfo', item)
  395. let url =
  396. `/pages/goods/returns_and_refunds/index?refundOrderNo=${item.refundOrderNo}&returnGoodsType=${item.returnGoodsType}`;
  397. this.orderType == 'secondHand' ? url = url + '&orderType=secondHand' : ''
  398. uni.navigateTo({
  399. url: url
  400. })
  401. },
  402. kefuClick() {
  403. if (this.chatConfig.telephone_service_switch === 'true') {
  404. uni.makePhoneCall({
  405. phoneNumber: this.chatConfig.consumer_hotline //仅为示例
  406. });
  407. } else {
  408. // #ifdef APP-PLUS
  409. uni.navigateTo({
  410. url: '/pages/users/web_page/index?webUel=' + this.chatUrl + '&title=客服'
  411. })
  412. // #endif
  413. // #ifndef APP-PLUS
  414. location.href = this.chatUrl;
  415. // #endif
  416. }
  417. },
  418. /**
  419. * 拨打电话
  420. */
  421. makePhone: function(e) {
  422. uni.makePhoneCall({
  423. phoneNumber: e
  424. })
  425. },
  426. /**
  427. * 获取退款订单详细信息
  428. *
  429. */
  430. orderRefundInfo() {
  431. let that = this;
  432. uni.showLoading({
  433. title: "正在加载中"
  434. });
  435. let api = that.orderType == 'secondHand' ? secondHandRefundInfoApi : orderRefundInfoApi;
  436. api(that.refundOrderNo).then(res => {
  437. uni.hideLoading();
  438. let data = res.data;
  439. that.$set(that, 'refundInfo', data);
  440. //returnGoodsType 退货类型:0-不退货 1-快递退回,2-到店退货
  441. if (that.refundInfo.returnGoodsType === 2) that.getMerAddress();
  442. }).catch(err => {
  443. that.$util.Tips({
  444. title: err
  445. }, {
  446. tab: 4,
  447. url: '/pages/user/index'
  448. });
  449. });
  450. },
  451. /**
  452. *
  453. * 剪切订单号
  454. */
  455. // #ifndef H5
  456. copy: function(orderNo) {
  457. let that = this;
  458. uni.setClipboardData({
  459. data: orderNo
  460. });
  461. },
  462. // #endif
  463. /**
  464. * 打电话
  465. */
  466. goTel: function() {
  467. uni.makePhoneCall({
  468. phoneNumber: this.refundInfo.deliveryId
  469. })
  470. }
  471. }
  472. }
  473. </script>
  474. <style scoped lang="scss">
  475. .addressDetail {
  476. line-height: 36rpx;
  477. }
  478. .btn-box {
  479. display: flex;
  480. padding-top: 20rpx;
  481. line-height: 60rpx;
  482. .btn-line {
  483. @include main_color(theme);
  484. @include coupons_border_color(theme);
  485. }
  486. .btn-bg {
  487. color: #fff;
  488. }
  489. .btn-999 {
  490. border: 1px solid #999999;
  491. color: #666666;
  492. }
  493. .btn {
  494. width: 176rpx;
  495. height: 60rpx;
  496. line-height: 56rpx;
  497. margin-left: 18rpx;
  498. text-align: center;
  499. border-radius: 30rpx;
  500. font-size: 28rpx;
  501. }
  502. }
  503. .margin-100 {
  504. margin: -86rpx auto 0 auto;
  505. }
  506. .return_info_pad {
  507. padding: 30rpx 24rpx;
  508. }
  509. .return_info {
  510. border-top: 1px solid #EEEEEE;
  511. background-color: #fff;
  512. padding: 32rpx 0;
  513. }
  514. .refundPrice {
  515. font-size: 35rpx;
  516. font-weight: bold;
  517. }
  518. .qs-btn {
  519. width: auto;
  520. height: 60rpx;
  521. text-align: center;
  522. line-height: 60rpx;
  523. border-radius: 50rpx;
  524. color: #fff;
  525. font-size: 27rpx;
  526. padding: 0 3%;
  527. color: #aaa;
  528. border: 1px solid #ddd;
  529. margin-right: 20rpx;
  530. }
  531. .text-overflow {
  532. width: 392rpx;
  533. overflow: hidden;
  534. text-overflow: ellipsis;
  535. white-space: nowrap;
  536. }
  537. .shuoming {
  538. width: 32rpx;
  539. height: 32rpx;
  540. }
  541. .mp-header {
  542. width: 100%;
  543. @include main_bg_color(theme);
  544. }
  545. .goodCall {
  546. @include main_color(theme);
  547. text-align: center;
  548. width: 100%;
  549. height: 86rpx;
  550. padding: 0 30rpx;
  551. border-bottom: 1rpx solid #eee;
  552. font-size: 30rpx;
  553. line-height: 86rpx;
  554. background: #fff;
  555. .icon-kefu {
  556. font-size: 36rpx;
  557. margin-right: 15rpx;
  558. }
  559. /* #ifdef MP */
  560. button {
  561. display: flex;
  562. align-items: center;
  563. justify-content: center;
  564. height: 86rpx;
  565. font-size: 30rpx;
  566. @include main_color(theme);
  567. }
  568. /* #endif */
  569. }
  570. .justify-between {
  571. justify-content: space-between;
  572. }
  573. .align-center {
  574. align-items: center;
  575. }
  576. .order-details {
  577. padding-bottom: 30rpx;
  578. .header {
  579. height: 250rpx;
  580. padding: 0 24rpx;
  581. }
  582. }
  583. .bg_color {
  584. @include main_bg_color(theme);
  585. }
  586. .order-details .header.on {
  587. // /background-color: #666 !important;
  588. }
  589. .order-details .header .pictrue {
  590. width: 110rpx;
  591. height: 110rpx;
  592. }
  593. .order-details .header .pictrue image {
  594. width: 100%;
  595. height: 100%;
  596. }
  597. .order-details .header .data {
  598. color: rgba(255, 255, 255, 0.8);
  599. font-size: 24rpx;
  600. margin-left: 27rpx;
  601. }
  602. .order-details .header .data.on {
  603. margin-left: 0;
  604. padding-top: 34rpx;
  605. }
  606. .order-details .header .data .state {
  607. font-size: 30rpx;
  608. font-weight: bold;
  609. color: #fff;
  610. }
  611. .order-details .header .data .time {
  612. margin-left: 20rpx;
  613. }
  614. .picTxt {
  615. padding-left: 10rpx;
  616. }
  617. .order-details .nav {
  618. background-color: #fff;
  619. font-size: 26rpx;
  620. color: #282828;
  621. padding: 27rpx 0;
  622. width: 100%;
  623. border-radius: 14rpx;
  624. margin: -100rpx auto 0 auto;
  625. }
  626. .order-details .nav .navCon {
  627. padding: 0 40rpx;
  628. }
  629. .order-details .nav .on {
  630. @include main_color(theme);
  631. }
  632. .font_color {
  633. @include main_color(theme);
  634. }
  635. .order-details .nav .progress {
  636. padding: 0 65rpx;
  637. margin-top: 10rpx;
  638. }
  639. .order-details .nav .progress .line {
  640. width: 100rpx;
  641. height: 2rpx;
  642. background-color: #939390;
  643. }
  644. .order-details .nav .progress .iconfont {
  645. font-size: 25rpx;
  646. color: #939390;
  647. margin-top: -2rpx;
  648. }
  649. .order-details .address {
  650. font-size: 26rpx;
  651. color: #868686;
  652. background-color: #fff;
  653. padding: 30rpx 0;
  654. .phone {
  655. margin-left: 20rpx;
  656. }
  657. }
  658. .order-details .address .name {
  659. font-size: 30rpx;
  660. color: #333;
  661. margin-bottom: 15rpx;
  662. }
  663. .order-details .line {
  664. width: 100%;
  665. height: 3rpx;
  666. }
  667. .order-details .line image {
  668. width: 100%;
  669. height: 100%;
  670. display: block;
  671. }
  672. .order-details .wrapper {
  673. background-color: #fff;
  674. margin-top: 12rpx;
  675. }
  676. .order-details .wrapper .item {
  677. font-size: 28rpx;
  678. color: #282828;
  679. }
  680. .order-details .wrapper .item~.item {
  681. margin-top: 34rpx;
  682. }
  683. .order-details .wrapper .item .conter {
  684. color: #282828;
  685. text-align: right;
  686. overflow: hidden;
  687. text-overflow: ellipsis;
  688. white-space: nowrap;
  689. }
  690. .mark_show {
  691. color: #868686;
  692. width: 470rpx;
  693. text-align: right;
  694. }
  695. .order-details .wrapper .item .conter .copy {
  696. font-size: 20rpx;
  697. color: #666;
  698. border-radius: 20rpx;
  699. border: 1rpx solid #999;
  700. padding: 8rpx 18rpx;
  701. margin-left: 10rpx;
  702. }
  703. .order-details .wrapper .actualPay {
  704. border-top: 1rpx solid #eee;
  705. margin-top: 30rpx;
  706. padding-top: 30rpx;
  707. }
  708. .order-details .wrapper .actualPay .money {
  709. font-weight: bold;
  710. font-size: 30rpx;
  711. @include price_color(theme);
  712. }
  713. .order-details .footer {
  714. width: 100%;
  715. height: 100rpx;
  716. position: fixed;
  717. bottom: 0;
  718. left: 0;
  719. background-color: #fff;
  720. padding-right: 30rpx;
  721. box-sizing: border-box;
  722. }
  723. .order-details .footer .bnt {
  724. width: 158rpx;
  725. height: 54rpx;
  726. text-align: center;
  727. line-height: 54rpx;
  728. border-radius: 50rpx;
  729. color: #fff;
  730. font-size: 27rpx;
  731. }
  732. .order-details .footer .bnt.cancel {
  733. color: #aaa;
  734. border: 1rpx solid #ddd;
  735. }
  736. .order-details .footer .bnt~.bnt {
  737. margin-left: 18rpx;
  738. }
  739. .order-details .writeOff {
  740. background-color: #fff;
  741. margin-top: 15rpx;
  742. padding-bottom: 50rpx;
  743. }
  744. .order-details .writeOff .title {
  745. font-size: 30rpx;
  746. color: #282828;
  747. height: 87rpx;
  748. border-bottom: 1px solid #f0f0f0;
  749. padding: 0 24rpx;
  750. line-height: 87rpx;
  751. }
  752. .order-details .writeOff .grayBg {
  753. background-color: #f2f5f7;
  754. width: 590rpx;
  755. height: 384rpx;
  756. border-radius: 20rpx 20rpx 0 0;
  757. margin: 50rpx auto 0 auto;
  758. padding-top: 55rpx;
  759. }
  760. .order-details .writeOff .grayBg .pictrue {
  761. width: 290rpx;
  762. height: 290rpx;
  763. margin: 0 auto;
  764. }
  765. .order-details .writeOff .grayBg .pictrue image {
  766. width: 100%;
  767. height: 100%;
  768. display: block;
  769. }
  770. .order-details .writeOff .gear {
  771. width: 590rpx;
  772. height: 30rpx;
  773. margin: 0 auto;
  774. }
  775. .order-details .writeOff .gear image {
  776. width: 100%;
  777. height: 100%;
  778. display: block;
  779. }
  780. .order-details .writeOff .num {
  781. background-color: #f0c34c;
  782. width: 590rpx;
  783. height: 84rpx;
  784. color: #282828;
  785. font-size: 48rpx;
  786. margin: 0 auto;
  787. border-radius: 0 0 20rpx 20rpx;
  788. text-align: center;
  789. padding-top: 4rpx;
  790. }
  791. .order-details .writeOff .rules {
  792. margin: 46rpx 30rpx 0 30rpx;
  793. border-top: 1px solid #f0f0f0;
  794. padding-top: 10rpx;
  795. }
  796. .order-details .writeOff .rules .item {
  797. margin-top: 20rpx;
  798. }
  799. .order-details .writeOff .rules .item .rulesTitle {
  800. font-size: 28rpx;
  801. color: #282828;
  802. }
  803. .order-details .writeOff .rules .item .rulesTitle .iconfont {
  804. font-size: 30rpx;
  805. color: #333;
  806. margin-right: 8rpx;
  807. margin-top: 5rpx;
  808. }
  809. .order-details .writeOff .rules .item .info {
  810. font-size: 28rpx;
  811. color: #999;
  812. margin-top: 7rpx;
  813. }
  814. .order-details .writeOff .rules .item .info .time {
  815. margin-left: 20rpx;
  816. }
  817. .order-details .map {
  818. font-size: 30rpx;
  819. color: #282828;
  820. margin-top: 15rpx;
  821. background-color: #fff;
  822. padding: 0 24rpx;
  823. .title {
  824. line-height: 86rpx;
  825. border-bottom: 1px solid #f0f0f0;
  826. }
  827. }
  828. .order-details .map .place {
  829. font-size: 26rpx;
  830. width: 176rpx;
  831. height: 50rpx;
  832. border-radius: 25rpx;
  833. line-height: 50rpx;
  834. text-align: center;
  835. }
  836. .order-details .map .place .iconfont {
  837. font-size: 27rpx;
  838. height: 27rpx;
  839. line-height: 27rpx;
  840. margin: 2rpx 3rpx 0 0;
  841. }
  842. .order-details .address .name .iconfont {
  843. font-size: 34rpx;
  844. margin-left: 10rpx;
  845. }
  846. .refund {
  847. padding: 0 !important;
  848. margin-top: 15rpx;
  849. background-color: #fff;
  850. .title {
  851. display: flex;
  852. align-items: center;
  853. font-size: 30rpx;
  854. color: #333;
  855. height: 86rpx;
  856. border-bottom: 1px solid #f5f5f5;
  857. font-weight: 400;
  858. padding: 0 24rpx;
  859. image {
  860. width: 32rpx;
  861. height: 32rpx;
  862. margin-right: 10rpx;
  863. }
  864. }
  865. .con {
  866. font-size: 26rpx;
  867. color: #666666;
  868. padding: 30rpx 24rpx;
  869. }
  870. }
  871. .pictrue {
  872. width: 130rpx;
  873. height: 130rpx;
  874. border-radius: 14rpx;
  875. overflow: hidden;
  876. image {
  877. width: 100%;
  878. height: 100%;
  879. }
  880. }
  881. .text {
  882. width: 490rpx;
  883. // position: relative;
  884. .name {
  885. font-size: 28rpx;
  886. color: #282828;
  887. }
  888. .attr {
  889. font-size: 16rpx;
  890. color: #868686;
  891. margin-top: 7rpx
  892. }
  893. }
  894. .wrapper-head {
  895. background-color: #fff;
  896. margin-top: 12rpx;
  897. padding: 30rpx 24rpx;
  898. }
  899. .wrapper-info {
  900. background-color: #fff;
  901. margin: -100rpx auto 0 auto;
  902. padding: 15px 12px;
  903. .name {
  904. width: 414rpx;
  905. color: #333;
  906. }
  907. .num {
  908. color: #999;
  909. }
  910. .attr {
  911. color: #999;
  912. font-size: 20rpx;
  913. margin: 7rpx 0 16rpx 0;
  914. }
  915. .price {
  916. font-size: 26rpx;
  917. color: #E93323;
  918. }
  919. }
  920. .borRadius-top {
  921. border-radius: 14rpx 14rpx 0px 0px;
  922. }
  923. .borRadius-bottom {
  924. border-radius: 0px 0px 14rpx 14rpx;
  925. }
  926. .conter-refund {
  927. width: 76%;
  928. text-align: right;
  929. color: #868686;
  930. .wapImg {
  931. width: 106rpx;
  932. height: 106rpx;
  933. border-radius: 10rpx;
  934. margin-right: 10rpx;
  935. }
  936. }
  937. .bg-tk-color {
  938. background-color: $bg-color-primary;
  939. color: #fff;
  940. border: none;
  941. }
  942. .tui-modal-custom {
  943. width: 600rpx;
  944. position: relative;
  945. box-sizing: border-box;
  946. padding: 40rpx;
  947. border-radius: 16px;
  948. background-color: #fff;
  949. z-index: 9999;
  950. .h-342 {
  951. min-height: 268rpx;
  952. max-height: 268rpx;
  953. ;
  954. overflow-y: scroll;
  955. }
  956. }
  957. </style>