From 87296af1398bcc511baa4607d939b8f440bcccef Mon Sep 17 00:00:00 2001 From: duxingchen Date: Mon, 10 Aug 2026 13:21:30 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=B0=B4=E5=B9=B3=E5=AF=B9?= =?UTF-8?q?=E7=A7=B0=E5=8F=8C=E7=BF=BC=E5=B8=83=E5=B1=80=E2=80=94=E5=B7=A6?= =?UTF-8?q?=E7=BF=BC(=E5=81=B6=E7=B4=A2=E5=BC=95)+=E4=B8=AD=E5=A4=AE?= =?UTF-8?q?=E4=B8=BB=E5=B9=B2+=E5=8F=B3=E7=BF=BC(=E5=A5=87=E7=B4=A2?= =?UTF-8?q?=E5=BC=95),=E5=AE=9E=E7=BA=BF/=E8=99=9A=E7=BA=BF=E5=8C=BA?= =?UTF-8?q?=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/TaskTree/TaskFlowView.tsx | 116 ++++++++++-------- 1 file changed, 68 insertions(+), 48 deletions(-) diff --git a/frontend/src/components/TaskTree/TaskFlowView.tsx b/frontend/src/components/TaskTree/TaskFlowView.tsx index 1ffcb00..d452241 100644 --- a/frontend/src/components/TaskTree/TaskFlowView.tsx +++ b/frontend/src/components/TaskTree/TaskFlowView.tsx @@ -121,41 +121,51 @@ export const TaskFlowView = memo(function TaskFlowView({ tasks, onAction, curren {/* ─── 焦点模式 ─── */} {!showFullMap && ( -
- {/* 顶部行:遗留分支标记 */} +
{legacySubs.length > 0 && ( -
-

⚠ 以下 {legacySubs.length} 个分支属于已完工的历史主线,仍在进行中

+
+

⚠ {legacySubs.length} 个遗留分支仍在进行中

)} - - {/* 中央:activeMain 纵向排列 */} -
- {activeMain.map(t => ( - - ))} - {activeMain.length === 0 &&

当前无活跃主线任务

} -
- - {/* 两侧:activeSubs + legacySubs 与中央同行 */} -
- {/* activeSubs(实线) */} - {activeSubs.map(t => ( -
-
-
- + {/* 每个活跃主线一行:左翼 + 中央 + 右翼 */} + {activeMain.map(mainTask => { + const allSubs = [...activeSubs, ...legacySubs]; + const leftSubs = allSubs.filter((_, i) => i % 2 === 0); + const rightSubs = allSubs.filter((_, i) => i % 2 === 1); + return ( +
+ {/* 左翼 */} +
+ {leftSubs.map(t => { + const isLegacy = legacySubs.includes(t); + return ( +
+ +
+
+ ); + })} +
+ {/* 中央主干 */} +
+ +
+ {/* 右翼 */} +
+ {rightSubs.map(t => { + const isLegacy = legacySubs.includes(t); + return ( +
+
+ +
+ ); + })} +
- ))} - {/* legacySubs(虚线+来源标注) */} - {legacySubs.map(t => ( -
-
-
- -
- ))} -
+ ); + })} + {activeMain.length === 0 &&

当前无活跃主线任务

}
)} @@ -164,40 +174,50 @@ export const TaskFlowView = memo(function TaskFlowView({ tasks, onAction, curren
{allMains.map(mainTask => { const children = Array.from(ALL_TASKS).filter(t => t.parent_task_id === mainTask.id); - const activeChildren = children.filter(c => active(c.status)); - const hasLegacyActive = activeChildren.some(c => !isMain(c) && !active(mainTask.status)); + const hasLegacyActive = children.some(c => !isMain(c) && !active(mainTask.status)); + const leftChildren = children.filter((_, i) => i % 2 === 0); + const rightChildren = children.filter((_, i) => i % 2 === 1); return (
- {/* 垂直轴线 */} -
+ {/* 垂直轴线贯穿中央 */} +
- {/* 主干卡片居中 */} -
-
+ {/* 水平一行:左翼 + 中央 + 右翼 */} +
+ {/* 左翼分支 */} +
+ {leftChildren.map(c => ( +
+ +
+
+ ))} +
+ {/* 中央主干 */} +
{active(mainTask.status) && (
)}
-
- - {/* 分支水平排列 */} - {children.length > 0 && ( -
- {children.map(c => ( -
-
+ {/* 右翼分支 */} +
+ {rightChildren.map(c => ( +
+
))}
- )} +
- {/* 区间连接线 */} + {/* 区间连接 ▼ */} {allMains.indexOf(mainTask) < allMains.length - 1 && (