From b6ef0751e09f10a3c69d095739b6d2fac35c5d54 Mon Sep 17 00:00:00 2001 From: duxingchen Date: Thu, 13 Aug 2026 11:17:13 +0800 Subject: [PATCH] =?UTF-8?q?fix(web):=20=E5=88=97=E8=A1=A8=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E5=8A=A8=E6=80=81=E6=98=BE=E7=A4=BA=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E4=BA=BA=E3=80=81=E6=B5=81=E8=BD=AC=E6=A0=91=E7=84=A6=E7=82=B9?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=BF=9D=E7=95=99=E6=B4=BB=E8=B7=83=E5=B9=B6?= =?UTF-8?q?=E5=8F=91=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/TaskTree/TaskFlowView.tsx | 11 ++++++++--- frontend/src/pages/admin/AdminTasksPage.tsx | 7 +++++-- frontend/src/types/admin.ts | 2 ++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/frontend/src/components/TaskTree/TaskFlowView.tsx b/frontend/src/components/TaskTree/TaskFlowView.tsx index e8791dd..332c59e 100644 --- a/frontend/src/components/TaskTree/TaskFlowView.tsx +++ b/frontend/src/components/TaskTree/TaskFlowView.tsx @@ -164,9 +164,14 @@ export const TaskFlowView = memo(function TaskFlowView({ tasks, onAction, curren // 🚀 焦点模式 vs 全景模式:共用同一套垂直时间线布局,仅数据过滤不同 const visibleMains = useMemo(() => { if (showFullMap) return allMains; - // 焦点模式:过滤掉已完成/已入库的历史主线,保留活跃主线 + 所有协助分支 - return allMains.filter(t => active(t.status)); - }, [allMains, showFullMap]); + // 焦点模式:保留自身活跃的主线,或含活跃分支(后代)的主线, + // 避免「主线已完成、但并发协助分支仍在进行中」时整条分支被错误隐藏 + const hasActiveDescendant = (node: TaskResponse): boolean => { + const kids = childMap[node.id] || []; + return kids.some(k => active(k.status) || hasActiveDescendant(k)); + }; + return allMains.filter(t => active(t.status) || hasActiveDescendant(t)); + }, [allMains, childMap, showFullMap]); return (
diff --git a/frontend/src/pages/admin/AdminTasksPage.tsx b/frontend/src/pages/admin/AdminTasksPage.tsx index 358d347..301dbe1 100644 --- a/frontend/src/pages/admin/AdminTasksPage.tsx +++ b/frontend/src/pages/admin/AdminTasksPage.tsx @@ -412,12 +412,15 @@ export default function AdminTasksPage() { {/* 最新动态 */}
{p.latest_record_time ? ( - +
{new Date(p.latest_record_time).toLocaleString("zh-CN", { month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit" })}
{p.latest_record_has_images && 📷} - {p.latest_record_content || (p.latest_record_has_images ? "图片记录" : "—")} + + {p.latest_record_assignee_name && {p.latest_record_assignee_name}: } + {p.latest_record_content || (p.latest_record_has_images ? "图片记录" : "—")} +
diff --git a/frontend/src/types/admin.ts b/frontend/src/types/admin.ts index fea9af6..d8a253f 100644 --- a/frontend/src/types/admin.ts +++ b/frontend/src/types/admin.ts @@ -21,6 +21,8 @@ export interface ProductResponse { latest_record_time: string | null; latest_record_content: string | null; latest_record_has_images: boolean; + latest_record_assignee_id: string | null; + latest_record_assignee_name: string | null; } /** MOM 物料选项 */