diff --git a/src/views/shop/shopOrder/components/search.vue b/src/views/shop/shopOrder/components/search.vue index a720c53..512ac64 100644 --- a/src/views/shop/shopOrder/components/search.vue +++ b/src/views/shop/shopOrder/components/search.vue @@ -188,18 +188,67 @@ const orders = ref([]); const xlsFileName = 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 () => { 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(() => {