From c9a4e4c2294878364b04b629aaef18254b04d781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Thu, 23 Jul 2026 07:45:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(shopOrder):=20=E4=BC=98=E5=8C=96=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=AF=BC=E5=87=BA=E6=95=B0=E6=8D=AE=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E4=B8=8E=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增配送方式、发货状态等字段的中文标签转换函数 - 修改导出表头,调整字段顺序及名称,使信息更完整 - 导出内容增加收货人、联系电话、收货地址、商品明细等详细信息 - 优化商品明细汇总,显示商品名及数量 - 区分自提与快递的发货店铺名称展示 - 设置导出Excel表格列宽,更加美观规整 - 增加配送时间、自提码、买家备注等字段导出内容 --- .../shop/shopOrder/components/search.vue | 110 ++++++++++++++---- 1 file changed, 87 insertions(+), 23 deletions(-) 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(() => {