From 661e77416a96c26a82bd31d1974a315a9008e928 Mon Sep 17 00:00:00 2001 From: duxingchen Date: Thu, 6 Aug 2026 13:09:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=89=E9=9B=B7=E4=BF=AE=E5=A4=8D:=20canReca?= =?UTF-8?q?ll=E7=88=B6=E8=8A=82=E7=82=B9=E6=A0=A1=E9=AA=8C+task=5Ftype?= =?UTF-8?q?=E5=88=A4=E5=AE=9A=E4=B8=BB=E5=B9=B2=E6=8E=92=E5=BA=8F/?= =?UTF-8?q?=E6=A0=87=E7=AD=BE+=E7=A1=AE=E8=AE=A4=E6=97=A0db.delete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/scan/components/WorkspaceArea.vue | 10 ++++++---- track-uniapp/src/pages/tasks/index.vue | 6 +++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/track-uniapp/src/pages/scan/components/WorkspaceArea.vue b/track-uniapp/src/pages/scan/components/WorkspaceArea.vue index 0a75441..58c328e 100644 --- a/track-uniapp/src/pages/scan/components/WorkspaceArea.vue +++ b/track-uniapp/src/pages/scan/components/WorkspaceArea.vue @@ -133,8 +133,8 @@ export default { }; if (this.product) walk(this.product.task_tree); result.sort((a, b) => { - const aIsMain = !a.parent_task_id; - const bIsMain = !b.parent_task_id; + const aIsMain = !a.parent_task_id || a.task_type !== 'SPAWN'; + const bIsMain = !b.parent_task_id || b.task_type !== 'SPAWN'; if (aIsMain && !bIsMain) return -1; if (!aIsMain && bIsMain) return 1; return new Date(a.created_at) - new Date(b.created_at); @@ -146,8 +146,10 @@ export default { canRecall() { if (!this.lockedTask || this.lockedTask.status !== 'PENDING') return false; if (this.isAssignee) return false; - // 非接收人即可撤回(后端会校验权限);parent_task_id 为空时也放开(旧数据兼容) - return true; + if (!this.lockedTask.parent_task_id) return false; + const parent = this.taskMap[this.lockedTask.parent_task_id]; + if (!parent) return false; + return parent.assignee_id == this.currentUserId || parent.assignee_id == this.currentUsername; }, branchLabelsMap() { const map = {}; diff --git a/track-uniapp/src/pages/tasks/index.vue b/track-uniapp/src/pages/tasks/index.vue index c809d21..96bba79 100644 --- a/track-uniapp/src/pages/tasks/index.vue +++ b/track-uniapp/src/pages/tasks/index.vue @@ -21,7 +21,7 @@ - {{ task.parent_task_id ? '协助分支' : '主分支' }} + {{ task.task_type === 'SPAWN' ? '协助' : '主干' }} {{ task.task_name }} {{ statusLabel(task.status) }} @@ -101,8 +101,8 @@ export default { const username = this.currentUser?.username || ""; const res = await get("/tasks/", { assignee_id: username, limit: 100 }); this.tasks = (res.tasks || []).sort((a, b) => { - const aIsMain = !a.parent_task_id; - const bIsMain = !b.parent_task_id; + const aIsMain = !a.parent_task_id || a.task_type !== 'SPAWN'; + const bIsMain = !b.parent_task_id || b.task_type !== 'SPAWN'; if (aIsMain && !bIsMain) return -1; if (!aIsMain && bIsMain) return 1; return new Date(a.created_at) - new Date(b.created_at);