feat(shopOrder): 优化订单导出数据格式与内容

- 新增配送方式、发货状态等字段的中文标签转换函数
- 修改导出表头,调整字段顺序及名称,使信息更完整
- 导出内容增加收货人、联系电话、收货地址、商品明细等详细信息
- 优化商品明细汇总,显示商品名及数量
- 区分自提与快递的发货店铺名称展示
- 设置导出Excel表格列宽,更加美观规整
- 增加配送时间、自提码、买家备注等字段导出内容
This commit is contained in:
2026-07-23 07:45:35 +08:00
parent f65b8a945d
commit c9a4e4c229

View File

@@ -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(() => {