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