index.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. <script setup lang="ts">
  2. import { handleCommonRefundOrderCancel, refundStatus } from '../afterSalesList/index'
  3. import router from '@/router'
  4. import { StaticUrl } from '@/config'
  5. definePage({
  6. name: 'common-afterSalesDetail',
  7. islogin: true,
  8. style: {
  9. navigationBarTitleText: '售后详情',
  10. },
  11. })
  12. const showTime = ref(false)
  13. const TimeId = ref()
  14. const dayId = ref(1)
  15. const refundOrderInfo = ref<Api.OrderRefundDetails>()
  16. const refundNumber = ref()
  17. onLoad((options: any) => {
  18. refundNumber.value = options.refundNumber
  19. getDetail(options.refundNumber)
  20. })
  21. async function getDetail(refundNumber: string) {
  22. const res = await api.xsb.refundDetails({ data: { refundNumber } })
  23. refundOrderInfo.value = res.data
  24. }
  25. async function handleCancel() {
  26. await handleCommonRefundOrderCancel(refundNumber.value)
  27. getDetail(refundNumber.value)
  28. }
  29. function copyToClipboard(text: string) {
  30. uni.setClipboardData({
  31. data: text,
  32. showToast: true,
  33. })
  34. }
  35. </script>
  36. <template>
  37. <page-meta :page-style="showTime ? 'overflow: hidden;' : '' " />
  38. <view v-if="refundOrderInfo" class="page-xsb px24rpx pt20rpx">
  39. <!-- <view class="mb24rpx rounded-16rpx bg-white p24rpx">
  40. <view class="text-32rpx text-#222 font-semibold">
  41. 待填写配送信息
  42. </view>
  43. <view class="mt20rpx text-24rpx text-#AAAAAA">
  44. 申请已通过,请在47时59分内,填写配送信息并支付配送费
  45. </view>
  46. </view> -->
  47. <!-- <view class="mb24rpx rounded-16rpx bg-white p24rpx">
  48. <view class="text-32rpx text-#222 font-semibold">
  49. 配送信息
  50. </view>
  51. <view class="mt24rpx flex items-center justify-between" @click="showTime = true">
  52. <view class="text-28rpx">
  53. <text class="text-#FF4D3A">
  54. *
  55. </text>
  56. <text class="text-#222">
  57. 取件时间
  58. </text>
  59. </view>
  60. <view class="flex items-center text-#AAAAAA">
  61. 请选择时间 <wd-icon name="chevron-right" size="22px" />
  62. </view>
  63. </view>
  64. <view class="mt24rpx flex items-center justify-between">
  65. <view class="text-28rpx">
  66. <text class="text-#FF4D3A">
  67. *
  68. </text>
  69. <text class="text-#222">
  70. 取件地址
  71. </text>
  72. </view>
  73. <view class="flex items-center text-#222">
  74. 富力中心A座3401
  75. </view>
  76. </view>
  77. <view class="mt24rpx flex items-center justify-between">
  78. <view />
  79. <view class="flex items-center text-#222">
  80. 杨先生 189****4678
  81. </view>
  82. </view>
  83. <view class="mt24rpx flex items-center justify-between">
  84. <view class="text-28rpx">
  85. <text class="text-#FF4D3A">
  86. *
  87. </text>
  88. <text class="text-#222">
  89. 退货方式
  90. </text>
  91. </view>
  92. <view class="flex items-center text-#222">
  93. 上门取件
  94. </view>
  95. </view>
  96. <view class="mt24rpx h2rpx w-full bg-#F0F0F0" />
  97. <view class="mt28rpx text-28rpx text-#222 font-semibold">
  98. 请支付配送费 <text class="text-32rpx text-#FF4D3A">
  99. ¥12
  100. </text>
  101. </view>
  102. <view class="mt24rpx text-24rpx text-#AAAAAA">
  103. <view> 1.因个人原因退货,需客户承担商品返还商家的运费</view>
  104. <view class="mt20rpx">
  105. 2.请确保商品不影响二次销售,否则商家会拒绝收货
  106. </view>
  107. </view>
  108. <view class="mt24rpx w-full">
  109. <wd-button block>
  110. 立即支付
  111. </wd-button>
  112. </view>
  113. </view> -->
  114. <view v-if="refundOrderInfo.omsOrderRefundRecords" class="rounded-16rpx bg-white p24rpx">
  115. <view class="text-32rpx text-#222 font-semibold">
  116. {{ refundOrderInfo.omsOrderRefundRecords[0].auditStatusDescribe }}
  117. </view>
  118. <view class="mt20rpx text-24rpx text-#AAAAAA">
  119. {{ refundOrderInfo.omsOrderRefundRecords[0].instructions }}
  120. </view>
  121. <view class="mt24rpx flex items-center justify-between text-28rpx">
  122. <view class="text-#222 font-semibold">
  123. {{ refundStatus.ReturnCompleted == refundOrderInfo.returnMoneySts ? '实' : '应' }}退款金额
  124. </view>
  125. <view class="text-#FF4D3A font-semibold">
  126. ¥{{ refundOrderInfo.refundAmount }}
  127. </view>
  128. </view>
  129. <view v-if="refundStatus.ReturnCompleted == refundOrderInfo.returnMoneySts" class="mt20rpx flex flex-wrap items-center gap-20rpx text-28rpx">
  130. <view class="flex items-center">
  131. <view class="text-#222 font-semibold">
  132. 退款金额
  133. </view>
  134. <view class="text-#FF4D3A font-semibold">
  135. ¥{{ refundOrderInfo.refundAmount }}
  136. </view>
  137. </view>
  138. <view class="ml20rpx flex items-center">
  139. <view class="text-#222 font-semibold">
  140. 退还积分:
  141. </view>
  142. <view class="text-#FF4D3A font-semibold">
  143. ¥{{ refundOrderInfo.omsOrderVo.offsetPoints }}
  144. </view>
  145. </view>
  146. <view class="flex items-center">
  147. <view class="text-#222 font-semibold">
  148. 退还优惠券:
  149. </view>
  150. <view class="text-#FF4D3A font-semibold">
  151. ¥{{ refundOrderInfo.isAll ? refundOrderInfo.couponBaseInfoDTO.discountMoney : '0' }}
  152. </view>
  153. </view>
  154. </view>
  155. <!-- <view class="mt20rpx text-24rpx text-#AAAAAA">
  156. 申请通过后,将退回至原账户
  157. </view> -->
  158. <!-- <view v-if="refundOrderInfo.returnMoneySts == refundStatus.ReturnCompleted" class="mt20rpx flex items-center text-24rpx text-#AAAAAA">
  159. <view>退还金额:{{ refundOrderInfo.userRefundMoney }}</view>
  160. <view class="ml20rpx">
  161. 退还积分:{{ refundOrderInfo.refundScore }}(已过期{{ refundOrderInfo.refundExpiredScore }})
  162. </view>
  163. </view> -->
  164. </view>
  165. <view class="mt20rpx rounded-16rpx bg-white p24rpx">
  166. <view class="text-28rpx font-semibold">
  167. 优惠券处理
  168. </view>
  169. <view class="mt10rpx text-24rpx">
  170. 使用的优惠券:{{ refundOrderInfo.couponBaseInfoDTO.activityName }}
  171. </view>
  172. <view class="mb24rpx mt10rpx text-24rpx">
  173. <view> 处理说明:</view>
  174. <template v-if="refundStatus.PendingAudit == refundOrderInfo.returnMoneySts">
  175. <view> 当前售后单为全额退款。审核通过后,优惠券退还,有效期不变;</view>
  176. <view>审核不通过,则优惠券保持原状。</view>
  177. </template>
  178. <template v-else-if="[refundStatus.Rejected, refundStatus.Cancel].includes(refundOrderInfo.returnMoneySts as number)">
  179. <view> 优惠券保持已使用状态,不退还。</view>
  180. </template>
  181. <template v-else-if="refundStatus.ReturnCompleted == refundOrderInfo.returnMoneySts">
  182. <view v-if="refundOrderInfo.isAll">
  183. <view> 有效期不变至: {{ refundOrderInfo.couponBaseInfoDTO.expirationTime }}</view>
  184. </view>
  185. <view v-else>
  186. <view> 优惠券已使用,不退回</view>
  187. </view>
  188. </template>
  189. </view>
  190. <wd-button v-if="refundStatus.ReturnCompleted == refundOrderInfo.returnMoneySts" @click="router.push({ name: 'xsb-coupon', params: { couponId: refundOrderInfo.couponBaseInfoDTO.allowanceId, activeTab: refundOrderInfo.isAll ? '2' : '1' } })">
  191. 查看优惠卷
  192. </wd-button>
  193. </view>
  194. <view class="mt20rpx rounded-16rpx bg-white p24rpx">
  195. <view class="grid grid-cols-5 py24rpx text-28rpx text-#222">
  196. <view
  197. v-if="[refundStatus.Cancel].includes(Number(refundOrderInfo.returnMoneySts))"
  198. class="flex flex-col items-center"
  199. @click="useSysStore().getRefunOrder(refundOrderInfo.orderNumber as string)"
  200. >
  201. <image :src="`${StaticUrl}/refund-apply.png`" class="h40rpx w40rpx" />
  202. <view class="mt40rpx">
  203. 再次申请
  204. </view>
  205. </view>
  206. <view
  207. v-if="[refundStatus.PendingAudit].includes(Number(refundOrderInfo.returnMoneySts))"
  208. class="flex flex-col items-center"
  209. @click="handleCancel"
  210. >
  211. <image :src="`${StaticUrl}/orderDetaile-apply.png`" class="h40rpx w40rpx" />
  212. <view class="mt40rpx">
  213. 取消申请
  214. </view>
  215. </view>
  216. <view class="contact relative flex flex-col items-center">
  217. <image :src="`${StaticUrl}/orderDetaile-wx.png`" class="h40rpx w40rpx" />
  218. <Zcontact>
  219. <view class="mt40rpx text-28rpx">
  220. 联系商家
  221. </view>
  222. </Zcontact>
  223. </view>
  224. </view>
  225. </view>
  226. <view class="mt20rpx rounded-16rpx bg-white p24rpx">
  227. <view class="mb20rpx text-32rpx font-semibold">
  228. 退款流程
  229. </view>
  230. <wd-steps :active="0" vertical dot>
  231. <wd-step v-for="item in refundOrderInfo?.omsOrderRefundRecords" :key="item.id">
  232. <template #title>
  233. <view class="text-28rpx font-semibold">
  234. {{ item.auditStatusDescribe }}
  235. </view>
  236. </template>
  237. <template #description>
  238. <view class="mt20rpx text-24rpx text-#AAAAAA">
  239. <view>{{ item.instructions }} </view>
  240. <view class="mt12rpx">
  241. {{ item.createTime }}
  242. </view>
  243. </view>
  244. </template>
  245. </wd-step>
  246. </wd-steps>
  247. </view>
  248. <view class="mt20rpx rounded-16rpx bg-white p24rpx">
  249. <view class="flex items-center justify-between text-28rpx font-semibold">
  250. <view class="">
  251. 退款商品
  252. </view>
  253. <view class="text-#FF4A39">
  254. 退款金额:¥{{ refundOrderInfo.refundAmount }}
  255. </view>
  256. </view>
  257. <view class="mt24rpx h2rpx w-full bg-#F0F0F0" />
  258. <CollapsePanel :line-height="150">
  259. <view v-for="item in refundOrderInfo.orderRefundSkuList" :key="item.skuId" class="mb20rpx">
  260. <view class="w-full flex items-center">
  261. <view class="mr20rpx w120rpx flex-shrink-0">
  262. <image
  263. :src="item.pic"
  264. class="h120rpx w120rpx"
  265. />
  266. </view>
  267. <view class="flex-1">
  268. <view class="w-full flex items-center justify-between font-semibold">
  269. <view class="text-28rpx">
  270. {{ item.skuName }}
  271. </view>
  272. <view class="text-32rpx text-#FF4D3A">
  273. ¥{{ item.skuTotalPrice }}
  274. </view>
  275. </view>
  276. <view class="text-24rpx text-#AAAAAA">
  277. 规格:{{ item.spec }}
  278. </view>
  279. <view class="text-24rpx text-#AAAAAA">
  280. 单价:¥{{ item.skuPrice }}
  281. </view>
  282. <view class="text-24rpx text-#AAAAAA">
  283. 数量:{{ item.productCount }}
  284. </view>
  285. </view>
  286. </view>
  287. <view class="mt24rpx h2rpx w-full bg-#F0F0F0" />
  288. </view>
  289. </CollapsePanel>
  290. </view>
  291. <view class="mt20rpx rounded-16rpx bg-white p24rpx">
  292. <view class="mt24rpx flex items-center justify-between">
  293. <view class="text-28rpx">
  294. 商品金额
  295. </view>
  296. <view class="text-#FF4A39 font-semibold">
  297. ¥{{ refundOrderInfo.omsOrderVo.total }}
  298. </view>
  299. </view>
  300. <view class="mt24rpx flex items-center justify-between">
  301. <view class="text-28rpx">
  302. 配送费({{ refundOrderInfo.omsOrderVo.dvyType == 1 ? '快递' : '即时配送' }})
  303. </view>
  304. <view class="text-#FF4A39 font-semibold">
  305. ¥{{ refundOrderInfo.freightAmount }}
  306. </view>
  307. </view>
  308. <view v-if="refundOrderInfo.couponBaseInfoDTO.discountMoney" class="mt24rpx flex items-center justify-between">
  309. <view class="text-28rpx">
  310. 优惠券
  311. </view>
  312. <view class="text-#FF4A39 font-semibold">
  313. -¥{{ refundOrderInfo.couponBaseInfoDTO.discountMoney }}
  314. </view>
  315. </view>
  316. <view class="mt24rpx flex items-center justify-between">
  317. <view class="text-28rpx">
  318. 积分({{ refundOrderInfo.omsOrderVo.offsetPoints }})
  319. </view>
  320. <view class="text-#FF4A39 font-semibold">
  321. -¥{{ refundOrderInfo.omsOrderVo.offsetPointsMoney }}
  322. </view>
  323. </view>
  324. <view class="my24rpx h2rpx w-full bg-#F0F0F0" />
  325. <view class="flex items-center">
  326. <view class="flex items-center justify-end">
  327. <view class="text-28rpx font-semibold">
  328. 总计:
  329. </view>
  330. <view class="ml8rpx text-28rpx text-#FF4D3A font-semibold">
  331. ¥{{ refundOrderInfo.omsOrderVo.orderMoney }}
  332. </view>
  333. </view>
  334. <view class="ml10rpx flex items-center">
  335. <view clas="text-28rpx">
  336. 共减
  337. </view>
  338. <view class="ml5rpx text-28rpx text-#FF4D3A font-semibold">
  339. {{ refundOrderInfo.omsOrderVo.offsetPointsMoney + refundOrderInfo.couponBaseInfoDTO.discountMoney }}
  340. </view>
  341. </view>
  342. <view class="ml10rpx flex items-center">
  343. <view clas="text-28rpx">
  344. 实付款
  345. </view>
  346. <view class="ml5rpx text-28rpx text-#FF4D3A font-semibold">
  347. {{ refundOrderInfo.userRefundMoney }}
  348. </view>
  349. </view>
  350. </view>
  351. </view>
  352. <view class="mt20rpx rounded-16rpx bg-white p24rpx">
  353. <view class="pb20rpx">
  354. <view class="mb28rpx flex items-center justify-between">
  355. <view class="text-28rpx text-#AAAAAA">
  356. 订单编号
  357. </view>
  358. <view class="flex items-center">
  359. <text class="text-#222">
  360. {{ refundOrderInfo.orderNumber }}
  361. </text>
  362. <view class="ml10rpx" @click="copyToClipboard(refundOrderInfo.orderNumber as string)">
  363. <wd-icon name="file-copy" size="22px" />
  364. </view>
  365. </view>
  366. </view>
  367. <view class="mb28rpx flex items-center justify-between">
  368. <view class="text-28rpx text-#AAAAAA">
  369. 售后编号
  370. </view>
  371. <view class="flex items-center">
  372. <text class="text-#222">
  373. {{ refundNumber }}
  374. </text>
  375. <view class="ml10rpx" @click="copyToClipboard(refundNumber)">
  376. <wd-icon name="file-copy" size="22px" />
  377. </view>
  378. </view>
  379. </view>
  380. <view class="mb28rpx flex items-center justify-between">
  381. <view class="text-28rpx text-#AAAAAA">
  382. 申请时间
  383. </view>
  384. <view class="text-#222">
  385. {{ refundOrderInfo.applyTime }}
  386. </view>
  387. </view>
  388. <view class="mb28rpx flex items-center justify-between">
  389. <view class="text-28rpx text-#AAAAAA">
  390. 服务类型
  391. </view>
  392. <view class="text-#222">
  393. 仅退款
  394. </view>
  395. </view>
  396. <view class="mb28rpx flex items-center justify-between">
  397. <view class="text-28rpx text-#AAAAAA">
  398. 申请原因
  399. </view>
  400. <view class="text-#222">
  401. {{ refundOrderInfo.buyerReason }}
  402. </view>
  403. </view>
  404. </view>
  405. </view>
  406. <view class="h30rpx" />
  407. <Zpopup v-model="showTime" bg="#fff">
  408. <view class="px24rpx py28rpx">
  409. <view class="text-center text-32rpx font-semibold">
  410. 选择收件时间
  411. </view>
  412. <view class="mt24rpx flex items-center rounded-16rpx bg-#ffead1 px24rpx py12rpx text-28rpx">
  413. <wd-icon name="info-circle-filled" size="22px" color="#FF941A" />
  414. <view class="ml16rpx text-28rpx">
  415. 请您确保选择的时间,配送员能收到货。
  416. </view>
  417. </view>
  418. <view class="flex">
  419. <view class="w250rpx">
  420. <scroll-view scroll-y class="mt24rpx h400rpx">
  421. <view v-for="item in 10" :key="item" :class="[dayId == item ? 'text-[var(--them-color)]' : 'text-#222']" class="mb28rpx h60rpx flex items-center justify-center" @click="dayId = item">
  422. 11月29日(今天)
  423. </view>
  424. <view class="h20rpx" />
  425. </scroll-view>
  426. </view>
  427. <view class="flex-1">
  428. <scroll-view scroll-y class="mt24rpx box-border h400rpx">
  429. <view v-for="item in 10" :key="item" class="mb28rpx box-border h60rpx w-full flex items-center justify-end" :class="[TimeId == item ? 'text-[var(--them-color)]' : 'text-#222']" @click="TimeId = item">
  430. <view>12:00-14:00(8.7元配送费)</view>
  431. <view class="ml20rpx h32rpx w32rpx">
  432. <image
  433. v-if="TimeId == item"
  434. :src="`${StaticUrl}/checked.png`"
  435. class="h32rpx w32rpx"
  436. />
  437. </view>
  438. </view>
  439. <view class="h20rpx" />
  440. </scroll-view>
  441. </view>
  442. </view>
  443. </view>
  444. <template #footer>
  445. <view class="pb20rpx">
  446. <wd-button block>
  447. 确定
  448. </wd-button>
  449. </view>
  450. </template>
  451. </Zpopup>
  452. </view>
  453. </template>
  454. <style scoped>
  455. </style>