Skip to content

Commit f5a1772

Browse files
author
puhui999
committed
订单售后列表:完善部分 TODO
1 parent 29b8d06 commit f5a1772

File tree

8 files changed

+82
-47
lines changed

8 files changed

+82
-47
lines changed

src/views/mall/trade/afterSale/detail/index.vue

Lines changed: 75 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<el-descriptions-item label="配送方式: ">
77
<dict-tag :type="DICT_TYPE.TRADE_DELIVERY_TYPE" :value="formData.order.deliveryType" />
88
</el-descriptions-item>
9+
<!-- TODO 营销活动待实现 -->
910
<el-descriptions-item label="订单类型: ">
1011
<dict-tag :type="DICT_TYPE.TRADE_ORDER_TYPE" :value="formData.order.type" />
1112
</el-descriptions-item>
@@ -38,35 +39,45 @@
3839
<el-descriptions-item label="申请时间: ">
3940
{{ formatDate(formData.auditTime) }}
4041
</el-descriptions-item>
41-
<!-- TODO 营销活动待实现 -->
4242
<el-descriptions-item label="售后类型: ">
4343
<dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_TYPE" :value="formData.type" />
4444
</el-descriptions-item>
4545
<el-descriptions-item label="售后方式: ">
4646
<dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_WAY" :value="formData.way" />
4747
</el-descriptions-item>
48-
<!-- TODO @puhui999:金额的格式化 -->
49-
<el-descriptions-item label="退款金额: ">{{ formData.refundPrice }}</el-descriptions-item>
48+
<el-descriptions-item label="退款金额: ">
49+
{{ floatToFixed2(formData.refundPrice) }}
50+
</el-descriptions-item>
5051
<el-descriptions-item label="退款原因: ">{{ formData.applyReason }}</el-descriptions-item>
5152
<el-descriptions-item label="补充描述: ">
5253
{{ formData.applyDescription }}
5354
</el-descriptions-item>
54-
<!-- TODO @puhui999:数组,图片 -->
55-
<el-descriptions-item label="凭证图片: "> {{ formData.applyPicUrls }}</el-descriptions-item>
55+
<el-descriptions-item label="凭证图片: ">
56+
<el-image
57+
v-for="(item, index) in formData.applyPicUrls"
58+
:key="index"
59+
:src="item.url"
60+
class="w-60px h-60px mr-10px"
61+
@click="imagePreview(formData.applyPicUrls)"
62+
/>
63+
</el-descriptions-item>
5664
</el-descriptions>
5765

