feat: use new desc comp

This commit is contained in:
xingyu4j
2025-10-21 11:40:42 +08:00
parent 284c47b721
commit de4ca0a5a4
50 changed files with 421 additions and 586 deletions

View File

@@ -1,4 +1,3 @@
import type { MallAfterSaleApi } from '#/api/mall/trade/afterSale';
import type { DescriptionItemSchema } from '#/components/description';
import { h } from 'vue';
@@ -20,19 +19,19 @@ export function useOrderInfoSchema(): DescriptionItemSchema[] {
{
field: 'order.deliveryType',
label: '配送方式',
content: (data: MallAfterSaleApi.AfterSale) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.TRADE_DELIVERY_TYPE,
value: data?.order?.deliveryType,
value: val,
}),
},
{
field: 'order.type',
label: '订单类型',
content: (data: MallAfterSaleApi.AfterSale) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.TRADE_ORDER_TYPE,
value: data?.order?.type,
value: val,
}),
},
{
@@ -46,10 +45,10 @@ export function useOrderInfoSchema(): DescriptionItemSchema[] {
{
field: 'order.terminal',
label: '订单来源',
content: (data: MallAfterSaleApi.AfterSale) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.TERMINAL,
value: data?.order?.terminal,
value: val,
}),
},
{
@@ -67,10 +66,10 @@ export function useOrderInfoSchema(): DescriptionItemSchema[] {
{
field: 'order.payChannelCode',
label: '付款方式',
content: (data: MallAfterSaleApi.AfterSale) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.PAY_CHANNEL_CODE,
value: data?.order?.payChannelCode,
value: val,
}),
},
{
@@ -90,32 +89,30 @@ export function useAfterSaleInfoSchema(): DescriptionItemSchema[] {
{
field: 'auditTime',
label: '申请时间',
content: (data: MallAfterSaleApi.AfterSale) =>
formatDate(data?.auditTime) as string,
render: (val) => formatDate(val) as string,
},
{
field: 'type',
label: '售后类型',
content: (data: MallAfterSaleApi.AfterSale) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.TRADE_AFTER_SALE_TYPE,
value: data?.type,
value: val,
}),
},
{
field: 'way',
label: '售后方式',
content: (data: MallAfterSaleApi.AfterSale) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.TRADE_AFTER_SALE_WAY,
value: data?.way,
value: val,
}),
},
{
field: 'refundPrice',
label: '退款金额',
content: (data: MallAfterSaleApi.AfterSale) =>
fenToYuan(data?.refundPrice ?? 0),
render: (val) => fenToYuan(val ?? 0),
},
{
field: 'applyReason',
@@ -128,8 +125,8 @@ export function useAfterSaleInfoSchema(): DescriptionItemSchema[] {
{
field: 'applyPicUrls',
label: '凭证图片',
content: (data) => {
const images = data?.applyPicUrls || [];
render: (val) => {
const images = val || [];
return h(
'div',
{ class: 'flex gap-10px' },
@@ -153,16 +150,16 @@ export function useRefundStatusSchema(): DescriptionItemSchema[] {
{
field: 'status',
label: '退款状态',
content: (data) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.TRADE_AFTER_SALE_STATUS,
value: data?.status,
value: val,
}),
},
{
field: 'reminder',
label: '提醒',
content: () =>
render: () =>
h('div', { class: 'text-red-500 mb-10px' }, [
h('div', '如果未发货,请点击同意退款给买家。'),
h('div', '如果实际已发货,请主动与买家联系。'),

View File

@@ -49,29 +49,23 @@ const afterSale = ref<MallAfterSaleApi.AfterSale>({
});
const [OrderDescriptions] = useDescription({
componentProps: {
title: '订单信息',
bordered: false,
column: 3,
},
title: '订单信息',
bordered: false,
column: 3,
schema: useOrderInfoSchema(),
});
const [AfterSaleDescriptions] = useDescription({
componentProps: {
title: '售后信息',
bordered: false,
column: 3,
},
title: '售后信息',
bordered: false,
column: 3,
schema: useAfterSaleInfoSchema(),
});
const [RefundStatusDescriptions] = useDescription({
componentProps: {
title: '退款状态',
bordered: false,
column: 1,
},
title: '退款状态',
bordered: false,
column: 1,
schema: useRefundStatusSchema(),
});

View File

@@ -1,5 +1,4 @@
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { MallOrderApi } from '#/api/mall/trade/order';
import type { DescriptionItemSchema } from '#/components/description';
import { h } from 'vue';
@@ -23,19 +22,19 @@ export function useOrderInfoSchema(): DescriptionItemSchema[] {
{
field: 'type',
label: '订单类型',
content: (data: MallOrderApi.Order) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.TRADE_ORDER_TYPE,
value: data?.type,
value: val,
}),
},
{
field: 'terminal',
label: '订单来源',
content: (data: MallOrderApi.Order) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.TERMINAL,
value: data?.terminal,
value: val,
}),
},
{
@@ -53,10 +52,10 @@ export function useOrderInfoSchema(): DescriptionItemSchema[] {
{
field: 'payChannelCode',
label: '付款方式',
content: (data: MallOrderApi.Order) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.PAY_CHANNEL_CODE,
value: data?.payChannelCode,
value: val,
}),
},
{
@@ -72,16 +71,16 @@ export function useOrderStatusSchema(): DescriptionItemSchema[] {
{
field: 'status',
label: '订单状态',
content: (data: MallOrderApi.Order) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.TRADE_ORDER_STATUS,
value: data?.status,
value: val,
}),
},
{
field: 'reminder',
label: '提醒',
content: () =>
render: () =>
h('div', { class: 'space-y-1' }, [
h('div', '买家付款成功后,货款将直接进入您的商户号(微信、支付宝)'),
h('div', '请及时关注你发出的包裹状态,确保可以配送至买家手中'),
@@ -100,66 +99,46 @@ export function useOrderPriceSchema(): DescriptionItemSchema[] {
{
field: 'totalPrice',
label: '商品总额',
content: (data: MallOrderApi.Order) =>
`${fenToYuan(data?.totalPrice ?? 0)}`,
render: (val) => `${fenToYuan(val ?? 0)}`,
},
{
field: 'deliveryPrice',
label: '运费金额',
content: (data: MallOrderApi.Order) =>
`${fenToYuan(data?.deliveryPrice ?? 0)}`,
render: (val) => `${fenToYuan(val ?? 0)}`,
},
{
field: 'adjustPrice',
label: '订单调价',
content: (data: MallOrderApi.Order) =>
`${fenToYuan(data?.adjustPrice ?? 0)}`,
render: (val) => `${fenToYuan(val ?? 0)}`,
},
{
field: 'couponPrice',
label: '优惠劵优惠',
content: (data: MallOrderApi.Order) =>
h(
'span',
{ class: 'text-red-500' },
`${fenToYuan(data?.couponPrice ?? 0)}`,
),
render: (val) =>
h('span', { class: 'text-red-500' }, `${fenToYuan(val ?? 0)}`),
},
{
field: 'vipPrice',
label: 'VIP 优惠',
content: (data: MallOrderApi.Order) =>
h(
'span',
{ class: 'text-red-500' },
`${fenToYuan(data?.vipPrice ?? 0)}`,
),
render: (val) =>
h('span', { class: 'text-red-500' }, `${fenToYuan(val ?? 0)}`),
},
{
field: 'discountPrice',
label: '活动优惠',
content: (data: MallOrderApi.Order) =>
h(
'span',
{ class: 'text-red-500' },
`${fenToYuan(data?.discountPrice ?? 0)}`,
),
render: (val) =>
h('span', { class: 'text-red-500' }, `${fenToYuan(val ?? 0)}`),
},
{
field: 'pointPrice',
label: '积分抵扣',
content: (data: MallOrderApi.Order) =>
h(
'span',
{ class: 'text-red-500' },
`${fenToYuan(data?.pointPrice ?? 0)}`,
),
render: (val) =>
h('span', { class: 'text-red-500' }, `${fenToYuan(val ?? 0)}`),
},
{
field: 'payPrice',
label: '应付金额',
content: (data: MallOrderApi.Order) =>
`${fenToYuan(data?.payPrice ?? 0)}`,
render: (val) => `${fenToYuan(val ?? 0)}`,
},
];
}
@@ -170,10 +149,10 @@ export function useDeliveryInfoSchema(): DescriptionItemSchema[] {
{
field: 'deliveryType',
label: '配送方式',
content: (data: MallOrderApi.Order) =>
render: (val) =>
h(DictTag, {
type: DICT_TYPE.TRADE_DELIVERY_TYPE,
value: data?.deliveryType,
value: val,
}),
},
{
@@ -187,14 +166,12 @@ export function useDeliveryInfoSchema(): DescriptionItemSchema[] {
{
field: 'receiverAddress',
label: '收货地址',
content: (data: MallOrderApi.Order) =>
`${data?.receiverAreaName} ${data?.receiverDetailAddress}`.trim(),
render: (val, data) => `${data?.receiverAreaName} ${val}`.trim(),
},
{
field: 'deliveryTime',
label: '发货时间',
content: (data: MallOrderApi.Order) =>
formatDateTime(data?.deliveryTime) as string,
render: (val) => formatDateTime(val) as string,
},
];
}

View File

@@ -57,38 +57,30 @@ const expressTrackList = ref<any[]>([]);
const pickUpStore = ref<MallDeliveryPickUpStoreApi.PickUpStore | undefined>();
const [OrderInfoDescriptions] = useDescription({
componentProps: {
title: '订单信息',
bordered: false,
column: 3,
},
title: '订单信息',
bordered: false,
column: 3,
schema: useOrderInfoSchema(),
});
const [OrderStatusDescriptions] = useDescription({
componentProps: {
title: '订单状态',
bordered: false,
column: 1,
},
title: '订单状态',
bordered: false,
column: 1,
schema: useOrderStatusSchema(),
});
const [OrderPriceDescriptions] = useDescription({
componentProps: {
title: '费用信息',
bordered: false,
column: 4,
},
title: '费用信息',
bordered: false,
column: 4,
schema: useOrderPriceSchema(),
});
const [DeliveryInfoDescriptions] = useDescription({
componentProps: {
title: '收货信息',
bordered: false,
column: 3,
},
title: '收货信息',
bordered: false,
column: 3,
schema: useDeliveryInfoSchema(),
});