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 (