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 || ''}`, `${