From bcf1038f8a915e478b2c230540598bee93f9a80c Mon Sep 17 00:00:00 2001 From: duxingchen Date: Thu, 6 Aug 2026 10:28:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=20=E5=88=A0=E9=99=A42D?= =?UTF-8?q?=E8=BF=9E=E7=BA=BF+spawn=E7=A1=AE=E8=AE=A4parent=5Ftask=5Fid?= =?UTF-8?q?=E5=B7=B2=E6=AD=A3=E7=A1=AE+WBS=E7=AE=97=E6=B3=95=E9=87=8D?= =?UTF-8?q?=E5=86=99(=E9=80=92=E5=BD=92=E5=89=8D=E7=BC=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/scan/components/TreeCanvas.vue | 17 ----------------- .../src/pages/scan/components/WorkspaceArea.vue | 15 +++++++++------ 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/track-uniapp/src/pages/scan/components/TreeCanvas.vue b/track-uniapp/src/pages/scan/components/TreeCanvas.vue index c48dd3c..bd0df8e 100644 --- a/track-uniapp/src/pages/scan/components/TreeCanvas.vue +++ b/track-uniapp/src/pages/scan/components/TreeCanvas.vue @@ -17,9 +17,6 @@ :style="{ width: canvasWidth + 'px', height: canvasHeight + 'px' }" > - - - n.id === t.parent_task_id); - if (parent) { - nodes._lines.push({ - key: parent.id + '-' + t.id, - x1: parent.x + CARD_W / 2, y1: parent.y + CARD_H, - x2: node.x + CARD_W / 2, y2: node.y, - }); - } - } }); // 递归子任务 @@ -122,7 +106,6 @@ export default { if (this.product) walk(this.product.task_tree); return map; }, - treeLines() { return this.treeNodes._lines || []; }, canvasWidth() { if (!this.treeNodes.length) return 400; return Math.max(800, Math.max(...this.treeNodes.map(n => n.x)) + 300); }, canvasHeight() { if (!this.treeNodes.length) return 400; return Math.max(800, Math.max(...this.treeNodes.map(n => n.y)) + 300); } }, diff --git a/track-uniapp/src/pages/scan/components/WorkspaceArea.vue b/track-uniapp/src/pages/scan/components/WorkspaceArea.vue index 57c7c28..0da5ce1 100644 --- a/track-uniapp/src/pages/scan/components/WorkspaceArea.vue +++ b/track-uniapp/src/pages/scan/components/WorkspaceArea.vue @@ -130,17 +130,20 @@ export default { lockedTask() { return this.focusTasks.find(t => t.id === this.lockedTaskId) || null; }, branchLabelsMap() { const map = {}; - const walk = (tasks, prefix, idx) => { + if (!this.product || !this.product.task_tree) return map; + const traverse = (tasks, prefix) => { if (!tasks) return; tasks.forEach((t, i) => { - const label = prefix === '' ? '主分支' : `${prefix}${i + 1}`; - map[t.id] = label; - if (t.child_tasks && t.child_tasks.length) { - walk(t.child_tasks, prefix === '' ? '' : `${label}.`, i); + if (prefix === '') { + map[t.id] = '主分支'; + } else { + map[t.id] = `分支 ${prefix}${i + 1}`; } + const nextPrefix = prefix === '' ? `${i + 1}.` : `${prefix}${i + 1}.`; + traverse(t.child_tasks, nextPrefix); }); }; - if (this.product) walk(this.product.task_tree, '', 0); + traverse(this.product.task_tree, ''); return map; }, },