完善订单详情和售后退款 TODO 提到的问题

This commit is contained in:
puhui999 2023-09-06 11:23:16 +08:00
parent 46fd154e3a
commit 73628d3930
7 changed files with 55 additions and 38 deletions

View File

@ -51,10 +51,10 @@ export interface OrderVO {
avatar?: string
}
// 订单操作日志
orderLog?: orderLog[]
logs?: logs[]
}
export interface orderLog {
export interface logs {
content?: string
createTime?: Date
userType?: number

View File

@ -191,6 +191,10 @@ service.interceptors.response.use(
}
return Promise.reject('error')
} else {
// 前端处理 data 为 null 的情况,进行提示
if (data.msg !== '') {
ElNotification.error({ title: msg })
}
return data
}
},

View File

@ -68,7 +68,6 @@ export const getBoolDictOptions = (dictType: string) => {
*/
export const getDictObj = (dictType: string, value: any): DictDataType | undefined => {
const dictOptions: DictDataType[] = getDictOptions(dictType)
console.log(dictOptions)
for (const dict of dictOptions) {
if (dict.value === value + '') {
return dict

View File

@ -41,7 +41,7 @@ import { SpuProperty } from '@/views/mall/promotion/components/index'
defineOptions({ name: 'PromotionSpuAndSkuList' })
const props = defineProps<{
spuList: T[] // TODO 便 spu spu spu
spuList: T[]
ruleConfig: RuleConfig[]
spuPropertyListP: SpuProperty<T>[]
}>()

View File

@ -126,7 +126,7 @@
<el-descriptions-item labelClassName="no-colon">
<el-timeline>
<el-timeline-item
v-for="saleLog in formData.afterSaleLog"
v-for="saleLog in formData.logs"
:key="saleLog.id"
:timestamp="formatDate(saleLog.createTime)"
placement="top"
@ -151,7 +151,7 @@
:style="{ backgroundColor: updateStyles(saleLog.userType) }"
class="dot-node-style"
>
{{ getDictLabel(DICT_TYPE.USER_TYPE, saleLog.userType)[0] }}
{{ getDictLabel(DICT_TYPE.USER_TYPE, saleLog.userType)[0] || '系' }}
</span>
</template>
</el-timeline-item>
@ -171,15 +171,17 @@ import { formatDate } from '@/utils/formatTime'
import UpdateAuditReasonForm from '@/views/mall/trade/afterSale/form/AfterSaleDisagreeForm.vue'
import { createImageViewer } from '@/components/ImageViewer'
import { isArray } from '@/utils/is'
import { useTagsViewStore } from '@/store/modules/tagsView'
defineOptions({ name: 'TradeAfterSaleDetail' })
const { t } = useI18n() //
const message = useMessage() //
const { params } = useRoute() //
const { push, currentRoute } = useRouter() //
const formData = ref({
order: {},
afterSaleLog: []
logs: []
})
const updateAuditReasonFormRef = ref() // Ref
@ -202,7 +204,12 @@ const updateStyles = (type: number) => {
const getDetail = async () => {
const id = params.orderId as unknown as number
if (id) {
formData.value = await AfterSaleApi.getAfterSale(id)
const res = await AfterSaleApi.getAfterSale(id)
//
if (res === null) {
close()
}
formData.value = res
}
}
@ -261,7 +268,12 @@ const imagePreview = (args) => {
urlList
})
}
const { delView } = useTagsViewStore() //
/** 关闭 tag */
const close = () => {
delView(unref(currentRoute))
push({ name: 'TradeAfterSale' })
}
onMounted(async () => {
await getDetail()
})
@ -322,10 +334,10 @@ onMounted(async () => {
background-color: #f7f8fa;
&::before {
content: ''; /* 必须设置 content 属性 */
content: '';
position: absolute;
top: 10px;
left: 13px; /* 将伪元素水平居中 */
left: 13px;
border-width: 8px; /* 调整尖角大小 */
border-style: solid;
border-color: transparent #f7f8fa transparent transparent; /* 尖角颜色,左侧朝向 */

View File

@ -40,12 +40,17 @@
<el-descriptions-item label="订单状态: ">
<dict-tag :type="DICT_TYPE.TRADE_ORDER_STATUS" :value="formData.status!" />
</el-descriptions-item>
<!-- TODO @puhui999根据状态进行展示按钮 -->
<el-descriptions-item label-class-name="no-colon">
<el-button type="primary" @click="openForm('updatePrice')">调整价格</el-button>
<el-button type="primary" @click="openForm('remark')">备注</el-button>
<el-button type="primary" @click="openForm('delivery')">发货</el-button>
<el-button type="primary" @click="openForm('updateAddress')">修改地址</el-button>
<el-button v-if="formData.status! === 0" type="primary" @click="updatePrice">
调整价格
</el-button>
<el-button type="primary" @click="remark">备注</el-button>
<el-button v-if="formData.status! === 10" type="primary" @click="delivery">
发货
</el-button>
<el-button v-if="formData.status! === 10" type="primary" @click="updateAddress">
修改地址
</el-button>
</el-descriptions-item>
<el-descriptions-item>
<template #label><span style="color: red">提醒: </span></template>
@ -152,7 +157,7 @@
<el-descriptions-item labelClassName="no-colon">
<el-timeline>
<el-timeline-item
v-for="(log, index) in formData.orderLog"
v-for="(log, index) in formData.logs"
:key="index"
:timestamp="formatDate(log.createTime!)"
placement="top"
@ -161,7 +166,10 @@
{{ log.content }}
</div>
<template #dot>
<span :style="{ backgroundColor: updateStyles(log.userType) }" class="dot-node-style">
<span
:style="{ backgroundColor: updateStyles(log.userType!) }"
class="dot-node-style"
>
{{ getDictLabel(DICT_TYPE.USER_TYPE, log.userType)[0] }}
</span>
</template>
@ -209,31 +217,25 @@ const updateStyles = (type: number) => {
//
const formData = ref<TradeOrderApi.OrderVO>({
orderLog: [] // TODO @puhui999orderLogs
logs: []
})
// TODO @puhui999
const deliveryFormRef = ref() // Ref
const updateRemarkForm = ref() // Ref
const updateAddressFormRef = ref() // Ref
const updatePriceFormRef = ref() // Ref
const openForm = (type: string) => {
switch (type) {
case 'remark':
updateRemarkForm.value?.open(formData.value)
break
case 'delivery':
deliveryFormRef.value?.open(formData.value)
break
case 'updateAddress':
updateAddressFormRef.value?.open(formData.value)
break
case 'updatePrice':
updatePriceFormRef.value?.open(formData.value)
break
}
const remark = () => {
updateRemarkForm.value?.open(formData.value)
}
const delivery = () => {
deliveryFormRef.value?.open(formData.value)
}
const updateAddress = () => {
updateAddressFormRef.value?.open(formData.value)
}
const updatePrice = () => {
updatePriceFormRef.value?.open(formData.value)
}
/** 获得详情 */
const { params } = useRoute() //
const getDetail = async () => {

View File

@ -100,7 +100,7 @@
/>
</el-select>
</el-form-item>
<!-- TODO 聚合搜索等售后结束后实现-->
<!-- TODO puhui 聚合搜索等售后结束后实现-->
<el-form-item label="聚合搜索">
<el-input
v-show="true"
@ -139,7 +139,7 @@
<el-table v-loading="loading" :data="list">
<el-table-column class-name="order-table-col">
<template #header>
<!-- TODO @phui999小屏幕下会有偏移后续看看 -->
<!-- TODO @puhui999小屏幕下会有偏移后续看看 -->
<div class="flex items-center" style="width: 100%">
<div class="ml-100px mr-200px">商品信息</div>
<div class="mr-60px">单价()/数量</div>