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);