fastMailOrderDetail.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  1. <template>
  2. <div>
  3. <el-drawer :visible.sync="drawerVisible" :direction="direction" size="1000px" :before-close="handleClose">
  4. <div v-loading="loading">
  5. <div class="detailHead">
  6. <div class="acea-row row-between headerBox">
  7. <div class="full">
  8. <div class="order_icon"><span class="iconfont icon-shouhou_tuikuan-2"></span></div>
  9. <div class="text">
  10. <div class="title">退款订单</div>
  11. <div>
  12. <span class="mr20">退款单号:{{ refundInfo.refundOrderNo }}</span>
  13. </div>
  14. </div>
  15. </div>
  16. <!-- 审核 -->
  17. <div class="acea-row row-center-wrapper">
  18. <el-button size="small" @click.native="onOrderMark()" v-hasPermi="['platform:refund:order:mark']"
  19. >订单备注</el-button
  20. >
  21. <el-button
  22. v-if="
  23. checkPermi(['platform:refund:order:compulsory:refund']) &&
  24. (refundInfo.refundStatus === 0 || refundInfo.refundStatus === 5)
  25. "
  26. type="primary"
  27. size="small"
  28. v-debounceClick="
  29. () => {
  30. handlerCompulsoryReturn(refundInfo);
  31. }
  32. "
  33. >强制退款</el-button
  34. >
  35. </div>
  36. </div>
  37. <ul class="list">
  38. <li class="item">
  39. <div class="title">退款状态</div>
  40. <div class="color-warning">{{ refundInfo.refundStatus | refundStatusFilter }}</div>
  41. </li>
  42. <li class="item">
  43. <div class="title">退款金额</div>
  44. <div>¥ {{ refundInfo.refundPrice || '0.0' }}</div>
  45. </li>
  46. <li class="item">
  47. <div class="title">实付金额</div>
  48. <div>{{ refundInfo.payPrice }}</div>
  49. </li>
  50. <li class="item">
  51. <div class="title">创建时间</div>
  52. <div>{{ refundInfo.orderInfoVo ? refundInfo.orderInfoVo.createTime : '' }}</div>
  53. </li>
  54. </ul>
  55. </div>
  56. <el-tabs type="border-card" v-model="activeName">
  57. <el-tab-pane label="售后信息" name="refund">
  58. <div class="detailSection" style="border: none">
  59. <div class="title">退款商品</div>
  60. <ul class="list">
  61. <li class="item row-middle">
  62. <div class="image mr10">
  63. <el-image
  64. :src="refundInfo.image"
  65. :preview-src-list="[refundInfo.image]"
  66. style="width: 40px; height: 40px"
  67. ></el-image>
  68. </div>
  69. <div>
  70. <div class="text666 mb10 productName line-height-15">{{ refundInfo.productName }}</div>
  71. <div class="text999">
  72. <span>{{ refundInfo.sku }}</span
  73. ><span class="ml30">售价:¥{{ refundInfo.price }}</span>
  74. </div>
  75. </div>
  76. </li>
  77. </ul>
  78. </div>
  79. <div class="detailSection">
  80. <div class="title">退款明细</div>
  81. <ul class="list">
  82. <li class="item">
  83. <div class="lang">退款数量:</div>
  84. <div class="value">{{ refundInfo.applyRefundNum }}</div>
  85. </li>
  86. <li class="item">
  87. <div class="lang">购买数量:</div>
  88. <div class="value">{{ refundInfo.payNum }}</div>
  89. </li>
  90. <li class="item">
  91. <div class="lang">预计退款方式:</div>
  92. <div class="value">原支付返还</div>
  93. </li>
  94. <li v-show="refundInfo.refundStatus === 2 || refundInfo.refundStatus === 3" class="item">
  95. <div class="lang">退回运费:</div>
  96. <div class="value">{{ refundInfo.refundFreightFee }}</div>
  97. </li>
  98. <li v-show="refundInfo.refundStatus === 2 || refundInfo.refundStatus === 3" class="item">
  99. <div class="lang">退一级佣金:</div>
  100. <div class="value">{{ refundInfo.refundFirstBrokerageFee }}</div>
  101. </li>
  102. <li v-show="refundInfo.refundStatus === 2 || refundInfo.refundStatus === 3" class="item">
  103. <div class="lang">退回抵扣积分:</div>
  104. <div class="value">{{ refundInfo.refundUseIntegral }}</div>
  105. </li>
  106. <li v-show="refundInfo.refundStatus === 2 || refundInfo.refundStatus === 3" class="item">
  107. <div class="lang">收回赠送积分:</div>
  108. <div class="value">{{ refundInfo.refundGainIntegral }}</div>
  109. </li>
  110. <li v-show="refundInfo.refundStatus === 2 || refundInfo.refundStatus === 3" class="item">
  111. <div class="lang">退二级返佣:</div>
  112. <div class="value">{{ refundInfo.refundSecondBrokerageFee }}</div>
  113. </li>
  114. </ul>
  115. </div>
  116. <!-- 退款流程信息-->
  117. <div class="detailSection">
  118. <div class="title">退款流程信息</div>
  119. <div class="detail-centent acea-row">
  120. <div>
  121. <!-- 操作类型:apply-申请退款,audit-商家审核,returning-商品退回,receiving-商家确认收货,refund-退款,compulsory-平台强制退款,revoke-撤销-->
  122. <el-steps
  123. direction="vertical"
  124. :active="
  125. refundInfo.promoterType === 'merchant' ? 2 : refundInfo.statusList && refundInfo.statusList.length
  126. "
  127. finish-status="success"
  128. >
  129. <el-step title="直接退款-商家" v-if="refundInfo.promoterType === 'merchant'">
  130. <template slot="description">
  131. <div class="mb10">
  132. {{ refundInfo.refundTime }}
  133. </div>
  134. </template>
  135. </el-step>
  136. <el-step
  137. title="申请退款-用户"
  138. v-if="
  139. refundInfo.statusList &&
  140. refundInfo.statusList.length &&
  141. refundInfo.statusList.find((item) => item.changeType === 'apply')
  142. "
  143. >
  144. <template slot="description">
  145. <div class="mb10">
  146. {{ refundInfo.statusList.filter((item) => item.changeType === 'apply')[0].createTime }}
  147. </div>
  148. <div class="refundReasonWap">
  149. <div class="acea-row">
  150. <div class="detail-term" style="width: 58%">
  151. <span class="detail-infoTitle">退款原因:</span
  152. ><span class="detail-info">{{ refundInfo.refundReasonWap }}</span>
  153. </div>
  154. <div class="detail-term">
  155. <span class="detail-infoTitle">退货方式:</span
  156. ><span class="detail-info">{{
  157. refundInfo.returnGoodsType === 1
  158. ? '快递退回'
  159. : refundInfo.returnGoodsType === 2
  160. ? '到店退货'
  161. : '不退货'
  162. }}</span>
  163. </div>
  164. </div>
  165. <div class="detail-term acea-row">
  166. <span class="detail-infoTitle">备注说明:</span>
  167. <div class="detail-info" style="width: 600px">
  168. {{ refundInfo.refundReasonWapExplain | filterEmpty }}
  169. </div>
  170. </div>
  171. <div class="detail-term">
  172. <div class="acea-row">
  173. <span class="detail-infoTitle">退款凭证:</span>
  174. <div v-if="refundInfo.refundReasonWapImg">
  175. <el-image
  176. v-for="(item, index) in refundInfo.refundReasonWapImg.split(',')"
  177. :key="index"
  178. style="width: 60px; height: 60px"
  179. :src="item"
  180. class="mr10"
  181. :preview-src-list="refundInfo.refundReasonWapImg.split(',')"
  182. ></el-image>
  183. </div>
  184. <div v-else>-</div>
  185. </div>
  186. </div>
  187. </div>
  188. </template>
  189. </el-step>
  190. <el-step
  191. title="商家审核-商家"
  192. v-if="
  193. refundInfo.statusList &&
  194. refundInfo.statusList.length &&
  195. refundInfo.statusList.find((item) => item.changeType === 'audit')
  196. "
  197. >
  198. <template slot="description" v-if="refundInfo.statusList && refundInfo.statusList.length">
  199. <div class="mb10">
  200. {{
  201. refundInfo.statusList.filter((item) => item.changeType === 'audit').length
  202. ? refundInfo.statusList.filter((item) => item.changeType === 'audit')[0].createTime
  203. : ''
  204. }}
  205. </div>
  206. <div v-if="refundInfo.refundStatus > 0" class="refundReasonWap">
  207. <div class="detail-term">
  208. <span class="detail-infoTitle">审核结果:</span
  209. ><span class="detail-info">{{
  210. refundInfo.refundStatus === 1 && refundInfo.statusList.length === 2
  211. ? '拒绝退款'
  212. : '同意退款'
  213. }}</span>
  214. </div>
  215. <div
  216. v-if="refundInfo.refundStatus === 1 && refundInfo.statusList.length === 2"
  217. class="detail-term"
  218. >
  219. <span class="detail-infoTitle">拒绝原因:</span>
  220. <span class="detail-info">{{ refundInfo.refundReason | filterEmpty }}</span>
  221. </div>
  222. <div
  223. v-if="refundInfo.returnGoodsType === 1 && refundInfo.refundStatus !== 1"
  224. class="detail-term"
  225. >
  226. <div>
  227. <span class="detail-infoTitle">退货地址:</span>
  228. <span class="detail-info">{{ refundInfo.receiverAddressDetail }}</span>
  229. </div>
  230. <div>
  231. <span class="detail-infoTitle"></span>
  232. <span class="detail-info">{{ refundInfo.receiver }} {{ refundInfo.receiverPhone }}</span>
  233. </div>
  234. </div>
  235. </div>
  236. </template>
  237. </el-step>
  238. <el-step
  239. title="商品退回信息-用户"
  240. v-if="
  241. refundInfo.statusList &&
  242. refundInfo.statusList.length &&
  243. refundInfo.statusList.find((item) => item.changeType === 'returning')
  244. "
  245. >
  246. <template slot="description" v-if="refundInfo.statusList && refundInfo.statusList.length">
  247. <div class="mb10">
  248. {{ refundInfo.statusList.filter((item) => item.changeType === 'returning')[0].createTime }}
  249. </div>
  250. <div v-if="refundInfo.returnGoodsType === 1" class="refundReasonWap">
  251. <div class="acea-row">
  252. <div class="detail-term" style="width: 58%">
  253. <span class="detail-infoTitle">物流公司:</span
  254. ><span class="detail-info">{{ refundInfo.expressName }}</span>
  255. </div>
  256. <div class="detail-term">
  257. <span class="detail-infoTitle">物流单号:</span>
  258. <span class="detail-info">{{ refundInfo.trackingNumber }}</span>
  259. </div>
  260. </div>
  261. <div class="detail-term">
  262. <div>
  263. <span class="detail-infoTitle">联系电话:</span>
  264. <span class="detail-info">{{ refundInfo.telephone }}</span>
  265. </div>
  266. </div>
  267. </div>
  268. <div v-if="refundInfo.returnGoodsType === 2" class="refundReasonWap">
  269. <div class="detail-term">
  270. <div>
  271. <span class="detail-infoTitle">联系电话:</span>
  272. <span class="detail-info">{{ refundInfo.telephone }}</span>
  273. </div>
  274. </div>
  275. </div>
  276. </template>
  277. </el-step>
  278. <el-step
  279. title="商家确认收货-商家"
  280. v-if="
  281. refundInfo.refundStatus !== 1 &&
  282. refundInfo.refundStatus !== 6 &&
  283. refundInfo.statusList &&
  284. refundInfo.statusList.length &&
  285. refundInfo.statusList.find((item) => item.changeType === 'receiving')
  286. "
  287. >
  288. <template slot="description" v-if="refundInfo.statusList && refundInfo.statusList.length">
  289. <div class="mb10">
  290. {{
  291. refundInfo.statusList.filter((item) => item.changeType === 'receiving').length
  292. ? refundInfo.statusList.filter((item) => item.changeType === 'receiving')[0].createTime
  293. : ''
  294. }}
  295. </div>
  296. </template>
  297. </el-step>
  298. <el-step
  299. title="商品拒绝收货-商家"
  300. v-if="
  301. refundInfo.statusList &&
  302. refundInfo.statusList.length &&
  303. refundInfo.statusList.find((item) => item.changeType === 'rejectionGoods')
  304. "
  305. >
  306. <template slot="description" v-if="refundInfo.statusList && refundInfo.statusList.length">
  307. <div class="mb10">
  308. {{
  309. refundInfo.statusList.filter((item) => item.changeType === 'rejectionGoods')[0].createTime
  310. }}
  311. </div>
  312. <div v-if="refundInfo.refundStatus > 0" class="refundReasonWap">
  313. <div class="detail-term">
  314. <span class="detail-infoTitle">审核结果:</span
  315. ><span class="detail-info">{{
  316. refundInfo.refundStatus === 1 ? '拒绝退款' : '同意退款'
  317. }}</span>
  318. </div>
  319. <div v-if="refundInfo.refundStatus === 1" class="detail-term">
  320. <span class="detail-infoTitle">拒绝原因:</span>
  321. <span class="detail-info">{{ refundInfo.refundReason | filterEmpty }}</span>
  322. </div>
  323. <div
  324. v-if="refundInfo.returnGoodsType === 1 && refundInfo.refundStatus !== 1"
  325. class="detail-term"
  326. >
  327. <div>
  328. <span class="detail-infoTitle">退货地址:</span>
  329. <span class="detail-info">{{ refundInfo.receiverAddressDetail }}</span>
  330. </div>
  331. <div>
  332. <span class="detail-infoTitle"></span>
  333. <span class="detail-info">{{ refundInfo.receiver }} {{ refundInfo.receiverPhone }}</span>
  334. </div>
  335. </div>
  336. </div>
  337. </template>
  338. </el-step>
  339. <el-step
  340. title="已撤销"
  341. v-if="
  342. refundInfo.refundStatus === 6 &&
  343. refundInfo.statusList &&
  344. refundInfo.statusList.length &&
  345. refundInfo.statusList.find((item) => item.changeType === 'revoke')
  346. "
  347. >
  348. <template slot="description" v-if="refundInfo.statusList && refundInfo.statusList.length">
  349. <div class="mb10">
  350. {{
  351. refundInfo.statusList.filter((item) => item.changeType === 'revoke').length
  352. ? refundInfo.statusList.filter((item) => item.changeType === 'revoke')[0].createTime
  353. : ''
  354. }}
  355. </div>
  356. </template>
  357. </el-step>
  358. <el-step
  359. title="平台强制退款成功"
  360. v-if="
  361. refundInfo.statusList &&
  362. refundInfo.statusList.length &&
  363. refundInfo.statusList.find((item) => item.changeType === 'compulsory')
  364. "
  365. >
  366. <template slot="description" v-if="refundInfo.statusList && refundInfo.statusList.length">
  367. <div class="mb10">
  368. {{
  369. refundInfo.statusList.filter((item) => item.changeType === 'compulsory').length
  370. ? refundInfo.statusList.filter((item) => item.changeType === 'compulsory')[0].createTime
  371. : ''
  372. }}
  373. </div>
  374. </template>
  375. </el-step>
  376. <el-step
  377. :title="refundInfo.promoterType === 'user' ? '退款成功' : '退款成功-商家直接退款'"
  378. v-if="
  379. refundInfo.refundStatus !== 1 &&
  380. refundInfo.refundStatus !== 6 &&
  381. refundInfo.statusList &&
  382. refundInfo.statusList.length &&
  383. refundInfo.statusList.find((item) => item.changeType === 'refund')
  384. "
  385. >
  386. <template slot="description" v-if="refundInfo.statusList && refundInfo.statusList.length">
  387. <div class="mb10">
  388. {{
  389. refundInfo.statusList.filter((item) => item.changeType === 'refund').length
  390. ? refundInfo.statusList.filter((item) => item.changeType === 'refund')[0].createTime
  391. : ''
  392. }}
  393. </div>
  394. </template>
  395. </el-step>
  396. <el-step
  397. title="商家审核-商家"
  398. v-if="
  399. refundInfo.refundStatus !== 1 &&
  400. refundInfo.refundStatus !== 2 &&
  401. refundInfo.refundStatus !== 6 &&
  402. refundInfo.refundStatus === 0
  403. "
  404. >
  405. </el-step>
  406. <el-step
  407. title="商品退回信息-用户"
  408. v-if="
  409. refundInfo.refundStatus !== 1 &&
  410. refundInfo.refundStatus !== 2 &&
  411. refundInfo.refundStatus !== 6 &&
  412. refundInfo.afterSalesType === 2 &&
  413. (refundInfo.refundStatus === 0 || refundInfo.refundStatus === 4)
  414. "
  415. >
  416. </el-step>
  417. <el-step
  418. title="商家确认收货-商家"
  419. v-if="
  420. refundInfo.refundStatus !== 1 &&
  421. refundInfo.refundStatus !== 2 &&
  422. refundInfo.refundStatus !== 6 &&
  423. refundInfo.afterSalesType === 2 &&
  424. (refundInfo.refundStatus === 0 ||
  425. refundInfo.refundStatus === 4 ||
  426. refundInfo.refundStatus === 5)
  427. "
  428. >
  429. </el-step>
  430. <el-step
  431. :title="refundInfo.promoterType === 'user' ? '退款成功' : '退款成功-商家直接退款'"
  432. v-if="
  433. refundInfo.refundStatus !== 1 &&
  434. refundInfo.refundStatus !== 6 &&
  435. (refundInfo.refundStatus === 0 ||
  436. refundInfo.refundStatus === 2 ||
  437. refundInfo.refundStatus === 4 ||
  438. refundInfo.refundStatus === 5)
  439. "
  440. >
  441. </el-step>
  442. </el-steps>
  443. </div>
  444. </div>
  445. </div>
  446. <div class="detailSection">
  447. <div class="title">平台备注</div>
  448. <ul class="list">
  449. <li class="item">
  450. <div>{{ refundInfo.platformRemark | filterEmpty }}</div>
  451. </li>
  452. </ul>
  453. </div>
  454. <div class="detailSection">
  455. <div class="title">商家备注</div>
  456. <ul class="list">
  457. <li class="item">
  458. <div>{{ refundInfo.merRemark | filterEmpty }}</div>
  459. </li>
  460. </ul>
  461. </div>
  462. </el-tab-pane>
  463. <el-tab-pane label="订单信息" name="detail" v-if="refundInfo.orderInfoVo">
  464. <div class="detailSection">
  465. <div class="title">用户信息</div>
  466. <ul class="list">
  467. <li class="item">
  468. <div class="lang">用户昵称:</div>
  469. <div class="value">
  470. <span class="mr5">{{ refundInfo.orderInfoVo.nickname }}</span>
  471. <span class="mr5"> | </span>
  472. <span>{{ refundInfo.orderInfoVo.uid }}</span>
  473. </div>
  474. </li>
  475. <li class="item">
  476. <div class="lang">用户电话:</div>
  477. <div class="value">{{ refundInfo.orderInfoVo.phone }}</div>
  478. </li>
  479. </ul>
  480. </div>
  481. <div v-show="refundInfo.orderInfoVo.secondType < 2" class="detailSection">
  482. <div class="title">配送信息</div>
  483. <ul class="list">
  484. <li class="item">
  485. <div class="lang">配送方式:</div>
  486. <div class="value">{{ refundInfo.orderInfoVo.shippingType === 1 ? '商家配送' :(refundInfo.orderInfoVo.shippingType === 2? '到店自提':'外卖配送' ) }}</div>
  487. </li>
  488. <li class="item">
  489. <div class="lang">收货电话:</div>
  490. <div class="value">{{ refundInfo.orderInfoVo.userPhone | filterEmpty }}</div>
  491. </li>
  492. <li class="item">
  493. <div class="lang">收货人:</div>
  494. <div class="value">{{ refundInfo.orderInfoVo.realName | filterEmpty }}</div>
  495. </li>
  496. </ul>
  497. <div class="userAddress acea-row">
  498. <div class="lang">收货地址:</div>
  499. <div class="value">{{ refundInfo.orderInfoVo.userAddress | filterEmpty }}</div>
  500. </div>
  501. </div>
  502. <div class="detailSection">
  503. <div class="title">订单信息</div>
  504. <ul class="list">
  505. <li class="item">
  506. <div class="lang">订单号:</div>
  507. <div class="value">{{ refundInfo.orderInfoVo.orderNo }}</div>
  508. </li>
  509. <li class="item">
  510. <div class="lang">商品总数:</div>
  511. <div class="value">{{ refundInfo.orderInfoVo.totalNum }}</div>
  512. </li>
  513. <li class="item">
  514. <div class="lang">支付状态:</div>
  515. <div class="value">{{ refundInfo.orderInfoVo.paid ? '已支付' : '未支付' }}</div>
  516. </li>
  517. <li class="item">
  518. <div class="lang">支付方式:</div>
  519. <div class="value">{{ refundInfo.orderInfoVo.payType | payTypeFilter }}</div>
  520. </li>
  521. <li class="item">
  522. <div class="lang">订单状态:</div>
  523. <div class="value textE93323">
  524. <span v-if="refundInfo.orderInfoVo.refundStatus === 3">已退款</span>
  525. <span v-else>{{ refundInfo.orderInfoVo.status | orderStatusFilter }}</span>
  526. </div>
  527. </li>
  528. <li class="item">
  529. <div class="lang">已发货数量:</div>
  530. <div class="value">{{ refundInfo.orderInfoVo.deliveryNum }}</div>
  531. </li>
  532. <li class="item">
  533. <div class="lang">创建时间:</div>
  534. <div class="value">{{ refundInfo.orderInfoVo.createTime }}</div>
  535. </li>
  536. <li class="item">
  537. <div class="lang">支付时间:</div>
  538. <div class="value">{{ refundInfo.orderInfoVo.payTime }}</div>
  539. </li>
  540. </ul>
  541. </div>
  542. <div class="detailSection">
  543. <div class="title">订单明细</div>
  544. <ul class="list">
  545. <li class="item">
  546. <div class="lang">商品总价:</div>
  547. <div class="value">¥{{ refundInfo.orderInfoVo.proTotalPrice }}</div>
  548. </li>
  549. <li class="item">
  550. <div class="lang">平台优惠金额:</div>
  551. <div class="value">¥{{ refundInfo.orderInfoVo.platCouponPrice }}</div>
  552. </li>
  553. <li class="item">
  554. <div class="lang">赠送积分:</div>
  555. <div class="value">¥{{ refundInfo.orderInfoVo.gainIntegral }}</div>
  556. </li>
  557. <li class="item">
  558. <div class="lang">实际支付:</div>
  559. <div class="value">¥{{ refundInfo.orderInfoVo.payPrice }}</div>
  560. </li>
  561. <li class="item">
  562. <div class="lang">扣除抵扣积分:</div>
  563. <div class="value">{{ refundInfo.orderInfoVo.useIntegral }}</div>
  564. </li>
  565. <li class="item">
  566. <div class="lang">商家优惠金额:</div>
  567. <div class="value">¥{{ refundInfo.orderInfoVo.merCouponPrice }}</div>
  568. </li>
  569. <li class="item">
  570. <div class="lang">会员抵扣金额:</div>
  571. <div class="value">¥{{ refundInfo.orderInfoVo.svipDiscountPrice || 0 }}</div>
  572. </li>
  573. <li class="item">
  574. <div class="lang">支付邮费:</div>
  575. <div class="value">¥{{ refundInfo.orderInfoVo.payPostage }}</div>
  576. </li>
  577. <li class="item">
  578. <div class="lang">积分抵扣金额:</div>
  579. <div class="value">¥{{ refundInfo.orderInfoVo.integralPrice }}</div>
  580. </li>
  581. </ul>
  582. </div>
  583. <div class="detailSection">
  584. <div class="title">用户备注</div>
  585. <ul class="list">
  586. <li class="item">
  587. <div class="value productName">{{ refundInfo.orderInfoVo.userRemark | filterEmpty }}</div>
  588. </li>
  589. </ul>
  590. </div>
  591. <div class="detailSection">
  592. <div class="title">商家备注</div>
  593. <ul class="list">
  594. <li class="item">
  595. <div class="value productName">{{ refundInfo.orderInfoVo.merchantRemark | filterEmpty }}</div>
  596. </li>
  597. </ul>
  598. </div>
  599. </el-tab-pane>
  600. </el-tabs>
  601. <!-- 售后状态:0:待审核 1:商家拒绝 2:退款中 3:已退款 4:用户退货 5:商家待收货 6:已撤销-->
  602. </div>
  603. </el-drawer>
  604. </div>
  605. </template>
  606. <script setup>
  607. import { orderRefundCompulsoryApi, refundMarkApi, refundOrderDetailApi } from '@/api/order';
  608. import { checkPermi } from '@/utils/permission'; // 权限判断函数
  609. import { filterEmpty, refundStatusFilter } from '@/filters';
  610. export default {
  611. name: 'fastMailOrderDetail',
  612. props: {
  613. //退款单号
  614. refundOrderNo: {
  615. type: String,
  616. default: 0,
  617. },
  618. //是否显示隐藏
  619. drawerVisible: {
  620. type: Boolean,
  621. default: false,
  622. },
  623. },
  624. data() {
  625. return {
  626. dialogVisible: false,
  627. loadingBtn: false,
  628. activeName: 'refund',
  629. direction: 'rtl',
  630. reverse: true,
  631. orderDatalist: {},
  632. loading: false,
  633. modal2: false,
  634. result: [],
  635. resultInfo: {},
  636. refundInfo: {},
  637. };
  638. },
  639. mounted() {
  640. this.getRefundOrderDetail(this.refundOrderNo);
  641. },
  642. methods: {
  643. checkPermi,
  644. handleClose() {
  645. this.$emit('onClosedrawerVisible');
  646. },
  647. // 备注
  648. onOrderMark() {
  649. this.$modalPrompt('textarea', '退款单备注', this.refundInfo.platformRemark).then((V) => {
  650. refundMarkApi({ remark: V, refundOrderNo: this.refundOrderNo }).then(() => {
  651. this.$message.success('操作成功');
  652. });
  653. });
  654. },
  655. // 获取订单退款信息
  656. getRefundOrderDetail(id) {
  657. this.loading = true;
  658. refundOrderDetailApi(id)
  659. .then(async (res) => {
  660. this.refundInfo = res;
  661. this.loading = false;
  662. })
  663. .catch(() => {
  664. this.loading = false;
  665. });
  666. },
  667. handlerCompulsoryReturn(refundInfo) {
  668. this.$confirm(
  669. `确定强制退款【${refundInfo.refundPrice}】 退款单,此操作不可逆,请慎重确认后再操作`,
  670. '强制退款提示',
  671. ).then(async () => {
  672. let result = await orderRefundCompulsoryApi(refundInfo.refundOrderNo);
  673. this.$emit('compulsoryReturnSuccess');
  674. });
  675. },
  676. },
  677. };
  678. </script>
  679. <style scoped lang="scss">
  680. .userAddress {
  681. width: 100%;
  682. margin-top: 16px;
  683. font-size: 13px;
  684. color: #666;
  685. }
  686. .productName {
  687. width: 633px;
  688. }
  689. .detail-centent {
  690. margin-top: 16px;
  691. }
  692. ::v-deep .el-step__main {
  693. margin-bottom: 30px !important;
  694. }
  695. ::v-deep .el-step__title {
  696. font-size: 14px !important;
  697. }
  698. .flow-path {
  699. margin-bottom: 70px;
  700. }
  701. .refundReasonWap {
  702. width: 720px;
  703. height: auto;
  704. padding: 10px 25px 0 0;
  705. border-radius: 14px;
  706. background-color: #f3f8fe;
  707. overflow: hidden;
  708. }
  709. .image {
  710. width: 40px;
  711. height: 40px;
  712. border-radius: 4px;
  713. overflow: hidden;
  714. }
  715. .refund {
  716. &-title {
  717. font-size: 17px;
  718. color: #333333;
  719. font-weight: 600;
  720. }
  721. &-orderNo {
  722. font-size: 14px;
  723. color: #333333;
  724. }
  725. &-price {
  726. margin-right: 100px;
  727. }
  728. }
  729. </style>