feat(shopOrder): 优化订单导出数据格式与内容
- 新增配送方式、发货状态等字段的中文标签转换函数 - 修改导出表头,调整字段顺序及名称,使信息更完整 - 导出内容增加收货人、联系电话、收货地址、商品明细等详细信息 - 优化商品明细汇总,显示商品名及数量 - 区分自提与快递的发货店铺名称展示 - 设置导出Excel表格列宽,更加美观规整 - 增加配送时间、自提码、买家备注等字段导出内容
This commit is contained in:
@@ -188,18 +188,67 @@ const orders = ref<ShopOrder[]>([]);
|
|||||||
const xlsFileName = ref<string>();
|
const xlsFileName = ref<string>();
|
||||||
const type = ref('');
|
const type = ref('');
|
||||||
|
|
||||||
|
// 配送方式中文(0快递配送 1无需发货/自提 2商家送货)
|
||||||
|
const getDeliveryTypeLabel = (t?: number) => {
|
||||||
|
switch (t) {
|
||||||
|
case 0:
|
||||||
|
return '快递配送';
|
||||||
|
case 1:
|
||||||
|
return '无需发货(自提)';
|
||||||
|
case 2:
|
||||||
|
return '商家送货';
|
||||||
|
default:
|
||||||
|
return '未设置';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 发货状态中文(10未发货 20已发货 30部分发货)
|
||||||
|
const getDeliveryStatusLabel = (s?: number) => {
|
||||||
|
switch (s) {
|
||||||
|
case 10:
|
||||||
|
return '未发货';
|
||||||
|
case 20:
|
||||||
|
return '已发货';
|
||||||
|
case 30:
|
||||||
|
return '部分发货';
|
||||||
|
default:
|
||||||
|
return '未知';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 商品明细汇总(商品名 x 数量)
|
||||||
|
const getGoodsSummary = (goods?: any[]) => {
|
||||||
|
if (!goods || !goods.length) return '';
|
||||||
|
return goods
|
||||||
|
.map((g) => `${g.goodsName || '未知商品'} x${g.totalNum || 1}`)
|
||||||
|
.join(';');
|
||||||
|
};
|
||||||
|
|
||||||
|
// 自提/发货店铺名称
|
||||||
|
const getShopName = (d: ShopOrder) => {
|
||||||
|
if (d.deliveryType === 1) return d.selfTakeMerchantName || '';
|
||||||
|
return d.expressMerchantName || '';
|
||||||
|
};
|
||||||
|
|
||||||
// 导出
|
// 导出
|
||||||
const handleExport = async () => {
|
const handleExport = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const array: (string | number)[][] = [
|
const array: (string | number)[][] = [
|
||||||
[
|
[
|
||||||
'订单编号',
|
'订单编号',
|
||||||
'订单标题',
|
'收货人',
|
||||||
'买家姓名',
|
'联系电话',
|
||||||
'手机号码',
|
'收货地址',
|
||||||
|
'配送方式',
|
||||||
|
'商品明细',
|
||||||
|
'商品总数量',
|
||||||
'实付金额(元)',
|
'实付金额(元)',
|
||||||
|
'配送时间',
|
||||||
|
'自提码',
|
||||||
|
'发货/自提店铺',
|
||||||
|
'买家备注',
|
||||||
'支付方式',
|
'支付方式',
|
||||||
'付款时间',
|
'发货状态',
|
||||||
'下单时间'
|
'下单时间'
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
@@ -209,14 +258,25 @@ const handleExport = async () => {
|
|||||||
orders.value = list;
|
orders.value = list;
|
||||||
list?.forEach((d: ShopOrder) => {
|
list?.forEach((d: ShopOrder) => {
|
||||||
array.push([
|
array.push([
|
||||||
`${d.orderNo}`,
|
`${d.orderNo || ''}`,
|
||||||
`${d.comments}`,
|
`${d.realName || ''}`,
|
||||||
`${d.realName}`,
|
`${d.phone || d.mobile || ''}`,
|
||||||
`${d.phone}`,
|
`${d.address || ''}`,
|
||||||
`${d.payPrice}`,
|
`${getDeliveryTypeLabel(d.deliveryType)}`,
|
||||||
|
`${getGoodsSummary(d.orderGoods)}`,
|
||||||
|
`${d.totalNum ?? ''}`,
|
||||||
|
`${d.payPrice || ''}`,
|
||||||
|
`${
|
||||||
|
d.sendStartTime && d.sendEndTime
|
||||||
|
? `${d.sendStartTime} - ${d.sendEndTime}`
|
||||||
|
: ''
|
||||||
|
}`,
|
||||||
|
`${d.selfTakeCode || ''}`,
|
||||||
|
`${getShopName(d)}`,
|
||||||
|
`${d.buyerRemarks || ''}`,
|
||||||
`${getPayType(d.payType)}`,
|
`${getPayType(d.payType)}`,
|
||||||
`${d.payTime || ''}`,
|
`${getDeliveryStatusLabel(d.deliveryStatus)}`,
|
||||||
`${d.createTime}`
|
`${d.createTime || ''}`
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
const sheetName = `订单数据`;
|
const sheetName = `订单数据`;
|
||||||
@@ -226,19 +286,23 @@ const handleExport = async () => {
|
|||||||
};
|
};
|
||||||
const sheet = utils.aoa_to_sheet(array);
|
const sheet = utils.aoa_to_sheet(array);
|
||||||
workbook.Sheets[sheetName] = sheet;
|
workbook.Sheets[sheetName] = sheet;
|
||||||
// 设置列宽
|
// 设置列宽(与上方表头一一对应)
|
||||||
sheet['!cols'] = [
|
sheet['!cols'] = [
|
||||||
{wch: 10},
|
{wch: 22}, // 订单编号
|
||||||
{wch: 40},
|
{wch: 12}, // 收货人
|
||||||
{wch: 20},
|
{wch: 16}, // 联系电话
|
||||||
{wch: 20},
|
{wch: 40}, // 收货地址
|
||||||
{wch: 60},
|
{wch: 14}, // 配送方式
|
||||||
{wch: 15},
|
{wch: 40}, // 商品明细
|
||||||
{wch: 10},
|
{wch: 12}, // 商品总数量
|
||||||
{wch: 10},
|
{wch: 12}, // 实付金额(元)
|
||||||
{wch: 20},
|
{wch: 28}, // 配送时间
|
||||||
{wch: 10},
|
{wch: 12}, // 自提码
|
||||||
{wch: 20}
|
{wch: 20}, // 发货/自提店铺
|
||||||
|
{wch: 30}, // 买家备注
|
||||||
|
{wch: 12}, // 支付方式
|
||||||
|
{wch: 10}, // 发货状态
|
||||||
|
{wch: 20} // 下单时间
|
||||||
];
|
];
|
||||||
message.loading('正在导出...');
|
message.loading('正在导出...');
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user