|
2 | 2 | <ContentWrap>
|
3 | 3 | <!-- 订单信息 -->
|
4 | 4 | <el-descriptions title="退款订单信息">
|
5 |
| - <el-descriptions-item label="订单号: ">{{ orderInfo.orderNo }}</el-descriptions-item> |
| 5 | + <el-descriptions-item label="订单号: ">{{ formData.orderNo }}</el-descriptions-item> |
6 | 6 | <el-descriptions-item label="配送方式: ">
|
7 |
| - <dict-tag :type="DICT_TYPE.TRADE_DELIVERY_TYPE" :value="orderInfo.order.deliveryType" /> |
| 7 | + <dict-tag :type="DICT_TYPE.TRADE_DELIVERY_TYPE" :value="formData.order.deliveryType" /> |
8 | 8 | </el-descriptions-item>
|
9 | 9 | <el-descriptions-item label="订单类型: ">
|
10 |
| - <dict-tag :type="DICT_TYPE.TRADE_ORDER_TYPE" :value="orderInfo.order.type" /> |
| 10 | + <dict-tag :type="DICT_TYPE.TRADE_ORDER_TYPE" :value="formData.order.type" /> |
11 | 11 | </el-descriptions-item>
|
12 | 12 | <el-descriptions-item label="收货人: ">
|
13 |
| - {{ orderInfo.order.receiverName }} |
| 13 | + {{ formData.order.receiverName }} |
14 | 14 | </el-descriptions-item>
|
15 | 15 | <el-descriptions-item label="买家留言: ">
|
16 |
| - {{ orderInfo.order.userRemark }} |
| 16 | + {{ formData.order.userRemark }} |
17 | 17 | </el-descriptions-item>
|
18 | 18 | <el-descriptions-item label="订单来源: ">
|
19 |
| - <dict-tag :type="DICT_TYPE.TERMINAL" :value="orderInfo.order.terminal" /> |
| 19 | + <dict-tag :type="DICT_TYPE.TERMINAL" :value="formData.order.terminal" /> |
20 | 20 | </el-descriptions-item>
|
21 | 21 | <el-descriptions-item label="联系电话: ">
|
22 |
| - {{ orderInfo.order.receiverMobile }} |
| 22 | + {{ formData.order.receiverMobile }} |
23 | 23 | </el-descriptions-item>
|
24 |
| - <el-descriptions-item label="商家备注: ">{{ orderInfo.order.remark }}</el-descriptions-item> |
| 24 | + <el-descriptions-item label="商家备注: ">{{ formData.order.remark }}</el-descriptions-item> |
25 | 25 | <el-descriptions-item label="支付单号: ">
|
26 |
| - {{ orderInfo.order.payOrderId }} |
| 26 | + {{ formData.order.payOrderId }} |
27 | 27 | </el-descriptions-item>
|
28 | 28 | <el-descriptions-item label="付款方式: ">
|
29 |
| - <dict-tag :type="DICT_TYPE.PAY_CHANNEL_CODE" :value="orderInfo.order.payChannelCode" /> |
| 29 | + <dict-tag :type="DICT_TYPE.PAY_CHANNEL_CODE" :value="formData.order.payChannelCode" /> |
30 | 30 | </el-descriptions-item>
|
31 | 31 | <!-- TODO 芋艿:待实现:跳转会员 -->
|
32 |
| - <!-- <el-descriptions-item label="买家: ">{{ orderInfo.user.nickname }}</el-descriptions-item> --> |
| 32 | + <!-- <el-descriptions-item label="买家: ">{{ formData.user.nickname }}</el-descriptions-item> --> |
33 | 33 | </el-descriptions>
|
34 | 34 |
|
35 | 35 | <!-- 售后信息 -->
|
36 | 36 | <el-descriptions title="售后信息">
|
37 |
| - <el-descriptions-item label="退款编号: ">{{ orderInfo.no }}</el-descriptions-item> |
| 37 | + <el-descriptions-item label="退款编号: ">{{ formData.no }}</el-descriptions-item> |
38 | 38 | <el-descriptions-item label="申请时间: ">
|
39 |
| - {{ formatDate(orderInfo.auditTime) }} |
| 39 | + {{ formatDate(formData.auditTime) }} |
40 | 40 | </el-descriptions-item>
|
41 | 41 | <!-- TODO 营销活动待实现 -->
|
42 | 42 | <el-descriptions-item label="售后类型: ">
|
43 |
| - <dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_TYPE" :value="orderInfo.type" /> |
| 43 | + <dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_TYPE" :value="formData.type" /> |
44 | 44 | </el-descriptions-item>
|
45 | 45 | <el-descriptions-item label="售后方式: ">
|
46 |
| - <dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_WAY" :value="orderInfo.way" /> |
| 46 | + <dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_WAY" :value="formData.way" /> |
47 | 47 | </el-descriptions-item>
|
48 |
| - <el-descriptions-item label="退款金额: ">{{ orderInfo.refundPrice }}</el-descriptions-item> |
49 |
| - <el-descriptions-item label="退款原因: ">{{ orderInfo.applyReason }}</el-descriptions-item> |
| 48 | + <el-descriptions-item label="退款金额: ">{{ formData.refundPrice }}</el-descriptions-item> |
| 49 | + <el-descriptions-item label="退款原因: ">{{ formData.applyReason }}</el-descriptions-item> |
50 | 50 | <el-descriptions-item label="补充描述: ">
|
51 |
| - {{ orderInfo.applyDescription }} |
| 51 | + {{ formData.applyDescription }} |
52 | 52 | </el-descriptions-item>
|
53 |
| - <el-descriptions-item label="凭证图片: "> {{ orderInfo.applyPicUrls }}</el-descriptions-item> |
| 53 | + <el-descriptions-item label="凭证图片: "> {{ formData.applyPicUrls }}</el-descriptions-item> |
54 | 54 | </el-descriptions>
|
55 | 55 |
|
56 | 56 | <!-- 退款状态 -->
|
57 | 57 | <el-descriptions :column="1" title="退款状态">
|
58 | 58 | <el-descriptions-item label="退款状态: ">
|
59 |
| - <dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_STATUS" :value="orderInfo.status" /> |
| 59 | + <dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_STATUS" :value="formData.status" /> |
60 | 60 | </el-descriptions-item>
|
61 | 61 | <el-descriptions-item label-class-name="no-colon">
|
62 | 62 | <el-button type="primary" @click="openForm('agree')">同意售后</el-button>
|
63 | 63 | <el-button type="primary" @click="openForm('disagree')">拒绝售后</el-button>
|
64 | 64 | <el-button type="primary" @click="openForm('receive')">确认收货</el-button>
|
65 | 65 | <el-button type="primary" @click="openForm('refuse')">拒绝收货</el-button>
|
66 | 66 | <el-button type="primary" @click="openForm('refund')">确认退款</el-button>
|
67 |
| - <el-button type="primary" @click="openForm('update-refunded')"> |
68 |
| - 更新售后订单为已退款 |
69 |
| - </el-button> |
70 | 67 | </el-descriptions-item>
|
71 | 68 | <el-descriptions-item>
|
72 | 69 | <template #label><span style="color: red">提醒: </span></template>
|
|
81 | 78 | <el-descriptions-item labelClassName="no-colon">
|
82 | 79 | <el-row :gutter="20">
|
83 | 80 | <el-col :span="15">
|
84 |
| - <el-table :data="orderInfo.items" border> |
| 81 | + <el-table :data="formData.items" border> |
85 | 82 | <el-table-column label="商品" prop="spuName" width="auto">
|
86 | 83 | <template #default="{ row }">
|
87 | 84 | {{ row.spuName }}
|
|
114 | 111 | <!-- 售后信息 -->
|
115 | 112 | <el-descriptions title="售后日志" />
|
116 | 113 | </ContentWrap>
|
| 114 | + |
| 115 | + <!-- 各种操作的弹窗 --> |
| 116 | + <UpdateAuditReasonForm ref="updateAuditReasonFormRef" @success="getDetail" /> |
117 | 117 | </template>
|
118 | 118 | <script lang="ts" setup>
|
119 | 119 | import * as AfterSaleApi from '@/api/mall/trade/afterSale/index'
|
120 | 120 | import { floatToFixed2 } from '@/utils'
|
121 | 121 | import { DICT_TYPE } from '@/utils/dict'
|
122 | 122 | import { formatDate } from '@/utils/formatTime'
|
| 123 | +import UpdateAuditReasonForm from '@/views/mall/trade/afterSale/components/UpdateAuditReasonForm.vue' |
123 | 124 |
|
124 | 125 | defineOptions({ name: 'TradeOrderDetailForm' })
|
125 | 126 |
|
| 127 | +const message = useMessage() // 消息弹窗 |
126 | 128 | const { params } = useRoute() // 查询参数
|
127 |
| -const orderInfo = ref({ |
| 129 | +const formData = ref({ |
128 | 130 | order: {}
|
129 | 131 | })
|
| 132 | +const updateAuditReasonFormRef = ref() // 拒绝售后表单 Ref |
130 | 133 | /** 获得详情 */
|
131 | 134 | const getDetail = async () => {
|
132 | 135 | const id = params.orderId as unknown as number
|
133 | 136 | if (id) {
|
134 |
| - const res = (await AfterSaleApi.getAfterSale(id)) as AfterSaleApi.TradeAfterSaleVO |
135 |
| - orderInfo.value = res |
| 137 | + formData.value = await AfterSaleApi.getAfterSale(id) |
136 | 138 | }
|
137 | 139 | }
|
138 | 140 | const openForm = (type: string) => {
|
139 | 141 | switch (type) {
|
140 | 142 | case 'agree':
|
| 143 | + message.confirm('是否同意售后?').then(() => { |
| 144 | + AfterSaleApi.agree(formData.value.id) |
| 145 | + }) |
141 | 146 | break
|
142 | 147 | case 'disagree':
|
| 148 | + updateAuditReasonFormRef.value?.open(formData.value) |
143 | 149 | break
|
144 | 150 | case 'receive':
|
| 151 | + message.confirm('是否确认收货?').then(() => { |
| 152 | + AfterSaleApi.receive(formData.value.id) |
| 153 | + }) |
145 | 154 | break
|
146 | 155 | case 'refuse':
|
| 156 | + message.confirm('是否拒绝收货?').then(() => { |
| 157 | + AfterSaleApi.refuse(formData.value.id) |
| 158 | + }) |
147 | 159 | break
|
148 | 160 | case 'refund':
|
149 |
| - break |
150 |
| - case 'update-refunded': |
| 161 | + message.confirm('是否确认退款?').then(() => { |
| 162 | + AfterSaleApi.refund(formData.value.id) |
| 163 | + }) |
151 | 164 | break
|
152 | 165 | }
|
153 | 166 | }
|
|
0 commit comments