From 708bc7fc80d3f85d4a914c84cb6f3a455e87f036 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:56:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(shopOrder):=20=E8=A1=A5=E5=85=85=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=95=86=E5=93=81=E6=98=8E=E7=BB=86=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E5=88=97=E8=A1=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入订单商品明细接口listShopOrderGoods以获取详细商品数据 - 修改商品汇总显示,增加规格信息展示(商品名(规格) x 数量) - 优化订单列表加载,针对每笔订单单独请求商品明细数据补全 - 解决订单列表接口不返回orderGoods字段的问题,保证商品明细完整显示 - 确保异步获取商品详情失败时,使用空数组避免页面错误 --- .../shop/shopOrder/components/search.vue | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/views/shop/shopOrder/components/search.vue b/src/views/shop/shopOrder/components/search.vue index 3f0ed0d..903a188 100644 --- a/src/views/shop/shopOrder/components/search.vue +++ b/src/views/shop/shopOrder/components/search.vue @@ -98,6 +98,7 @@ import {message} from 'ant-design-vue'; import useSearch from '@/utils/use-search'; import {ShopOrder, ShopOrderParam} from '@/api/shop/shopOrder/model'; import {listShopOrder} from '@/api/shop/shopOrder'; +import {listShopOrderGoods} from '@/api/shop/shopOrderGoods'; import {getPayType} from '@/utils/shop'; const props = withDefaults( @@ -218,11 +219,14 @@ const getDeliveryStatusLabel = (s?: number) => { } }; -// 商品明细汇总(商品名 x 数量) +// 商品明细汇总(商品名(规格) x 数量) const getGoodsSummary = (goods?: any[]) => { if (!goods || !goods.length) return ''; return goods - .map((g) => `${g.goodsName || '未知商品'} x${g.totalNum || 1}`) + .map((g) => { + const spec = g.spec ? `(${g.spec})` : ''; + return `${g.goodsName || '未知商品'}${spec} x${g.totalNum || 1}`; + }) .join(';'); }; @@ -256,16 +260,24 @@ const handleExport = async () => { ]; await listShopOrder({ ...where, statusFilter: props.statusFilter }) - .then((list) => { + .then(async (list) => { orders.value = list; - list?.forEach((d: ShopOrder) => { + // 列表接口不返回 orderGoods,按订单逐个补齐商品明细(含名称/规格/数量) + const goodsList = await Promise.all( + (list ?? []).map((d) => + d.orderId + ? listShopOrderGoods({ orderId: d.orderId }).catch(() => []) + : Promise.resolve([]) + ) + ); + list?.forEach((d: ShopOrder, idx: number) => { array.push([ `${d.orderNo || ''}`, `${d.realName || ''}`, `${d.phone || d.mobile || ''}`, `${d.address || ''}`, `${getDeliveryTypeLabel(d.deliveryType)}`, - `${getGoodsSummary(d.orderGoods)}`, + `${getGoodsSummary(goodsList[idx])}`, `${d.totalNum ?? ''}`, `${d.payPrice || ''}`, `${