From 429a844563f43a649047bb4a58b62741c3be7af2 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 --- .umirc.ts | 2 +- src/app.tsx | 2 +- src/hooks/useDeviceFingerprint.ts | 2 +- src/pages/Order/Items/index.tsx | 26 +++++----- src/pages/Order/List/index.tsx | 24 +++++----- src/pages/Statistics/Customer/index.tsx | 6 +-- src/pages/Statistics/Sales/index.tsx | 2 +- src/pages/Stock/PurchaseOrder/index.tsx | 4 +- src/pages/Stock/Transfer/index.tsx | 4 +- src/pages/Subscription/List/index.tsx | 22 ++++----- .../Subscription/Orders/OrderDetailDrawer.tsx | 48 +++++++++---------- .../Subscription/Orders/RelatedOrders.tsx | 6 +-- src/pages/Subscription/Orders/index.tsx | 4 +- src/servers/api/index.ts | 4 +- src/servers/api/typings.d.ts | 6 +-- typings.d.ts | 4 +- 16 files changed, 83 insertions(+), 83 deletions(-) diff --git a/.umirc.ts b/.umirc.ts index 508273f..86cce20 100644 --- a/.umirc.ts +++ b/.umirc.ts @@ -124,7 +124,7 @@ export default defineConfig({ }, ], }, - // 新增:订阅管理路由分组(权限复用 canSeeOrder) + // 新增:订阅管理路由分组(权限复用 canSeeOrder) { name: '订阅管理', path: '/subscription', diff --git a/src/app.tsx b/src/app.tsx index ad17b86..50ea763 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -16,7 +16,7 @@ import { usercontrollerGetuser } from './servers/api/user'; dayjs.locale('zh-cn'); // 全局初始化数据配置,用于 Layout 用户信息和权限初始化 -// 更多信息见文档:https://umijs.org/docs/api/runtime-config#getinitialstate +// 更多信息见文档:https://umijs.org/docs/api/runtime-config#getinitialstate export async function getInitialState(): Promise<{ user?: Record; categoryList?: ProSchemaValueEnumObj; diff --git a/src/hooks/useDeviceFingerprint.ts b/src/hooks/useDeviceFingerprint.ts index f51f6df..b31dee2 100644 --- a/src/hooks/useDeviceFingerprint.ts +++ b/src/hooks/useDeviceFingerprint.ts @@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'; import FingerprintJS from '@fingerprintjs/fingerprintjs'; /** - * Hook: 获取设备指纹(visitorId) + * Hook: 获取设备指纹(visitorId) */ export function useDeviceFingerprint() { const [fingerprint, setFingerprint] = useState(null); diff --git a/src/pages/Order/Items/index.tsx b/src/pages/Order/Items/index.tsx index ee452fe..945ddbf 100644 --- a/src/pages/Order/Items/index.tsx +++ b/src/pages/Order/Items/index.tsx @@ -7,24 +7,24 @@ import dayjs from 'dayjs'; import { ordercontrollerGetordersales } from '@/servers/api/order'; import { sitecontrollerAll } from '@/servers/api/site'; -// 列表行数据结构(订单商品聚合) +// 列表行数据结构(订单商品聚合) interface OrderItemAggRow { - externalProductId: number; // 商品ID(来自 WooCommerce 产品ID) - externalVariationId: number; // 变体ID(来自 WooCommerce 变体ID) + externalProductId: number; // 商品ID(来自 WooCommerce 产品ID) + externalVariationId: number; // 变体ID(来自 WooCommerce 变体ID) name: string; // 商品名称 - totalQuantity: number; // 总售出数量(时间范围内) - totalOrders: number; // 涉及订单数(去重) - firstOrderCount: number; // 客户首单次数(该商品) - secondOrderCount: number; // 客户第二次购买次数(该商品) - thirdOrderCount: number; // 客户第三次购买次数(该商品) - moreThirdOrderCount: number; // 客户超过三次购买次数(该商品) + totalQuantity: number; // 总售出数量(时间范围内) + totalOrders: number; // 涉及订单数(去重) + firstOrderCount: number; // 客户首单次数(该商品) + secondOrderCount: number; // 客户第二次购买次数(该商品) + thirdOrderCount: number; // 客户第三次购买次数(该商品) + moreThirdOrderCount: number; // 客户超过三次购买次数(该商品) } const OrderItemsPage: React.FC = () => { const actionRef = useRef(); const { message } = App.useApp(); - // 列配置(中文标题,符合当前项目风格;显示英文默认语言可后续走国际化) + // 列配置(中文标题,符合当前项目风格;显示英文默认语言可后续走国际化) const columns: ProColumns[] = [ { title: '商品名称', @@ -85,7 +85,7 @@ const OrderItemsPage: React.FC = () => { dataIndex: 'siteId', valueType: 'select', request: async () => { - // 拉取站点列表(后台 /site/all) + // 拉取站点列表(后台 /site/all) const { data = [] } = await sitecontrollerAll(); return (data || []).map((item: any) => ({ label: item.siteName, value: item.id })); }, @@ -103,12 +103,12 @@ const OrderItemsPage: React.FC = () => { }, ]; - // 表格请求方法:调用 /order/getOrderSales 接口并设置 isSource=true 获取订单项聚合 + // 表格请求方法:调用 /order/getOrderSales 接口并设置 isSource=true 获取订单项聚合 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 || []; - // 调用后端接口(isSource=true 表示按订单项聚合) + // 调用后端接口(isSource=true 表示按订单项聚合) const resp = await ordercontrollerGetordersales({ current, pageSize, diff --git a/src/pages/Order/List/index.tsx b/src/pages/Order/List/index.tsx index a0b4cce..c45abaf 100644 --- a/src/pages/Order/List/index.tsx +++ b/src/pages/Order/List/index.tsx @@ -824,7 +824,7 @@ const Detail: React.FC<{ return (
- company: + company: {record?.shipping?.company || record?.billing?.company || @@ -832,7 +832,7 @@ const Detail: React.FC<{
- first_name: + first_name: {record?.shipping?.first_name || record?.billing?.first_name || @@ -840,7 +840,7 @@ const Detail: React.FC<{
- last_name: + last_name: {record?.shipping?.last_name || record?.billing?.last_name || @@ -848,7 +848,7 @@ const Detail: React.FC<{
- country: + country: {record?.shipping?.country || record?.billing?.country || @@ -856,19 +856,19 @@ const Detail: React.FC<{
- state: + state: {record?.shipping?.state || record?.billing?.state || '-'}
- city: + city: {record?.shipping?.city || record?.billing?.city || '-'}
- postcode: + postcode: {record?.shipping?.postcode || record?.billing?.postcode || @@ -876,13 +876,13 @@ const Detail: React.FC<{
- phone: + phone: {record?.shipping?.phone || record?.billing?.phone || '-'}
- address_1: + address_1: {record?.shipping?.address_1 || record?.billing?.address_1 || @@ -902,7 +902,7 @@ const Detail: React.FC<{
    {record?.items?.map((item: any) => (
  • - {item.name}:{item.quantity} + {item.name}:{item.quantity}
  • ))}
@@ -926,7 +926,7 @@ const Detail: React.FC<{
    {record?.sales?.map((item: any) => (
  • - {item.name}:{item.quantity} + {item.name}:{item.quantity}
  • ))}
@@ -1039,7 +1039,7 @@ const Detail: React.FC<{ : [] } > -
订单号: {v?.orderIds?.join(',')}
+
订单号: {v?.orderIds?.join(',')}
{v?.items?.map((item) => (
{item.name}: {item.quantity} diff --git a/src/pages/Statistics/Customer/index.tsx b/src/pages/Statistics/Customer/index.tsx index c47680b..f08e024 100644 --- a/src/pages/Statistics/Customer/index.tsx +++ b/src/pages/Statistics/Customer/index.tsx @@ -192,7 +192,7 @@ const ListPage: React.FC = () => {
{record?.first_hot_purchase?.map((v) => (
- 产品名称:{v.name} 用户数:{v.user_count} + 产品名称:{v.name} 用户数:{v.user_count}
))}
@@ -206,7 +206,7 @@ const ListPage: React.FC = () => {
{record?.second_hot_purchase?.map((v) => (
- 产品名称:{v.name} 用户数:{v.user_count} + 产品名称:{v.name} 用户数:{v.user_count}
))}
@@ -220,7 +220,7 @@ const ListPage: React.FC = () => {
{record?.third_hot_purchase?.map((v) => (
- 产品名称:{v.name} 用户数:{v.user_count} + 产品名称:{v.name} 用户数:{v.user_count}
))}
diff --git a/src/pages/Statistics/Sales/index.tsx b/src/pages/Statistics/Sales/index.tsx index 5ca0853..e39a415 100644 --- a/src/pages/Statistics/Sales/index.tsx +++ b/src/pages/Statistics/Sales/index.tsx @@ -157,7 +157,7 @@ const ListPage: React.FC = () => { }} columns={columns} dateFormatter="number" - footer={() => `总计: ${total}`} + footer={() => `总计: ${total}`} toolBarRender={() => [ } /> {({ items }) => { - return '数量:' + (items?.reduce?.((acc, cur) => acc + cur.quantity, 0)||0); + return '数量:' + (items?.reduce?.((acc, cur) => acc + cur.quantity, 0)||0); }} {({ items }) => { - return '数量:' + items?.reduce?.((acc, cur) => acc + cur.quantity, 0); + return '数量:' + items?.reduce?.((acc, cur) => acc + cur.quantity, 0); }} = { @@ -29,10 +29,10 @@ const SUBSCRIPTION_STATUS_ENUM: Record = { }; /** - * 订阅列表页:展示、筛选、触发订阅同步 + * 订阅列表页:展示、筛选、触发订阅同步 */ const ListPage: React.FC = () => { - // 表格操作引用:用于在同步后触发表格刷新 + // 表格操作引用:用于在同步后触发表格刷新 const actionRef = useRef(); const { message } = App.useApp(); @@ -41,7 +41,7 @@ const ListPage: React.FC = () => { const [drawerTitle, setDrawerTitle] = useState('详情'); const [relatedOrders, setRelatedOrders] = useState([]); - // 表格列定义(尽量与项目风格保持一致) + // 表格列定义(尽量与项目风格保持一致) const columns: ProColumns[] = [ { title: '站点', @@ -144,14 +144,14 @@ const ListPage: React.FC = () => { message.warning('该订阅缺少父订单号'); return; } - // 通过父订单号查询关联订单(模糊匹配) + // 通过父订单号查询关联订单(模糊匹配) 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 || '获取失败'); - // 仅保留与父订单号完全一致的订单(避免模糊匹配误入) + // 仅保留与父订单号完全一致的订单(避免模糊匹配误入) const candidates: any[] = (Array.isArray(data) ? data : []).filter( (c: any) => String(c?.externalOrderId) === parentNumber ); @@ -213,10 +213,10 @@ const ListPage: React.FC = () => { }; }} columns={columns} - // 工具栏:订阅同步入口 + // 工具栏:订阅同步入口 toolBarRender={() => []} /> - {/* 关联订单抽屉:展示订单号、关系、时间、状态与金额 */} + {/* 关联订单抽屉:展示订单号、关系、时间、状态与金额 */} {
{item?.date_created ? dayjs(item.date_created).format('YYYY-MM-DD HH:mm') : '-'} @@ -249,7 +249,7 @@ const ListPage: React.FC = () => { }; /** - * 同步订阅抽屉表单:选择站点后触发同步 + * 同步订阅抽屉表单:选择站点后触发同步 */ const SyncForm: React.FC<{ tableRef: React.MutableRefObject; @@ -267,7 +267,7 @@ const SyncForm: React.FC<{ autoFocusFirstInput drawerProps={{ destroyOnHidden: true }} /** - * 提交逻辑: + * 提交逻辑: * 1. 必填校验由 ProForm + rules 保证 * 2. 调用同步接口,失败时友好提示 * 3. 成功后刷新列表 diff --git a/src/pages/Subscription/Orders/OrderDetailDrawer.tsx b/src/pages/Subscription/Orders/OrderDetailDrawer.tsx index 8f0c0ad..51f3f0d 100644 --- a/src/pages/Subscription/Orders/OrderDetailDrawer.tsx +++ b/src/pages/Subscription/Orders/OrderDetailDrawer.tsx @@ -13,7 +13,7 @@ import { import { ActionType, ProDescriptions } from '@ant-design/pro-components'; import { CopyOutlined, DeleteFilled } from '@ant-design/icons'; -// 服务器 API 引用(保持与原 index.tsx 一致) +// 服务器 API 引用(保持与原 index.tsx 一致) import { ordercontrollerChangestatus, ordercontrollerGetorderdetail, @@ -27,21 +27,21 @@ import { formatShipmentState, formatSource } from '@/utils/format'; import RelatedOrders from './RelatedOrders'; import { ORDER_STATUS_ENUM } from '@/constants'; -// 中文注释:为保持原文件结构简单,此处从 index.tsx 引入的子组件仍由原文件导出或保持原状 +// 中文注释:为保持原文件结构简单,此处从 index.tsx 引入的子组件仍由原文件导出或保持原状 // 若后续需要彻底解耦,可将 OrderNote / Shipping / SalesChange 也独立到文件 // 当前按你的要求仅抽离详情 Drawer type OrderRecord = API.Order; interface OrderDetailDrawerProps { - tableRef: React.MutableRefObject; // 中文注释:列表刷新引用 - orderId: number; // 中文注释:订单主键 ID - record: OrderRecord; // 中文注释:订单行记录 - open: boolean; // 中文注释:是否打开抽屉 - onClose: () => void; // 中文注释:关闭抽屉回调 - setActiveLine: (id: number) => void; // 中文注释:高亮当前行 - OrderNoteComponent: React.ComponentType; // 中文注释:备注组件(从外部注入) - SalesChangeComponent: React.ComponentType; // 中文注释:换货组件(从外部注入) + 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 = ({ @@ -57,7 +57,7 @@ const OrderDetailDrawer: React.FC = ({ const { message } = App.useApp(); const ref = useRef(); - // 中文注释:加载详情数据(与 index.tsx 中完全保持一致) + // 中文注释:加载详情数据(与 index.tsx 中完全保持一致) const initRequest = async () => { const { data, success }: API.OrderDetailRes = await ordercontrollerGetorderdetail({ orderId }); if (!success || !data) return { data: {} } as any; @@ -84,7 +84,7 @@ const OrderDetailDrawer: React.FC = ({ size="large" onClose={onClose} footer={[ - // 中文注释:备注组件(外部传入以避免循环依赖) + // 中文注释:备注组件(外部传入以避免循环依赖) , ...(['after_sale_pending', 'pending_reshipment'].includes( record.orderStatus, @@ -241,21 +241,21 @@ const OrderDetailDrawer: React.FC = ({ (
-
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 || '-'}
+
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 || '-'}
)} /> (
    {(r?.items || []).map((item: any) => ( -
  • {item.name}:{item.quantity}
  • +
  • {item.name}:{item.quantity}
  • ))}
)} /> @@ -265,7 +265,7 @@ const OrderDetailDrawer: React.FC = ({ (
    {(r?.sales || []).map((item: any) => ( -
  • {item.name}:{item.quantity}
  • +
  • {item.name}:{item.quantity}
  • ))}
)} /> @@ -310,7 +310,7 @@ const OrderDetailDrawer: React.FC = ({ ] : [] } > -
订单号: {Array.isArray(v?.orderIds) ? v.orderIds.join(',') : '-'}
+
订单号: {Array.isArray(v?.orderIds) ? v.orderIds.join(',') : '-'}
{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 ed94eb7..57470ab 100644 --- a/src/pages/Subscription/Orders/RelatedOrders.tsx +++ b/src/pages/Subscription/Orders/RelatedOrders.tsx @@ -7,8 +7,8 @@ dayjs.extend(relativeTime); /** * RelatedOrders 表格组件 - * 用于展示订单详情中的关联数据(订阅/订单),按统一表格样式渲染 - * 中文注释:本组件将订阅与订单统一归一化为五列展示,便于快速浏览 + * 用于展示订单详情中的关联数据(订阅/订单),按统一表格样式渲染 + * 中文注释:本组件将订阅与订单统一归一化为五列展示,便于快速浏览 */ const RelatedOrders: React.FC<{ data?: any[] }> = ({ data = [] }) => { const rows = (Array.isArray(data) ? data : []).map((it: any) => { @@ -29,7 +29,7 @@ const RelatedOrders: React.FC<{ data?: any[] }> = ({ data = [] }) => { return (
- {/* 表头(英文文案,符合国际化默认英文的要求) */} + {/* 表头(英文文案,符合国际化默认英文的要求) */}
订单编号
关系
diff --git a/src/pages/Subscription/Orders/index.tsx b/src/pages/Subscription/Orders/index.tsx index d37e068..bc4a9bb 100644 --- a/src/pages/Subscription/Orders/index.tsx +++ b/src/pages/Subscription/Orders/index.tsx @@ -22,7 +22,7 @@ interface OrderItemRow { const OrdersPage: React.FC = () => { const actionRef = useRef(); const { message } = App.useApp(); - // 抽屉状态:改为复用订单详情抽屉组件 + // 抽屉状态:改为复用订单详情抽屉组件 const [detailOpen, setDetailOpen] = useState(false); const [detailRecord, setDetailRecord] = useState(null); const [detailOrderId, setDetailOrderId] = useState(null); @@ -149,7 +149,7 @@ const OrdersPage: React.FC = () => { }} toolBarRender={false} /> - {/* 订阅关联:直接使用订单详情抽屉组件 */} + {/* 订阅关联:直接使用订单详情抽屉组件 */} {detailRecord && detailOrderId !== null && (