5866
<!-- 退款状态 -->
5967
<el-descriptions :column="1" title="退款状态">
6068
<el-descriptions-item label="退款状态: ">
6169
<dict-tag :type="DICT_TYPE.TRADE_AFTER_SALE_STATUS" :value="formData.status" />
6270
</el-descriptions-item>
63-
<!-- TODO @puhui999:不同状态,展示不同按钮 -->
6471
<el-descriptions-item label-class-name="no-colon">
65-
<el-button type="primary" @click="openForm('agree')">同意售后</el-button>
66-
<el-button type="primary" @click="openForm('disagree')">拒绝售后</el-button>
67-
<el-button type="primary" @click="openForm('receive')">确认收货</el-button>
68-
<el-button type="primary" @click="openForm('refuse')">拒绝收货</el-button>
69-
<el-button type="primary" @click="openForm('refund')">确认退款</el-button>
72+
<el-button v-if="formData.status === 10" type="primary" @click="agree">同意售后</el-button>
73+
<el-button v-if="formData.status === 10" type="primary" @click="disagree">
74+
拒绝售后
75+
</el-button>
76+
<el-button v-if="formData.status === 30" type="primary" @click="receive">
77+
确认收货
78+
</el-button>
79+
<el-button v-if="formData.status === 30" type="primary" @click="refuse">拒绝收货</el-button>
80+
<el-button v-if="formData.status === 40" type="primary" @click="refund">确认退款</el-button>
7081
</el-descriptions-item>
7182
<el-descriptions-item>
7283
<template #label><span style="color: red">提醒: </span></template>
@@ -123,7 +134,9 @@ import * as AfterSaleApi from '@/api/mall/trade/afterSale/index'
123134
import { floatToFixed2 } from '@/utils'
124135
import { DICT_TYPE } from '@/utils/dict'
125136
import { formatDate } from '@/utils/formatTime'
126-
import UpdateAuditReasonForm from '@/views/mall/trade/afterSale/components/UpdateAuditReasonForm.vue'
137+
import UpdateAuditReasonForm from '@/views/mall/trade/afterSale/form/AfterSaleDisagreeForm.vue'
138+
import { createImageViewer } from '@/components/ImageViewer'
139+
import { isArray } from '@/utils/is'
127140
128141
defineOptions({ name: 'TradeOrderDetailForm' })
129142
@@ -141,34 +154,57 @@ const getDetail = async () => {
141154
formData.value = await AfterSaleApi.getAfterSale(id)
142155
}
143156
}
144-
145-
/** 各种操作 TODO @puhui999:是不是每个一个方法好点,干净点 */
146-
const openForm = (type: string) => {
147-
switch (type) {
148-
case 'agree':
149-
message.confirm('是否同意售后?').then(() => {
150-
AfterSaleApi.agree(formData.value.id)
151-
})
152-
break
153-
case 'disagree':
154-
updateAuditReasonFormRef.value?.open(formData.value)
155-
break
156-
case 'receive':
157-
message.confirm('是否确认收货?').then(() => {
158-
AfterSaleApi.receive(formData.value.id)
159-
})
160-
break
161-
case 'refuse':
162-
message.confirm('是否拒绝收货?').then(() => {
163-
AfterSaleApi.refuse(formData.value.id)
164-
})
165-
break
166-
case 'refund':
167-
message.confirm('是否确认退款?').then(() => {
168-
AfterSaleApi.refund(formData.value.id)
169-
})
170-
break
157+
/**
158+
* 同意售后
159+
*/
160+
const agree = () => {
161+
message.confirm('是否同意售后?').then(() => {
162+
AfterSaleApi.agree(formData.value.id)
163+
})
164+
}
165+
/**
166+
* 拒绝售后
167+
*/
168+
const disagree = () => {
169+
updateAuditReasonFormRef.value?.open(formData.value)
170+
}
171+
/**
172+
* 确认收货
173+
*/
174+
const receive = () => {
175+
message.confirm('是否确认收货?').then(() => {
176+
AfterSaleApi.receive(formData.value.id)
177+
})
178+
}
179+
/**
180+
* 拒绝收货
181+
*/
182+
const refuse = () => {
183+
message.confirm('是否拒绝收货?').then(() => {
184+
AfterSaleApi.refuse(formData.value.id)
185+
})
186+
}
187+
/**
188+
* 确认退款
189+
*/
190+
const refund = () => {
191+
message.confirm('是否确认退款?').then(() => {
192+
AfterSaleApi.refund(formData.value.id)
193+
})
194+
}
195+
/** 图片预览 */
196+
const imagePreview = (args) => {
197+
const urlList = []
198+
if (isArray(args)) {
199+
args.forEach((item) => {
200+
urlList.push(item.url)
201+
})
202+
} else {
203+
urlList.push(args)
171204
}
205+
createImageViewer({
206+
urlList
207+
})
172208
}
173209
onMounted(async () => {
174210
await getDetail()

src/views/mall/trade/afterSale/components/UpdateAuditReasonForm.vue renamed to src/views/mall/trade/afterSale/form/AfterSaleDisagreeForm.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
<script lang="ts" setup>
2020
import * as AfterSaleApi from '@/api/mall/trade/afterSale/index'
2121
22-
// TODO @puhui999:是不是改成 AfterSaleDisagreeForm ,更明确
23-
defineOptions({ name: 'UpdateAuditReasonForm' })
22+
defineOptions({ name: 'AfterSaleDisagreeForm' })
2423
2524
const { t } = useI18n() // 国际化
2625
const message = useMessage() // 消息弹窗

src/views/mall/trade/order/detail/index.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,10 +208,10 @@
208208
import * as TradeOrderApi from '@/api/mall/trade/order'
209209
import { floatToFixed2 } from '@/utils'
210210
import { DICT_TYPE } from '@/utils/dict'
211-
import OrderUpdateRemarkForm from '@/views/mall/trade/order/components/OrderUpdateRemarkForm.vue'
212-
import OrderDeliveryForm from '@/views/mall/trade/order/components/OrderDeliveryForm.vue'
213-
import OrderUpdateAddressForm from '@/views/mall/trade/order/components/OrderUpdateAddressForm.vue'
214-
import OrderUpdatePriceForm from '@/views/mall/trade/order/components/OrderUpdatePriceForm.vue'
211+
import OrderUpdateRemarkForm from '@/views/mall/trade/order/form/OrderUpdateRemarkForm.vue'
212+
import OrderDeliveryForm from '@/views/mall/trade/order/form/OrderDeliveryForm.vue'
213+
import OrderUpdateAddressForm from '@/views/mall/trade/order/form/OrderUpdateAddressForm.vue'
214+
import OrderUpdatePriceForm from '@/views/mall/trade/order/form/OrderUpdatePriceForm.vue'
215215
216216
defineOptions({ name: 'TradeOrderDetailForm' })
217217

src/views/mall/trade/order/index.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,8 @@
309309

310310
<script lang="ts" setup>
311311
import type { FormInstance, TableColumnCtx } from 'element-plus'
312-
import OrderDeliveryForm from './components/OrderDeliveryForm.vue'
313-
import OrderUpdateRemarkForm from './components/OrderUpdateRemarkForm.vue'
312+
import OrderDeliveryForm from '@/views/mall/trade/order/form/OrderDeliveryForm.vue'
313+
import OrderUpdateRemarkForm from '@/views/mall/trade/order/form/OrderUpdateRemarkForm.vue'
314314
import * as TradeOrderApi from '@/api/mall/trade/order'
315315
import * as PickUpStoreApi from '@/api/mall/trade/delivery/pickUpStore'
316316
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'

0 commit comments

Comments
 (0)