From 9335ce205d162ca6fae2750a7988d9f493ead1ed Mon Sep 17 00:00:00 2001 From: tikkhun Date: Wed, 19 Nov 2025 15:55:40 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=E8=AE=A2=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(订单): 抽离订单详情抽屉为独立组件并复用) ); }; From 9814eca928ea59755e3f165cfd370d5731d187b6 Mon Sep 17 00:00:00 2001 From: tikkhun Date: Tue, 25 Nov 2025 10:58:55 +0800 Subject: [PATCH 2/4] =?UTF-8?q?style(=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85)?= =?UTF-8?q?:=20=E7=BB=9F=E4=B8=80=E4=B8=AD=E6=96=87=E6=A0=87=E7=82=B9?= =?UTF-8?q?=E7=AC=A6=E5=8F=B7=E4=B8=BA=E8=8B=B1=E6=96=87=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E5=B9=B6=E6=B8=85=E7=90=86=E5=90=88=E5=B9=B6=E5=86=B2=E7=AA=81?= =?UTF-8?q?=E6=A0=87=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Subscription/Orders/OrderDetailDrawer.tsx | 113 ++---------------- 1 file changed, 11 insertions(+), 102 deletions(-) diff --git a/src/pages/Subscription/Orders/OrderDetailDrawer.tsx b/src/pages/Subscription/Orders/OrderDetailDrawer.tsx index 344f5ab..eabbbb3 100644 --- a/src/pages/Subscription/Orders/OrderDetailDrawer.tsx +++ b/src/pages/Subscription/Orders/OrderDetailDrawer.tsx @@ -13,15 +13,7 @@ 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, @@ -35,46 +27,21 @@ 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: 统一中文标点符号为英文格式) +// 为保持原文件结构简单,此处从 index.tsx 引入的子组件仍由原文件导出或保持原状 // 若后续需要彻底解耦,可将 OrderNote / Shipping / SalesChange 也独立到文件 // 当前按你的要求仅抽离详情 Drawer type OrderRecord = API.Order; interface OrderDetailDrawerProps { -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) - tableRef: React.MutableRefObject; // 中文注释:列表刷新引用 - orderId: number; // 中文注释:订单主键 ID - record: OrderRecord; // 中文注释:订单行记录 - open: boolean; // 中文注释:是否打开抽屉 - onClose: () => void; // 中文注释:关闭抽屉回调 - 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: 统一中文标点符号为英文格式) + tableRef: React.MutableRefObject; // 列表刷新引用 + orderId: number; // 订单主键 ID + record: OrderRecord; // 订单行记录 + open: boolean; // 是否打开抽屉 + onClose: () => void; // 关闭抽屉回调 + setActiveLine: (id: number) => void; // 高亮当前行 + OrderNoteComponent: React.ComponentType; // 备注组件(从外部注入) + SalesChangeComponent: React.ComponentType; // 换货组件(从外部注入) } const OrderDetailDrawer: React.FC = ({ @@ -90,15 +57,7 @@ const OrderDetailDrawer: React.FC = ({ const { message } = App.useApp(); const ref = useRef(); -<<<<<<< HEAD -<<<<<<< HEAD - // 中文注释:加载详情数据(与 index.tsx 中完全保持一致) -======= - // 中文注释:加载详情数据(与 index.tsx 中完全保持一致) ->>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) -======= - // 中文注释:加载详情数据(与 index.tsx 中完全保持一致) ->>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) + // 加载详情数据(与 index.tsx 中完全保持一致) const initRequest = async () => { const { data, success }: API.OrderDetailRes = await ordercontrollerGetorderdetail({ orderId }); if (!success || !data) return { data: {} } as any; @@ -125,15 +84,7 @@ const OrderDetailDrawer: React.FC = ({ size="large" onClose={onClose} footer={[ -<<<<<<< HEAD -<<<<<<< HEAD - // 中文注释:备注组件(外部传入以避免循环依赖) -======= - // 中文注释:备注组件(外部传入以避免循环依赖) ->>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) -======= - // 中文注释:备注组件(外部传入以避免循环依赖) ->>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) + // 备注组件(外部传入以避免循环依赖) , ...(['after_sale_pending', 'pending_reshipment'].includes( record.orderStatus, @@ -290,10 +241,6 @@ 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 || '-'}
@@ -303,34 +250,12 @@ 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: 统一中文标点符号为英文格式) ))}
)} /> @@ -340,15 +265,7 @@ 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: 统一中文标点符号为英文格式) ))}
)} /> @@ -393,15 +310,7 @@ 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}
))} From 9c5caa1aea469c3853d98a5e85ac08d1644335b0 Mon Sep 17 00:00:00 2001 From: tikkhun Date: Tue, 25 Nov 2025 11:09:07 +0800 Subject: [PATCH 3/4] =?UTF-8?q?refactor(=E8=AE=A2=E5=8D=95):=20=E6=B8=85?= =?UTF-8?q?=E7=90=86=E5=90=88=E5=B9=B6=E5=86=B2=E7=AA=81=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85=E6=8A=BD=E5=B1=89?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=A4=8D=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除合并冲突标记和重复代码,统一使用相对路径导入组件 简化订单详情逻辑,直接复用OrderDetailDrawer组件 --- .../Subscription/Orders/RelatedOrders.tsx | 18 --- src/pages/Subscription/Orders/index.tsx | 141 ------------------ 2 files changed, 159 deletions(-) diff --git a/src/pages/Subscription/Orders/RelatedOrders.tsx b/src/pages/Subscription/Orders/RelatedOrders.tsx index a0c06b1..57470ab 100644 --- a/src/pages/Subscription/Orders/RelatedOrders.tsx +++ b/src/pages/Subscription/Orders/RelatedOrders.tsx @@ -7,18 +7,8 @@ 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) => { @@ -39,15 +29,7 @@ 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 488b9de..bc4a9bb 100644 --- a/src/pages/Subscription/Orders/index.tsx +++ b/src/pages/Subscription/Orders/index.tsx @@ -2,30 +2,11 @@ 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; @@ -41,31 +22,11 @@ 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[] = [ { @@ -123,54 +84,10 @@ 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(订单): 抽离订单详情抽屉为独立组件并复用) ); }; From 73ed01568013ce852dfa342dd420bc5451ba2588 Mon Sep 17 00:00:00 2001 From: tikkhun Date: Tue, 25 Nov 2025 11:13:10 +0800 Subject: [PATCH 4/4] =?UTF-8?q?style:=20=E7=BB=9F=E4=B8=80=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E6=A0=87=E7=82=B9=E7=AC=A6=E5=8F=B7=E4=B8=BA=E8=8B=B1?= =?UTF-8?q?=E6=96=87=E6=A0=BC=E5=BC=8F=E5=B9=B6=E6=B8=85=E7=90=86=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=86=B2=E7=AA=81=E6=A0=87=E8=AE=B0?= 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 ------------------ 3 files changed, 138 deletions(-) diff --git a/src/pages/Order/Items/index.tsx b/src/pages/Order/Items/index.tsx index 850cfe5..945ddbf 100644 --- a/src/pages/Order/Items/index.tsx +++ b/src/pages/Order/Items/index.tsx @@ -7,8 +7,6 @@ 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) @@ -20,46 +18,13 @@ 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: '商品名称', @@ -120,15 +85,7 @@ 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 })); }, @@ -146,28 +103,12 @@ 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 3fca9b8..c45abaf 100644 --- a/src/pages/Order/List/index.tsx +++ b/src/pages/Order/List/index.tsx @@ -80,19 +80,7 @@ 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'; @@ -914,40 +902,13 @@ 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); @@ -152,30 +144,14 @@ 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 ); @@ -240,15 +216,7 @@ 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') : '-'}