From 3129b9f28190118ff91483537e91962603df66f8 Mon Sep 17 00:00:00 2001 From: tikkhun Date: Fri, 21 Nov 2025 17:16:30 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E7=BB=9F=E4=B8=80=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E6=A0=87=E7=82=B9=E7=AC=A6=E5=8F=B7=E4=B8=BA=E8=8B=B1=E6=96=87?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Order/Items/index.tsx | 33 ++++++++++++++- src/pages/Order/List/index.tsx | 4 ++ src/pages/Subscription/List/index.tsx | 16 ++++++++ .../Subscription/Orders/OrderDetailDrawer.tsx | 40 +++++++++++++++++++ .../Subscription/Orders/RelatedOrders.tsx | 9 +++++ src/pages/Subscription/Orders/index.tsx | 8 ++++ 6 files changed, 108 insertions(+), 2 deletions(-) diff --git a/src/pages/Order/Items/index.tsx b/src/pages/Order/Items/index.tsx index 4106fd2..850cfe5 100644 --- a/src/pages/Order/Items/index.tsx +++ b/src/pages/Order/Items/index.tsx @@ -7,6 +7,7 @@ import dayjs from 'dayjs'; import { ordercontrollerGetordersales } from '@/servers/api/order'; import { sitecontrollerAll } from '@/servers/api/site'; +<<<<<<< HEAD <<<<<<< HEAD // 列表行数据结构(订单商品聚合) interface OrderItemAggRow { @@ -21,10 +22,14 @@ interface OrderItemAggRow { moreThirdOrderCount: number; // 客户超过三次购买次数(该商品) ======= // 列表行数据结构(订单商品聚合) +======= +// 列表行数据结构(订单商品聚合) +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) interface OrderItemAggRow { - externalProductId: number; // 商品ID(来自 WooCommerce 产品ID) - externalVariationId: number; // 变体ID(来自 WooCommerce 变体ID) + externalProductId: number; // 商品ID(来自 WooCommerce 产品ID) + externalVariationId: number; // 变体ID(来自 WooCommerce 变体ID) name: string; // 商品名称 +<<<<<<< HEAD totalQuantity: number; // 总售出数量(时间范围内) totalOrders: number; // 涉及订单数(去重) firstOrderCount: number; // 客户首单次数(该商品) @@ -32,17 +37,29 @@ interface OrderItemAggRow { 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: '商品名称', @@ -103,11 +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 })); }, @@ -125,20 +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 d4d9be5..3fca9b8 100644 --- a/src/pages/Order/List/index.tsx +++ b/src/pages/Order/List/index.tsx @@ -914,10 +914,14 @@ 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: 统一中文标点符号为英文格式)
  • ))}
diff --git a/src/pages/Subscription/List/index.tsx b/src/pages/Subscription/List/index.tsx index f6ad26a..1e8aeb9 100644 --- a/src/pages/Subscription/List/index.tsx +++ b/src/pages/Subscription/List/index.tsx @@ -152,22 +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 ); @@ -232,11 +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 b3dda9c..344f5ab 100644 --- a/src/pages/Subscription/Orders/OrderDetailDrawer.tsx +++ b/src/pages/Subscription/Orders/OrderDetailDrawer.tsx @@ -13,11 +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, @@ -31,11 +35,15 @@ 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 @@ -43,6 +51,9 @@ type OrderRecord = API.Order; interface OrderDetailDrawerProps { <<<<<<< HEAD +<<<<<<< HEAD +======= +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) tableRef: React.MutableRefObject; // 中文注释:列表刷新引用 orderId: number; // 中文注释:订单主键 ID record: OrderRecord; // 中文注释:订单行记录 @@ -51,6 +62,7 @@ interface OrderDetailDrawerProps { setActiveLine: (id: number) => void; // 中文注释:高亮当前行 OrderNoteComponent: React.ComponentType; // 中文注释:备注组件(从外部注入) SalesChangeComponent: React.ComponentType; // 中文注释:换货组件(从外部注入) +<<<<<<< HEAD ======= tableRef: React.MutableRefObject; // 中文注释:列表刷新引用 orderId: number; // 中文注释:订单主键 ID @@ -61,6 +73,8 @@ interface OrderDetailDrawerProps { OrderNoteComponent: React.ComponentType; // 中文注释:备注组件(从外部注入) SalesChangeComponent: React.ComponentType; // 中文注释:换货组件(从外部注入) >>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) } const OrderDetailDrawer: React.FC = ({ @@ -76,11 +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; @@ -107,11 +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, @@ -269,6 +291,9 @@ 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 || '-'}
@@ -278,6 +303,7 @@ 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 || '-'}
@@ -289,16 +315,22 @@ const OrderDetailDrawer: React.FC = ({
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: 统一中文标点符号为英文格式) ))}
)} /> @@ -308,11 +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: 统一中文标点符号为英文格式) ))}
)} /> @@ -357,11 +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 028af20..a0c06b1 100644 --- a/src/pages/Subscription/Orders/RelatedOrders.tsx +++ b/src/pages/Subscription/Orders/RelatedOrders.tsx @@ -7,6 +7,7 @@ dayjs.extend(relativeTime); /** * RelatedOrders 表格组件 +<<<<<<< HEAD <<<<<<< HEAD * 用于展示订单详情中的关联数据(订阅/订单),按统一表格样式渲染 * 中文注释:本组件将订阅与订单统一归一化为五列展示,便于快速浏览 @@ -14,6 +15,10 @@ dayjs.extend(relativeTime); * 用于展示订单详情中的关联数据(订阅/订单),按统一表格样式渲染 * 中文注释:本组件将订阅与订单统一归一化为五列展示,便于快速浏览 >>>>>>> d98e843 (refactor(订单): 重构订单详情抽屉组件并移动相关文件) +======= + * 用于展示订单详情中的关联数据(订阅/订单),按统一表格样式渲染 + * 中文注释:本组件将订阅与订单统一归一化为五列展示,便于快速浏览 +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) */ const RelatedOrders: React.FC<{ data?: any[] }> = ({ data = [] }) => { const rows = (Array.isArray(data) ? data : []).map((it: any) => { @@ -34,11 +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 69ba61a..488b9de 100644 --- a/src/pages/Subscription/Orders/index.tsx +++ b/src/pages/Subscription/Orders/index.tsx @@ -42,11 +42,15 @@ 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); @@ -229,11 +233,15 @@ const OrdersPage: React.FC = () => { toolBarRender={false} /> <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD {/* 订阅关联:直接使用订单详情抽屉组件 */} ======= {/* 订阅关联:直接使用订单详情抽屉组件 */} >>>>>>> 1f4128f (refactor(订单): 抽离订单详情抽屉为独立组件并复用) +======= + {/* 订阅关联:直接使用订单详情抽屉组件 */} +>>>>>>> 3ac2724 (style: 统一中文标点符号为英文格式) {detailRecord && detailOrderId !== null && (