From 9335ce205d162ca6fae2750a7988d9f493ead1ed Mon Sep 17 00:00:00 2001 From: tikkhun Date: Wed, 19 Nov 2025 15:55:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=AF=B9=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Order/Items/index.tsx | 59 ++++++++ src/pages/Order/List/index.tsx | 39 +++++ src/pages/Subscription/List/index.tsx | 40 +++++ .../Subscription/Orders/OrderDetailDrawer.tsx | 91 +++++++++++ .../Subscription/Orders/RelatedOrders.tsx | 18 +++ src/pages/Subscription/Orders/index.tsx | 141 ++++++++++++++++++ 6 files changed, 388 insertions(+) diff --git a/src/pages/Order/Items/index.tsx b/src/pages/Order/Items/index.tsx index 945ddbf..850cfe5 100644 --- a/src/pages/Order/Items/index.tsx +++ b/src/pages/Order/Items/index.tsx @@ -7,6 +7,8 @@ import dayjs from 'dayjs'; import { ordercontrollerGetordersales } from '@/servers/api/order'; import { sitecontrollerAll } from '@/servers/api/site'; +<<<<<<< HEAD +<<<<<<< HEAD // 列表行数据结构(订单商品聚合) interface OrderItemAggRow { externalProductId: number; // 商品ID(来自 WooCommerce 产品ID) @@ -18,13 +20,46 @@ interface OrderItemAggRow { secondOrderCount: number; // 客户第二次购买次数(该商品) thirdOrderCount: number; // 客户第三次购买次数(该商品) moreThirdOrderCount: number; // 客户超过三次购买次数(该商品) +======= +// 列表行数据结构(订单商品聚合) +======= +// 列表行数据结构(订单商品聚合) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) +interface OrderItemAggRow { + externalProductId: number; // 商品ID(来自 WooCommerce 产品ID) + externalVariationId: number; // 变体ID(来自 WooCommerce 变体ID) + name: string; // 商品名称 +<<<<<<< HEAD + totalQuantity: number; // 总售出数量(时间范围内) + totalOrders: number; // 涉及订单数(去重) + firstOrderCount: number; // 客户首单次数(该商品) + secondOrderCount: number; // 客户第二次购买次数(该商品) + thirdOrderCount: number; // 客户第三次购买次数(该商品) + moreThirdOrderCount: number; // 客户超过三次购买次数(该商品) +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= + totalQuantity: number; // 总售出数量(时间范围内) + totalOrders: number; // 涉及订单数(去重) + firstOrderCount: number; // 客户首单次数(该商品) + secondOrderCount: number; // 客户第二次购买次数(该商品) + thirdOrderCount: number; // 客户第三次购买次数(该商品) + moreThirdOrderCount: number; // 客户超过三次购买次数(该商品) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) } const OrderItemsPage: React.FC = () => { const actionRef = useRef(); const { message } = App.useApp(); +<<<<<<< HEAD +<<<<<<< HEAD // 列配置(中文标题,符合当前项目风格;显示英文默认语言可后续走国际化) +======= + // 列配置(中文标题,符合当前项目风格;显示英文默认语言可后续走国际化) +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= + // 列配置(中文标题,符合当前项目风格;显示英文默认语言可后续走国际化) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) const columns: ProColumns[] = [ { title: '商品名称', @@ -85,7 +120,15 @@ const OrderItemsPage: React.FC = () => { dataIndex: 'siteId', valueType: 'select', request: async () => { +<<<<<<< HEAD +<<<<<<< HEAD // 拉取站点列表(后台 /site/all) +======= + // 拉取站点列表(后台 /site/all) +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= + // 拉取站点列表(后台 /site/all) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) const { data = [] } = await sitecontrollerAll(); return (data || []).map((item: any) => ({ label: item.siteName, value: item.id })); }, @@ -103,12 +146,28 @@ const OrderItemsPage: React.FC = () => { }, ]; +<<<<<<< HEAD +<<<<<<< HEAD // 表格请求方法:调用 /order/getOrderSales 接口并设置 isSource=true 获取订单项聚合 +======= + // 表格请求方法:调用 /order/getOrderSales 接口并设置 isSource=true 获取订单项聚合 +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= + // 表格请求方法:调用 /order/getOrderSales 接口并设置 isSource=true 获取订单项聚合 +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) const request: ProTableProps['request'] = async (params:any) => { try { const { current = 1, pageSize = 10, siteId, name } = params as any; const [startDate, endDate] = (params as any).dateRange || []; +<<<<<<< HEAD +<<<<<<< HEAD // 调用后端接口(isSource=true 表示按订单项聚合) +======= + // 调用后端接口(isSource=true 表示按订单项聚合) +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= + // 调用后端接口(isSource=true 表示按订单项聚合) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) const resp = await ordercontrollerGetordersales({ current, pageSize, diff --git a/src/pages/Order/List/index.tsx b/src/pages/Order/List/index.tsx index c45abaf..3fca9b8 100644 --- a/src/pages/Order/List/index.tsx +++ b/src/pages/Order/List/index.tsx @@ -80,7 +80,19 @@ import { Tag, } from 'antd'; import Item from 'antd/es/list/Item'; +<<<<<<< HEAD +<<<<<<< HEAD import RelatedOrders from '../../Subscription/Orders/RelatedOrders'; +======= +import RelatedOrders from './RelatedOrders'; +<<<<<<< HEAD +>>>>>>> 43be89b (feat(订单列表): 添加关联订单组件并优化订阅显示) +======= +import OrderDetailDrawer from './OrderDetailDrawer'; +>>>>>>> 1f4128f (refactor(订单): 抽离订单详情抽屉为独立组件并复用) +======= +import RelatedOrders from '../../Subscription/Orders/RelatedOrders'; +>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) import React, { useMemo, useRef, useState } from 'react'; import { printPDF } from '@/utils/util'; @@ -902,13 +914,40 @@ const Detail: React.FC<{
    {record?.items?.map((item: any) => (
  • +<<<<<<< HEAD +<<<<<<< HEAD {item.name}:{item.quantity} +======= + {item.name}:{item.quantity} +======= + {item.name}:{item.quantity} +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式)
  • ))}
); }} /> +<<<<<<< HEAD + {/* TODO 显示 related order */} + { + return ( +
    + {record?.related?.map((item: any) => ( +
  • + {JSON.stringify(item)} +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +
  • + ))} +
+ ); + }} + /> +======= +>>>>>>> 43be89b (feat(订单列表): 添加关联订单组件并优化订阅显示) {/* 显示 related order */} { // 表格操作引用:用于在同步后触发表格刷新 const actionRef = useRef(); const { message } = App.useApp(); +<<<<<<< HEAD +======= + + // 关联订单抽屉状态 + const [drawerOpen, setDrawerOpen] = useState(false); + const [drawerTitle, setDrawerTitle] = useState('详情'); + const [relatedOrders, setRelatedOrders] = useState([]); +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) // 关联订单抽屉状态 const [drawerOpen, setDrawerOpen] = useState(false); @@ -144,14 +152,30 @@ const ListPage: React.FC = () => { message.warning('该订阅缺少父订单号'); return; } +<<<<<<< HEAD +<<<<<<< HEAD // 通过父订单号查询关联订单(模糊匹配) +======= + // 通过父订单号查询关联订单(模糊匹配) +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= + // 通过父订单号查询关联订单(模糊匹配) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) const resp = await request('/order/getOrderByNumber', { method: 'POST', data: { number: parentNumber }, }); const { success, data, message: errMsg } = resp as any; if (!success) throw new Error(errMsg || '获取失败'); +<<<<<<< HEAD +<<<<<<< HEAD // 仅保留与父订单号完全一致的订单(避免模糊匹配误入) +======= + // 仅保留与父订单号完全一致的订单(避免模糊匹配误入) +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= + // 仅保留与父订单号完全一致的订单(避免模糊匹配误入) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) const candidates: any[] = (Array.isArray(data) ? data : []).filter( (c: any) => String(c?.externalOrderId) === parentNumber ); @@ -216,7 +240,15 @@ const ListPage: React.FC = () => { // 工具栏:订阅同步入口 toolBarRender={() => []} /> +<<<<<<< HEAD +<<<<<<< HEAD {/* 关联订单抽屉:展示订单号、关系、时间、状态与金额 */} +======= + {/* 关联订单抽屉:展示订单号、关系、时间、状态与金额 */} +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= + {/* 关联订单抽屉:展示订单号、关系、时间、状态与金额 */} +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) { >>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= + description={`关系:${item?.relationship || '-'},站点:${item?.siteName || '-'}`} +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) />
{item?.date_created ? dayjs(item.date_created).format('YYYY-MM-DD HH:mm') : '-'} diff --git a/src/pages/Subscription/Orders/OrderDetailDrawer.tsx b/src/pages/Subscription/Orders/OrderDetailDrawer.tsx index 51f3f0d..344f5ab 100644 --- a/src/pages/Subscription/Orders/OrderDetailDrawer.tsx +++ b/src/pages/Subscription/Orders/OrderDetailDrawer.tsx @@ -13,7 +13,15 @@ import { import { ActionType, ProDescriptions } from '@ant-design/pro-components'; import { CopyOutlined, DeleteFilled } from '@ant-design/icons'; +<<<<<<< HEAD +<<<<<<< HEAD // 服务器 API 引用(保持与原 index.tsx 一致) +======= +// 服务器 API 引用(保持与原 index.tsx 一致) +>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= +// 服务器 API 引用(保持与原 index.tsx 一致) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) import { ordercontrollerChangestatus, ordercontrollerGetorderdetail, @@ -27,13 +35,25 @@ import { formatShipmentState, formatSource } from '@/utils/format'; import RelatedOrders from './RelatedOrders'; import { ORDER_STATUS_ENUM } from '@/constants'; +<<<<<<< HEAD +<<<<<<< HEAD // 中文注释:为保持原文件结构简单,此处从 index.tsx 引入的子组件仍由原文件导出或保持原状 +======= +// 中文注释:为保持原文件结构简单,此处从 index.tsx 引入的子组件仍由原文件导出或保持原状 +>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= +// 中文注释:为保持原文件结构简单,此处从 index.tsx 引入的子组件仍由原文件导出或保持原状 +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) // 若后续需要彻底解耦,可将 OrderNote / Shipping / SalesChange 也独立到文件 // 当前按你的要求仅抽离详情 Drawer type OrderRecord = API.Order; interface OrderDetailDrawerProps { +<<<<<<< HEAD +<<<<<<< HEAD +======= +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) tableRef: React.MutableRefObject; // 中文注释:列表刷新引用 orderId: number; // 中文注释:订单主键 ID record: OrderRecord; // 中文注释:订单行记录 @@ -42,6 +62,19 @@ interface OrderDetailDrawerProps { setActiveLine: (id: number) => void; // 中文注释:高亮当前行 OrderNoteComponent: React.ComponentType; // 中文注释:备注组件(从外部注入) SalesChangeComponent: React.ComponentType; // 中文注释:换货组件(从外部注入) +<<<<<<< HEAD +======= + tableRef: React.MutableRefObject; // 中文注释:列表刷新引用 + orderId: number; // 中文注释:订单主键 ID + record: OrderRecord; // 中文注释:订单行记录 + open: boolean; // 中文注释:是否打开抽屉 + onClose: () => void; // 中文注释:关闭抽屉回调 + setActiveLine: (id: number) => void; // 中文注释:高亮当前行 + OrderNoteComponent: React.ComponentType; // 中文注释:备注组件(从外部注入) + SalesChangeComponent: React.ComponentType; // 中文注释:换货组件(从外部注入) +>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) } const OrderDetailDrawer: React.FC = ({ @@ -57,7 +90,15 @@ const OrderDetailDrawer: React.FC = ({ const { message } = App.useApp(); const ref = useRef(); +<<<<<<< HEAD +<<<<<<< HEAD // 中文注释:加载详情数据(与 index.tsx 中完全保持一致) +======= + // 中文注释:加载详情数据(与 index.tsx 中完全保持一致) +>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= + // 中文注释:加载详情数据(与 index.tsx 中完全保持一致) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) const initRequest = async () => { const { data, success }: API.OrderDetailRes = await ordercontrollerGetorderdetail({ orderId }); if (!success || !data) return { data: {} } as any; @@ -84,7 +125,15 @@ const OrderDetailDrawer: React.FC = ({ size="large" onClose={onClose} footer={[ +<<<<<<< HEAD +<<<<<<< HEAD // 中文注释:备注组件(外部传入以避免循环依赖) +======= + // 中文注释:备注组件(外部传入以避免循环依赖) +>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= + // 中文注释:备注组件(外部传入以避免循环依赖) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) , ...(['after_sale_pending', 'pending_reshipment'].includes( record.orderStatus, @@ -241,6 +290,10 @@ const OrderDetailDrawer: React.FC = ({ (
+<<<<<<< HEAD +<<<<<<< HEAD +======= +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式)
company:{r?.shipping?.company || r?.billing?.company || '-'}
first_name:{r?.shipping?.first_name || r?.billing?.first_name || '-'}
last_name:{r?.shipping?.last_name || r?.billing?.last_name || '-'}
@@ -250,12 +303,34 @@ const OrderDetailDrawer: React.FC = ({
postcode:{r?.shipping?.postcode || r?.billing?.postcode || '-'}
phone:{r?.shipping?.phone || r?.billing?.phone || '-'}
address_1:{r?.shipping?.address_1 || r?.billing?.address_1 || '-'}
+<<<<<<< HEAD +======= +
company:{r?.shipping?.company || r?.billing?.company || '-'}
+
first_name:{r?.shipping?.first_name || r?.billing?.first_name || '-'}
+
last_name:{r?.shipping?.last_name || r?.billing?.last_name || '-'}
+
country:{r?.shipping?.country || r?.billing?.country || '-'}
+
state:{r?.shipping?.state || r?.billing?.state || '-'}
+
city:{r?.shipping?.city || r?.billing?.city || '-'}
+
postcode:{r?.shipping?.postcode || r?.billing?.postcode || '-'}
+
phone:{r?.shipping?.phone || r?.billing?.phone || '-'}
+
address_1:{r?.shipping?.address_1 || r?.billing?.address_1 || '-'}
+>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式)
)} /> (
    {(r?.items || []).map((item: any) => ( +<<<<<<< HEAD +<<<<<<< HEAD
  • {item.name}:{item.quantity}
  • +======= +
  • {item.name}:{item.quantity}
  • +>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= +
  • {item.name}:{item.quantity}
  • +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) ))}
)} /> @@ -265,7 +340,15 @@ const OrderDetailDrawer: React.FC = ({ (
    {(r?.sales || []).map((item: any) => ( +<<<<<<< HEAD +<<<<<<< HEAD
  • {item.name}:{item.quantity}
  • +======= +
  • {item.name}:{item.quantity}
  • +>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= +
  • {item.name}:{item.quantity}
  • +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) ))}
)} /> @@ -310,7 +393,15 @@ const OrderDetailDrawer: React.FC = ({ ] : [] } > +<<<<<<< HEAD +<<<<<<< HEAD
订单号: {Array.isArray(v?.orderIds) ? v.orderIds.join(',') : '-'}
+======= +
订单号: {Array.isArray(v?.orderIds) ? v.orderIds.join(',') : '-'}
+>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= +
订单号: {Array.isArray(v?.orderIds) ? v.orderIds.join(',') : '-'}
+>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) {Array.isArray(v?.items) && v.items.map((item: any) => (
{item.name}: {item.quantity}
))} diff --git a/src/pages/Subscription/Orders/RelatedOrders.tsx b/src/pages/Subscription/Orders/RelatedOrders.tsx index 57470ab..a0c06b1 100644 --- a/src/pages/Subscription/Orders/RelatedOrders.tsx +++ b/src/pages/Subscription/Orders/RelatedOrders.tsx @@ -7,8 +7,18 @@ dayjs.extend(relativeTime); /** * RelatedOrders 表格组件 +<<<<<<< HEAD +<<<<<<< HEAD * 用于展示订单详情中的关联数据(订阅/订单),按统一表格样式渲染 * 中文注释:本组件将订阅与订单统一归一化为五列展示,便于快速浏览 +======= + * 用于展示订单详情中的关联数据(订阅/订单),按统一表格样式渲染 + * 中文注释:本组件将订阅与订单统一归一化为五列展示,便于快速浏览 +>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= + * 用于展示订单详情中的关联数据(订阅/订单),按统一表格样式渲染 + * 中文注释:本组件将订阅与订单统一归一化为五列展示,便于快速浏览 +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) */ const RelatedOrders: React.FC<{ data?: any[] }> = ({ data = [] }) => { const rows = (Array.isArray(data) ? data : []).map((it: any) => { @@ -29,7 +39,15 @@ const RelatedOrders: React.FC<{ data?: any[] }> = ({ data = [] }) => { return (
+<<<<<<< HEAD +<<<<<<< HEAD {/* 表头(英文文案,符合国际化默认英文的要求) */} +======= + {/* 表头(英文文案,符合国际化默认英文的要求) */} +>>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= + {/* 表头(英文文案,符合国际化默认英文的要求) */} +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式)
订单编号
关系
diff --git a/src/pages/Subscription/Orders/index.tsx b/src/pages/Subscription/Orders/index.tsx index bc4a9bb..488b9de 100644 --- a/src/pages/Subscription/Orders/index.tsx +++ b/src/pages/Subscription/Orders/index.tsx @@ -2,11 +2,30 @@ import React, { useRef, useState } from 'react'; import { PageContainer } from '@ant-design/pro-layout'; import type { ProColumns, ActionType, ProTableProps } from '@ant-design/pro-components'; import { ProTable } from '@ant-design/pro-components'; +<<<<<<< HEAD +<<<<<<< HEAD import { App, Tag, Button } from 'antd'; import dayjs from 'dayjs'; import { ordercontrollerGetorders } from '@/servers/api/order'; import OrderDetailDrawer from './OrderDetailDrawer'; +<<<<<<< HEAD import { sitecontrollerAll } from '@/servers/api/site'; +======= +import { App, Tag, Button, Drawer, List } from 'antd'; +======= +import { App, Tag, Button } from 'antd'; +>>>>>>> 1f4128f (refactor(订单): 抽离订单详情抽屉为独立组件并复用) +import dayjs from 'dayjs'; +import { ordercontrollerGetorders } from '@/servers/api/order'; +import OrderDetailDrawer from '@/pages/Order/List/OrderDetailDrawer'; +======= +>>>>>>> 502cd0c (refactor(Subscription/Orders): 使用相对路径导入OrderDetailDrawer组件) +import { sitecontrollerAll } from '@/servers/api/site'; +<<<<<<< HEAD +import { request } from 'umi'; +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= +>>>>>>> 43be89b (feat(订单列表): 添加关联订单组件并优化订阅显示) interface OrderItemRow { id: number; @@ -22,11 +41,31 @@ interface OrderItemRow { const OrdersPage: React.FC = () => { const actionRef = useRef(); const { message } = App.useApp(); +<<<<<<< HEAD +<<<<<<< HEAD +<<<<<<< HEAD // 抽屉状态:改为复用订单详情抽屉组件 +======= + // 抽屉状态:改为复用订单详情抽屉组件 +>>>>>>> 1f4128f (refactor(订单): 抽离订单详情抽屉为独立组件并复用) +======= + // 抽屉状态:改为复用订单详情抽屉组件 +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) const [detailOpen, setDetailOpen] = useState(false); const [detailRecord, setDetailRecord] = useState(null); const [detailOrderId, setDetailOrderId] = useState(null); const Noop: React.FC = () => null; +<<<<<<< HEAD +======= + // 抽屉状态:用于展示与订阅相关的订单详情(含行项目meta) + const [drawerOpen, setDrawerOpen] = useState(false); + const [drawerTitle, setDrawerTitle] = useState('订阅关联'); + const [drawerItems, setDrawerItems] = useState([]); + const [drawerMeta, setDrawerMeta] = useState([]); + const [isSubscription, setIsSubscription] = useState(false); +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= +>>>>>>> 1f4128f (refactor(订单): 抽离订单详情抽屉为独立组件并复用) const columns: ProColumns[] = [ { @@ -84,10 +123,54 @@ const OrdersPage: React.FC = () => { render: (_, row) => (
} + dataSource={drawerItems} + renderItem={(item: any) => ( + + +
+ {(Array.isArray(item?.meta_data) ? item.meta_data : []).map((m: any) => ( + {`${m?.key}: ${m?.value}`} + ))} +
+
+ )} + /> + {/* 订单级元数据 */} + 订单元数据
} + dataSource={drawerMeta} + renderItem={(m: any) => ( + + {`${m?.key}: ${m?.value}`} + + )} + /> + +>>>>>>> 90ea0f5 (feat(订单): 添加关联订单显示功能并创建订单商品和订阅订单页面) +======= + /> + )} +>>>>>>> 1f4128f (refactor(订单): 抽离订单详情抽屉为独立组件并复用) ); };