refundDetail.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906
  1. <!-- 退款详情页面 -->
  2. <template>
  3. <scroll-view class="container" scroll-y v-if="allData && isShow">
  4. <view class="main_content">
  5. <!--
  6. 退货退款状态:100-买家申请仅退款;101-买家申请退货退款;102-买家退货给商家;200-商家同意退款申请;201-商家同意退货退款申请;202-商家拒绝退款申请(退款关闭/拒收关闭);203-商家确认收货;300-平台确认退款(已完成)
  7. afsType 售后服务端类型,1-退货退款单(需关联处理退款金额),2-换货单,3-仅退款单
  8. -->
  9. <!-- 退款状态 start -->
  10. <view class="order_state" :style="{backgroundImage:'url('+imgUrl+'order-detail/refund_header_bg.png)'}">
  11. <!-- 等待商家处理 待发货 - 退款中 start-->
  12. <block v-if="allData.state == 100 || allData.state == 101">
  13. <view class="state_title">
  14. <image :src="imgUrl+'order-detail/refund_progress.png'" mode=""></image>
  15. <text>{{$L('等待商家处理')}}</text>
  16. </view>
  17. <view class="state_time" v-if="deadline">{{$L('还剩')}}{{deadline}}{{$L('自动确认')}}</view>
  18. </block>
  19. <!-- 等待商家处理 待发货 - 退款中 end-->
  20. <!-- 等待商家收货 start-->
  21. <block v-if="allData.state == 102">
  22. <view class="state_title">
  23. <image :src="imgUrl+'order-detail/refund_progress.png'" mode=""></image>
  24. <text>{{$L('等待商家收货')}}</text>
  25. </view>
  26. <view class="state_time" v-if="deadline">{{$L('还剩')}}{{deadline}}{{$L('自动确认')}}</view>
  27. </block>
  28. <!-- 等待商家收货 end-->
  29. <!-- 商家同意退款申请 start-->
  30. <block v-if="allData.state == 200">
  31. <view class="state_title">
  32. <image :src="imgUrl+'order-detail/refund_progress.png'" mode=""></image>
  33. <text>{{$L('等待平台审核退款')}}</text>
  34. </view>
  35. </block>
  36. <!-- 商家同意退款申请 end-->
  37. <!-- 卖家同意申请 start -->
  38. <block v-if="allData.state == 201">
  39. <view class="state_title">
  40. <image :src="imgUrl+'order-detail/refund_progress.png'" mode=""></image>
  41. <text>{{allData.stateValue}}</text>
  42. <text>{{$L('请退货并填写物流信息')}}</text>
  43. </view>
  44. <view class="state_time" v-if="deadline">{{$L('还剩')}}{{deadline}}{{$L('自动确认')}}</view>
  45. </block>
  46. <!-- 卖家同意申请 end-->
  47. <!-- 卖家拒绝申请 start-->
  48. <block v-if="allData.state == 202">
  49. <view class="state_title">
  50. <image :src="imgUrl+'goods_detail/poster_share_close.png'" mode=""></image>
  51. <text>{{allData.stateValue}}</text>
  52. </view>
  53. <view class="state_time refund_reason" v-if="allData.refuseReason">{{allData.refuseReason}}</view>
  54. </block>
  55. <!-- 卖家拒绝申请 end-->
  56. <!-- 商家确认收货 等待平台同意 start-->
  57. <block v-if="allData.state == 203">
  58. <view class="state_title">
  59. <image :src="imgUrl+'goods_detail/refund_progress.png'" mode=""></image>
  60. <text>{{allData.stateValue}}</text>
  61. </view>
  62. </block>
  63. <!-- 商家确认收货 end-->
  64. <!-- 退款退货 退款成功 -->
  65. <block v-if="allData.state == 300">
  66. <view class="state_title">
  67. <image :src="imgUrl+'order-detail/dagou.png'" mode=""></image>
  68. <text>{{$L('退款成功')}}</text>
  69. </view>
  70. <view class="state_time" v-if="allData.completeTime">{{allData.completeTime}}</view>
  71. </block>
  72. </view>
  73. <!-- 退款状态 end -->
  74. <!-- 退货地址 及 换货地址 -->
  75. <view class="refund_address" v-if="allData.afsAddress && allData.afsAddress != 'null' && (allData.afsType == 1 || allData.afsType == 2)">
  76. <image :src="imgUrl+'order-detail/map.png'" mode="" class="refund_address_map"></image>
  77. <view class="refund_address_des">
  78. <text class="refund_address_title">{{sourceType == '' ? '退' : '换'}}{{$L('货地址')}}</text>
  79. <view class="refund_address_con">
  80. <text>{{allData.platformContactPerson}}</text>
  81. <text>{{allData.platformContactPhone}}</text>
  82. </view>
  83. <view class="refund_address_info">{{allData.afsAddress}}</view>
  84. </view>
  85. </view>
  86. <!-- 退款 退款金额 start -->
  87. <view class="refund_amount" v-if="allData.afsType == 1 || allData.afsType == 3 || sourceType == ''">
  88. <view class="refund_amount_left">{{$L('退款金额')}}</view>
  89. <view class="refund_amout_right">
  90. <text class="sum">{{$L('总计')}}:</text>
  91. <view class="refund_amout_price">
  92. <text class="unit">¥</text>
  93. <text class="price_int">{{$getPartNumber(allData.returnMoneyAmount,'int')}}</text>
  94. <text class="price_decimal">{{$getPartNumber(allData.returnMoneyAmount,'decimal')}}</text>
  95. </view>
  96. </view>
  97. </view>
  98. <!-- 退款 退款金额 end -->
  99. <!-- 换货 换货数量 start -->
  100. <view class="refund_amount" v-if="allData.afsType == 2 || sourceType == 'exchange'">
  101. <view class="refund_amount_left">{{$L('换货数量')}}</view>
  102. <view class="refund_amout_right">
  103. <view class="refund_amout_price">
  104. <text>{{replacementNum}}</text>
  105. </view>
  106. </view>
  107. </view>
  108. <!-- 换货 换货数量 end -->
  109. <view class="speed_det" @click="progressDetails">
  110. <text>{{$L('进度详情')}}</text>
  111. <image :src="imgUrl+'order-detail/to_right.png'" mode=""></image>
  112. </view>
  113. <!-- 平台审核 及审核备注 start -->
  114. <view class="platform_audit" v-if="allData.state == 200 || allData.state == 203 || allData.state == 300">
  115. <view class="platform_audit_status">
  116. <text>{{$L('平台审核')}}</text>
  117. <text>{{allData.platformAudit ? allData.platformAudit : '--'}}</text>
  118. </view>
  119. <view class="platform_audit_remark">
  120. <text>{{$L('审核备注')}}</text>
  121. <text>{{allData.platformRemark ? allData.platformRemark : '--'}}</text>
  122. </view>
  123. </view>
  124. <!-- 平台审核 及审核备注 end -->
  125. <!-- 填写物流单号 start 201商家审核通过,才能发货-->
  126. <view class="logistics_bill" v-if="(allData.afsType == 1 || allData.afsType == 2) && allData.state == 201">
  127. <text @click="goLogisticsBill">{{$L('填写物流单号')}} >></text>
  128. </view>
  129. <!-- 填写物流单号 end -->
  130. <!-- 退款失败,平台拒绝审核,重新申请 202 start -->
  131. <view class="logistics_bill" v-if="(allData.afsType == 1 || allData.afsType == 3) && allData.state == 202">
  132. <text @click="goApplyRefund" class="re_apply_refund">{{$L('重新申请')}}</text>
  133. </view>
  134. <!-- 退款失败,平台拒绝审核,重新申请 start -->
  135. <!-- 等待商家收货并退款 -->
  136. <view class="refund_logisticsBill" @click="lookLogistics" v-if="allData.afsType == 1 && (allData.state == 102 || allData.state == 203 || allData.state == 300)">
  137. <text>{{$L('退货物流')}}</text>
  138. <image :src="imgUrl+'order-detail/to_right.png'" mode=""></image>
  139. </view>
  140. <!-- 订单内商品信息 start -->
  141. <view class="order_goods">
  142. <view class="order_goods_title">{{$L('退款信息')}}</view>
  143. <view class="goods_list">
  144. <view class="goods_pre" @click="goProductDetail(allData.productId)">
  145. <view class="goods_image">
  146. <image :src="allData.productImage" mode="aspectFit"></image>
  147. </view>
  148. <view class="goods_pre_right">
  149. <view class="goods_des">
  150. <view class="goods_name">{{allData.goodsName}}</view>
  151. <view class="goods_spec" v-if="allData.specValues">{{allData.specValues}}</view>
  152. </view>
  153. <view class="goods_prices">
  154. <view class="goods_price">
  155. <text class="unit">¥</text>
  156. <text class="price_int">{{$getPartNumber(allData.productPrice,'int')}}</text>
  157. <text class="price_decimal">{{$getPartNumber(allData.productPrice,'decimal')}}</text>
  158. </view>
  159. <view class="goods_num">*{{allData.returnNum}}</view>
  160. </view>
  161. </view>
  162. </view>
  163. </view>
  164. </view>
  165. <!-- 订单内商品信息 end -->
  166. <!-- 退款信息 start-->
  167. <view class="order_des">
  168. <view class="order_des_pre">
  169. <text>{{$L('退款原因')}}:</text>
  170. <text>{{allData.applyReasonContent}}</text>
  171. </view>
  172. <view class="order_des_pre">
  173. <text style="white-space: nowrap;">{{$L('退款说明')}}:</text>
  174. <text>{{allData.afsDescription==''?'--':allData.afsDescription}}</text>
  175. </view>
  176. <view class="refund_voucher" v-if="applyImageList && applyImageList.length > 0">
  177. <text>{{$L('退款凭证')}}:</text>
  178. <view class="refund_img_wrap">
  179. <view class="refund_vouhcer_list">
  180. <view class="refund_voucher_pre" v-for="(item,index) in applyImageList">
  181. <image :src="item" mode="aspectFit" @click="preRefundVoucher(index)"></image>
  182. </view>
  183. </view>
  184. </view>
  185. </view>
  186. <view class="order_des_pre">
  187. <text>{{$L('退款金额')}}:</text>
  188. <text>¥{{allData.returnMoneyAmount}}</text>
  189. </view>
  190. <view class="order_des_pre">
  191. <text>{{$L('申请时间')}}:</text>
  192. <text>{{allData.applyTime}}</text>
  193. </view>
  194. <view class="order_des_pre">
  195. <text>{{$L('退款编号')}}:</text>
  196. <text>{{allData.afsSn}}</text>
  197. </view>
  198. </view>
  199. <!-- 退款信息 end-->
  200. </view>
  201. </scroll-view>
  202. </template>
  203. <script>
  204. import {
  205. mapState
  206. } from 'vuex';
  207. import recommendGoods from "@/components/recommend-goods.vue";
  208. import uniPopup from '@/components/uni-popup/uni-popup.vue';
  209. import uniPopupMessage from '@/components/uni-popup/uni-popup-message.vue';
  210. import uniPopupDialog from '@/components/uni-popup/uni-popup-dialog.vue';
  211. let startY = 0,
  212. moveY = 0,
  213. pageAtTop = true;
  214. export default {
  215. components: {
  216. recommendGoods,
  217. uniPopup,
  218. uniPopupMessage,
  219. uniPopupDialog
  220. },
  221. data() {
  222. return {
  223. imgUrl: getApp().globalData.imgUrl,
  224. coverTransform: 'translateY(0px)',
  225. coverTransition: '0s',
  226. moving: false,
  227. afsSn:'', //退款单号
  228. allData:{}, //订单详细信息
  229. orderProductList:[], //订单商品列表
  230. cancelList:[], //取消原因列表
  231. current:'0', //取消原因当前点击的是第0项
  232. reasonId:-1, //取消原因当前点击的原因id
  233. sourceType:'', //从订单详情页面进入, 来源是换货 :'exchange' 或退货 :''
  234. deadline:'', //截止日期(根据售后状态,待卖家审核--审核截止时间;待买家发货--发货截止时间;待商家收货--收货退款截止时间)
  235. isShow:false, //数据是否已完全加载
  236. orderState:'', //订单状态来源
  237. applyImageList:[], //退款凭证
  238. returnLogList:[], //退款日志列表
  239. secInterval:'',
  240. }
  241. },
  242. async onLoad(option) {
  243. //退款单号
  244. this.afsSn = option.afsSn;
  245. this.sourceType = option.sourceType;
  246. this.orderState = option.orderState;
  247. this.getOrderDetail();
  248. },
  249. // #ifndef MP
  250. onNavigationBarButtonTap(e) {
  251. const index = e.index;
  252. if (index === 0) {
  253. this.navTo('/pages/set/set');
  254. } else if (index === 1) {
  255. // #ifdef APP-PLUS
  256. const pages = getCurrentPages();
  257. const page = pages[pages.length - 1];
  258. const currentWebview = page.$getAppWebview();
  259. currentWebview.hideTitleNViewButtonRedDot({
  260. index
  261. });
  262. // #endif
  263. uni.navigateTo({
  264. url: '/pages/notice/notice'
  265. })
  266. }
  267. },
  268. // #endif
  269. computed: {
  270. ...mapState(['hasLogin', 'userCenterData'])
  271. },
  272. methods: {
  273. navTo(url) {
  274. if (!this.hasLogin) {
  275. url = '/pages/public/login';
  276. }
  277. uni.navigateTo({
  278. url
  279. })
  280. },
  281. //获取订单详情信息
  282. getOrderDetail(){
  283. let that = this;
  284. let param = {};
  285. param.url = that.sourceType == 'exchange' ? 'v1/front/member/afterSale/replacementDetail' : 'v3/business/front/after/sale/detail'; //获取退货详情接口
  286. param.method = 'GET';
  287. param.data = {};
  288. param.data.afsSn = that.afsSn;
  289. that.$request(param).then(res => {
  290. if (res.state == 200) {
  291. let result = res.data;
  292. that.orderProductList = result.orderProductList;
  293. that.applyImageList = result.applyImageList;
  294. that.returnLogList = result.returnLogList;
  295. that.allData = result || {};
  296. that.isShow = true;
  297. that.countup();
  298. } else {
  299. this.$api.msg(res.msg);
  300. }
  301. }).catch((e) => {
  302. //异常处理
  303. })
  304. },
  305. //计算时间差
  306. countup(){
  307. let that = this;
  308. let endTime = that.allData.deadline; //结束时间
  309. let endStrs = endTime.split(" ");
  310. let endTimeStamp = that.strtotime(endStrs[0],endStrs[1]); //结束时间时间戳(毫秒)
  311. that.countDown(endTimeStamp);
  312. },
  313. //倒计时
  314. countDown(endTimeStamp){
  315. let that = this;
  316. that.secInterval = setInterval(()=>{
  317. let currentTimestamp = new Date().getTime(); //当前时间时间戳 (毫秒数)
  318. let diffrentTimeStamp = endTimeStamp - currentTimestamp; //相差时间 毫秒数
  319. if(diffrentTimeStamp == 0){
  320. that.deadline = '';
  321. clearInterval(that.secInterval);
  322. that.getOrderDetail();
  323. }else if(diffrentTimeStamp > 0){
  324. //将时间戳转换为天,时,分,秒 并倒计时
  325. that.deadline = that.formatDuring(diffrentTimeStamp)
  326. }else{
  327. that.deadline = ''
  328. }
  329. },1000)
  330. },
  331. //将标准格式(2014-08-02 11:23:12)转化为时间戳 函数 参数:time_str为(2014-08-02) fix_time为(11:23:12)
  332. strtotime(time_str,fix_time){
  333. let time = (new Date()).getTime();
  334. if(time_str){
  335. let str = time_str.split('-');
  336. if(3 === str.length){
  337. let year = str[0] - 0;
  338. let month = str[1] - 0 - 1;
  339. var day = str[2] - 0;
  340. if(fix_time){
  341. let fix = fix_time.split(':');
  342. if(3 === fix.length){
  343. let hour = fix[0] - 0;
  344. let minute = fix[1] - 0;
  345. time = (new Date(year,month,day,hour,minute)).getTime();
  346. }
  347. }else{
  348. time = (new Date(year,month,day)).getTime();
  349. }
  350. }
  351. }
  352. return time;
  353. },
  354. //将时间戳转换为时分秒
  355. formatDuring(mss){
  356. let days = parseInt(mss / (1000 * 60 * 60 * 24));
  357. let hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  358. let minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60));
  359. let seconds = ((mss % (1000 * 60)) / 1000).toFixed(0);
  360. if(days > 0){
  361. return days + " 天 " + hours + " 小时 " + minutes + " 分钟 ";
  362. }else if(hours > 0){
  363. return hours + " 小时 " + minutes + " 分钟 ";
  364. }else if(minutes > 1){
  365. return minutes + " 分钟 " ;
  366. }else{ //如果剩 1分钟之内就不让显示
  367. return ''
  368. }
  369. },
  370. //去填写物流单号页面
  371. goLogisticsBill(){
  372. uni.navigateTo({
  373. url:'/pages/order/logisticsBill?afsSn=' + this.afsSn
  374. })
  375. },
  376. //去查看物流页面
  377. lookLogistics(){
  378. uni.navigateTo({
  379. url:'/pages/order/lookLogistics?orderSn=' + this.allData.orderSn
  380. })
  381. },
  382. //去进度详情页面
  383. progressDetails(){
  384. uni.navigateTo({
  385. url:'/pages/order/progressDetail?afsSn='+this.afsSn
  386. })
  387. },
  388. //退款失败,重新申请退款
  389. goApplyRefund(){
  390. let that = this;
  391. if (that.orderState == 20) { //待发货直接进入申请退款页面
  392. uni.redirectTo({
  393. url:'/pages/order/applyRefund?orderProductId='+that.allData.orderProductId + '&sourceType=orderDetail'
  394. })
  395. } else if (that.orderState == 30 || that.orderState == 40) {
  396. //待收货和待评价进入到选择服务页面
  397. uni.redirectTo({
  398. url:'/pages/order/selectService?orderProductId='+that.allData.orderProductId + '&orderSn=' + that.allData.orderSn
  399. })
  400. }
  401. },
  402. // 退款凭证图片预览
  403. preRefundVoucher(index){
  404. uni.previewImage({
  405. current:this.applyImageList[index],
  406. urls:this.applyImageList
  407. })
  408. },
  409. //去商品详情页
  410. goProductDetail(productId){
  411. uni.navigateTo({
  412. url:'/pages/product/detail?productId=' + productId
  413. })
  414. }
  415. }
  416. }
  417. </script>
  418. <style lang='scss'>
  419. page {
  420. background: $bg-color-split;
  421. }
  422. .container {
  423. display: flex;
  424. flex: 1;
  425. height: 100vh;
  426. position: relative;
  427. background-color: #FFFFFF;
  428. width: 750rpx;
  429. margin: 0 auto;
  430. .main_content{
  431. width: 100%;
  432. .order_state{
  433. /* background: url('/static/order-detail/refund_bg.png') no-repeat; */
  434. background-repeat: no-repeat;
  435. background-size:750rpx 340rpx;
  436. height: 340rpx;
  437. box-sizing: border-box;
  438. display: flex;
  439. flex-direction: column;
  440. align-items: center;
  441. justify-content: center;
  442. width: 100%;
  443. .state_title{
  444. display: flex;
  445. align-items: center;
  446. justify-content: center;
  447. width: 100%;
  448. image{
  449. width: 45rpx;
  450. height: 45rpx;
  451. margin-right: 20rpx;
  452. }
  453. text{
  454. font-size: 38rpx;
  455. font-family: PingFang SC;
  456. font-weight: bold;
  457. color: #FFFFFF;
  458. line-height: 32rpx;
  459. }
  460. }
  461. .await{
  462. margin-bottom: 139rpx;
  463. }
  464. .state_time{
  465. font-size: 24rpx;
  466. font-family: PingFang SC;
  467. font-weight: 500;
  468. color: #FFFFFF;
  469. line-height: 32rpx;
  470. margin: 22rpx 0 32rpx;
  471. }
  472. .refund_reason{
  473. width: 640rpx;
  474. text-overflow: -o-ellipsis-lastline;
  475. overflow: hidden;
  476. text-overflow: ellipsis;
  477. display: -webkit-box;
  478. -webkit-line-clamp: 2;
  479. line-clamp: 2;
  480. -webkit-box-orient: vertical;
  481. margin-bottom: 0;
  482. }
  483. }
  484. .refund_address{
  485. display: flex;
  486. align-items: flex-end;
  487. border-bottom: 20rpx solid #F5F5F5;
  488. padding: 37rpx 0 37rpx 40rpx;
  489. box-sizing: border-box;
  490. .refund_address_map{
  491. width: 34rpx;
  492. height: 34rpx;
  493. margin-right: 30rpx;
  494. }
  495. .refund_address_des{
  496. display: flex;
  497. flex-direction: column;
  498. .refund_address_title{
  499. font-size: 28rpx;
  500. font-family: PingFang SC;
  501. font-weight: 500;
  502. color: #666666;
  503. line-height: 42rpx;
  504. }
  505. .refund_address_con{
  506. display: flex;
  507. align-items: center;
  508. font-size: 30rpx;
  509. font-family: PingFang SC;
  510. font-weight: 500;
  511. color: #333333;
  512. line-height: 45rpx;
  513. margin: 38rpx 0 29rpx;
  514. text:nth-child(2){
  515. color: #666666;
  516. margin-left: 40rpx;
  517. }
  518. }
  519. .refund_address_info{
  520. font-size: 30rpx;
  521. font-family: PingFang SC;
  522. font-weight: 500;
  523. color: #333333;
  524. line-height: 42rpx;
  525. }
  526. }
  527. }
  528. .refund_amount{
  529. display: flex;
  530. justify-content: space-between;
  531. align-items: center;
  532. height: 100rpx;
  533. margin-left: 20rpx;
  534. padding-right: 20rpx;
  535. box-sizing: border-box;
  536. border-bottom: 1rpx solid #E6E6E6;
  537. .refund_amount_left{
  538. font-size: 28rpx;
  539. font-family: PingFang SC;
  540. font-weight: 500;
  541. color: #343434;
  542. line-height: 45rpx;
  543. }
  544. .refund_amout_right{
  545. display: flex;
  546. align-items: center;
  547. .sum{
  548. font-size: 28rpx;
  549. font-family: PingFang SC;
  550. font-weight: 400;
  551. color: #949494;
  552. line-height: 45rpx;
  553. }
  554. .refund_amout_price{
  555. font-size: 24rpx;
  556. font-family: PingFang SC;
  557. font-weight: 500;
  558. color: #FC1C1C;
  559. /* line-height: 45rpx; */
  560. display: inline-block;
  561. text:nth-child(2){
  562. font-size: 26rpx;
  563. }
  564. }
  565. }
  566. }
  567. .speed_det{
  568. display: flex;
  569. align-items: center;
  570. width: 100%;
  571. height: 100rpx;
  572. justify-content: space-between;
  573. padding: 0 20rpx;
  574. box-sizing: border-box;
  575. text{
  576. font-size: 28rpx;
  577. font-family: PingFang SC;
  578. font-weight: 500;
  579. color: #343434;
  580. line-height: 45rpx;
  581. }
  582. image{
  583. width: 14rpx;
  584. height: 24rpx;
  585. }
  586. }
  587. .platform_audit{
  588. border-top: 20rpx solid #F5F5F5;
  589. .platform_audit_status{
  590. display: flex;
  591. justify-content: space-between;
  592. padding: 0 20rpx;
  593. height: 100rpx;
  594. align-items: center;
  595. text{
  596. font-size: 28rpx;
  597. font-family: PingFang SC;
  598. font-weight: 500;
  599. color: #343434;
  600. line-height: 45rpx;
  601. }
  602. }
  603. .platform_audit_remark{
  604. display: flex;
  605. justify-content: space-between;
  606. padding-right: 20rpx;
  607. margin-left: 20rpx;
  608. height: 100rpx;
  609. align-items: center;
  610. border-top: 1rpx solid #E6E6E6;
  611. text{
  612. font-size: 28rpx;
  613. font-family: PingFang SC;
  614. font-weight: 500;
  615. color: #343434;
  616. line-height: 45rpx;
  617. }
  618. text:nth-child(2){
  619. width: 560rpx;
  620. white-space: nowrap;
  621. text-overflow: ellipsis;
  622. overflow: hidden;
  623. word-break: break-all;
  624. text-align: right;
  625. }
  626. }
  627. }
  628. .logistics_bill{
  629. padding: 30rpx 20rpx 30rpx 0;
  630. box-sizing: border-box;
  631. display: flex;
  632. justify-content: flex-end;
  633. margin-left: 20rpx;
  634. border-top: 1rpx solid #E6E6E6;
  635. text{
  636. width: 304rpx;
  637. height: 68rpx;
  638. background: #FFFFFF;
  639. border: 1rpx solid #FC1C1C;
  640. font-size: 32rpx;
  641. font-family: PingFang SC;
  642. font-weight: 500;
  643. color: #F40903;
  644. line-height: 68rpx;
  645. text-align: center;
  646. border-radius: 34rpx;
  647. }
  648. .re_apply_refund{
  649. width: 176rpx;
  650. height: 60rpx;
  651. background: #FFFFFF;
  652. border: 1rpx solid #FC1C1C;
  653. border-radius: 30rpx;
  654. display: flex;
  655. align-items: center;
  656. justify-content: center;
  657. }
  658. }
  659. .refund_logisticsBill{
  660. height: 100rpx;
  661. padding: 0 20rpx;
  662. box-sizing: border-box;
  663. display: flex;
  664. justify-content: space-between;
  665. align-items: center;
  666. border-top: 20rpx solid #F5F5F5;
  667. text{
  668. font-size: 28rpx;
  669. font-family: PingFang SC;
  670. font-weight: 500;
  671. color: #343434;
  672. line-height: 45rpx;
  673. }
  674. image{
  675. width: 14rpx;
  676. height: 24rpx;
  677. }
  678. }
  679. .order_goods{
  680. border-top: 20rpx solid #F5F5F5;
  681. .order_goods_title{
  682. font-size: 30rpx;
  683. font-family: PingFang SC;
  684. font-weight: 500;
  685. color: #343434;
  686. line-height: 74rpx;
  687. padding-left: 20rpx;
  688. box-sizing: border-box;
  689. }
  690. .goods_list{
  691. padding-top: 20rpx;
  692. border-bottom: 1rpx dashed #F2F2F2;
  693. .goods_pre{
  694. display: flex;
  695. padding: 0 20rpx;
  696. box-sizing: border-box;
  697. margin-bottom: 22rpx;
  698. .goods_image{
  699. width: 200rpx;
  700. height: 200rpx;
  701. background: #F3F3F3;
  702. border-radius: 14px;
  703. image{
  704. width: 200rpx;
  705. height: 200rpx;
  706. border-radius: 14rpx;
  707. }
  708. }
  709. .goods_pre_right{
  710. display: flex;
  711. justify-content: space-between;
  712. width: 585rpx;
  713. .goods_des{
  714. margin-left: 25rpx;
  715. padding-top: 8rpx;
  716. box-sizing: border-box;
  717. .goods_name{
  718. width: 340rpx;
  719. font-size: 28rpx;
  720. font-family: PingFang SC;
  721. font-weight: 500;
  722. color: #343434;
  723. line-height: 39rpx;
  724. text-overflow: -o-ellipsis-lastline;
  725. overflow: hidden;
  726. text-overflow: ellipsis;
  727. display: -webkit-box;
  728. -webkit-line-clamp: 2;
  729. line-clamp: 2;
  730. -webkit-box-orient: vertical;
  731. }
  732. .goods_spec{
  733. font-size: 24rpx;
  734. font-family: PingFang SC;
  735. font-weight: 400;
  736. color: #949494;
  737. line-height: 30rpx;
  738. margin-top: 20rpx;
  739. }
  740. }
  741. .goods_prices{
  742. display: flex;
  743. flex-direction: column;
  744. justify-content: center;
  745. align-items: flex-end;
  746. .goods_price{
  747. text{
  748. display: inline-block;
  749. font-family: PingFang SC;
  750. font-weight: 500;
  751. color: #343434;
  752. line-height: 30rpx;
  753. }
  754. .unit{
  755. font-size: 24rpx;
  756. }
  757. .price_int{
  758. font-size: 32rpx;
  759. }
  760. .price_decimal{
  761. font-size: 24rpx;
  762. }
  763. }
  764. .goods_num{
  765. font-size: 24rpx;
  766. font-family: PingFang SC;
  767. font-weight: 500;
  768. color: #2D2D2D;
  769. line-height: 30rpx;
  770. }
  771. .refund_btn{
  772. padding: 12rpx 15rpx;
  773. box-sizing: border-box;
  774. border: 1rpx solid #2D2D2D;
  775. border-radius: 25rpx;
  776. font-size: 26rpx;
  777. line-height: 26rpx;
  778. font-family: PingFang SC;
  779. font-weight: 400;
  780. color: #333333;
  781. margin-top: 22rpx;
  782. }
  783. }
  784. }
  785. }
  786. }
  787. }
  788. .order_des{
  789. box-sizing: border-box;
  790. margin-top: 30rpx;
  791. padding-bottom:60rpx;
  792. .order_des_pre{
  793. font-size: 26rpx;
  794. font-family: PingFang SC;
  795. font-weight: 500;
  796. color: #9A9A9A;
  797. line-height: 24rpx;
  798. display: flex;
  799. margin-bottom: 30rpx;
  800. padding: 0 20rpx;
  801. box-sizing: border-box;
  802. text:nth-child(2){
  803. width: 560rpx;
  804. white-space: nowrap;
  805. text-overflow: ellipsis;
  806. overflow: hidden;
  807. word-break: break-all;
  808. }
  809. }
  810. .refund_voucher{
  811. display: flex;
  812. margin-bottom: 30rpx;
  813. padding-left: 20rpx;
  814. text{
  815. font-size: 26rpx;
  816. font-family: PingFang SC;
  817. font-weight: 500;
  818. color: #9A9A9A;
  819. line-height: 24rpx;
  820. display: flex;
  821. margin-bottom: 30rpx;
  822. }
  823. .refund_img_wrap{
  824. max-width: 600rpx;
  825. margin-right:20rpx;
  826. }
  827. .refund_vouhcer_list{
  828. max-width: 580rpx;
  829. padding-right: 20rpx;
  830. box-sizing: border-box;
  831. display: flex;
  832. flex-wrap: nowrap;
  833. overflow-x: auto;
  834. .refund_voucher_pre{
  835. width: 156rpx;
  836. height: 156rpx;
  837. margin-right: 10rpx;
  838. image{
  839. width: 156rpx;
  840. height: 156rpx;
  841. }
  842. }
  843. }
  844. }
  845. }
  846. .share_btn{
  847. width: 100%;
  848. height: 100rpx;
  849. background: #FFFFFF;
  850. border-top: 1rpx solid #EDEDED;
  851. display: flex;
  852. align-items: center;
  853. padding: 0 118rpx;
  854. box-sizing: border-box;
  855. justify-content: space-between;
  856. .share_btn_pre{
  857. display: flex;
  858. align-items: center;
  859. image{
  860. width: 28rpx;
  861. height: 28rpx;
  862. margin-right: 9rpx;
  863. }
  864. image:nth-of-type(2){
  865. width: 24rpx;
  866. height: 29rpx;
  867. }
  868. text{
  869. font-size: 26rpx;
  870. font-family: PingFang SC;
  871. font-weight: 500;
  872. color: #333333;
  873. line-height: 24rpx;
  874. }
  875. }
  876. }
  877. }
  878. }
  879. </style>