From aad26b3d9e2d98e1ce08ec6cfcdc055cd8fc398c Mon Sep 17 00:00:00 2001 From: duxingchen Date: Thu, 6 Aug 2026 11:50:10 +0800 Subject: [PATCH] =?UTF-8?q?2D=E5=B8=83=E5=B1=80=E5=9B=9E=E9=80=80=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=88=A4=E5=AE=9A:=20=E7=88=B6WIP=E2=86=92=E5=B9=B6?= =?UTF-8?q?=E8=A1=8C=E5=90=8CY=20/=20=E7=88=B6COMPLETED=E2=86=92=E4=B8=B2?= =?UTF-8?q?=E8=A1=8C=E6=8D=A2=E8=A1=8C(=E5=90=8E=E7=AB=AF=E5=B7=B2?= =?UTF-8?q?=E9=99=90=E5=88=B6COMPLETED=E5=90=8E=E4=B8=8D=E5=8F=AFspawn)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- track-uniapp/src/pages/scan/components/TreeCanvas.vue | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/track-uniapp/src/pages/scan/components/TreeCanvas.vue b/track-uniapp/src/pages/scan/components/TreeCanvas.vue index e83b9bd..caedfd5 100644 --- a/track-uniapp/src/pages/scan/components/TreeCanvas.vue +++ b/track-uniapp/src/pages/scan/components/TreeCanvas.vue @@ -66,12 +66,10 @@ export default { const layout = (tasks, parentRowIdx, parentX) => { if (!tasks || !tasks.length) return; tasks.forEach(t => { - // 时间戳判定:子任务创建于父任务完成之后 → 串行(下一行);否则 → 并行(同Y偏右) - const parentNode = this.taskDataMap[t.parent_task_id]; - const isSerial = !t.parent_task_id || ( - parentNode && parentNode.completed_at && - new Date(t.created_at) > new Date(parentNode.completed_at) - ); + // 工业拓扑:父WIP→并行(同Y);父COMPLETED→串行(换行) + // 后端保证 COMPLETED 后不可 spawn,故 COMPLETED 的子任务必为转交产物 + const parent = this.taskDataMap[t.parent_task_id]; + const isSerial = !t.parent_task_id || (parent && parent.status === 'COMPLETED'); const rowIdx = isSerial ? (parentRowIdx >= 0 ? parentRowIdx + 1 : rows.length) : parentRowIdx; while (rows.length <= rowIdx) rows.push({ y: 0, tasks: [] });