From ffab378700fca7739b61f32b83045e511232b0e5 Mon Sep 17 00:00:00 2001 From: duxingchen Date: Sun, 9 Aug 2026 18:37:02 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=8D=95=E4=B8=80=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E2=80=94Tab=E8=BF=87=E6=BB=A4+=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E5=88=97=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8macro=5Fs?= =?UTF-8?q?tatus||status,=E5=88=A0=E9=99=A4calcProductStatus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/admin/AdminTasksPage.tsx | 34 +++++---------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/frontend/src/pages/admin/AdminTasksPage.tsx b/frontend/src/pages/admin/AdminTasksPage.tsx index 08373f1..ce8ee8e 100644 --- a/frontend/src/pages/admin/AdminTasksPage.tsx +++ b/frontend/src/pages/admin/AdminTasksPage.tsx @@ -81,28 +81,13 @@ export default function AdminTasksPage() { loadProducts(keyword); } - /** 🔧 产品综合状态:优先后端预计算的 macro_status,兜底本地 taskTree */ - function calcProductStatus(p: ProductResponse): string { - // 后端已批量预计算 macro_status(WIP/PENDING/COMPLETED) - if (p.macro_status) return p.macro_status; - // 兜底:展开过的流转树 - const tree = taskTrees[p.serial_number]; - if (tree?.task_tree?.length) { - if (tree.task_tree.some(t => t.status === "WIP")) return "WIP"; - if (tree.task_tree.every(t => t.status === "COMPLETED" || t.status === "ARCHIVED")) return "COMPLETED"; - return tree.task_tree[0].status; - } - return p.status; - } - - // ---- 按订单分组 + 本地状态过滤 ---- + // ---- 按订单分组 + 本地状态过滤(单一数据源: macro_status || status) ---- const orderGroups = useMemo(() => { const map = new Map(); for (const p of products) { - // 🔧 本地过滤:Tab切换时不再请求后端 if (statusFilter) { - const s = calcProductStatus(p).toUpperCase(); - if (s !== statusFilter) continue; + const currentStatus = (p.macro_status || p.status).toUpperCase(); + if (currentStatus !== statusFilter) continue; } const key = p.order_no || "未绑定订单"; if (!map.has(key)) map.set(key, []); @@ -117,8 +102,7 @@ export default function AdminTasksPage() { (p) => p.current_location_id === "virtual_warehouse" ), })); - }, [products, statusFilter, taskTrees]); - }, [products]); + }, [products, statusFilter]); // ---- 手风琴切换 ---- function toggleOrder(orderNo: string) { @@ -371,13 +355,9 @@ export default function AdminTasksPage() { const isTreeLoading = treeLoading[p.serial_number]; const tree = taskTrees[p.serial_number]; // 综合状态:优先流转树状态,兜底产品状态 - const treeStatus = tree - ? (tree.task_tree?.some(t => t.status === "WIP") ? "WIP" - : tree.task_tree?.every(t => t.status === "COMPLETED" || t.status === "ARCHIVED") ? "COMPLETED" - : tree.task_tree?.[0]?.status) - : null; - const displayStatus = treeStatus || p.status; - const statusCfg = getStatusConfig(displayStatus); + // 单一数据源:后端预计算 macro_status,兜底产品 status + const currentStatus = p.macro_status || p.status; + const statusCfg = getStatusConfig(currentStatus); return (