三雷修复: canRecall父节点校验+task_type判定主干排序/标签+确认无db.delete

This commit is contained in:
2026-08-06 13:09:10 +08:00
parent 0d323e8181
commit 661e77416a
2 changed files with 9 additions and 7 deletions

View File

@ -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 = {};

View File

@ -21,7 +21,7 @@
<view v-for="task in filtered" :key="task.id" class="card" @tap="goDetail(task)">
<view class="card-row">
<view style="display:flex;align-items:center;gap:6px;min-width:0;">
<text :class="['tag-badge', task.parent_task_id ? 'tag-sub' : 'tag-main']">{{ task.parent_task_id ? '协助分支' : '主分支' }}</text>
<text :class="['tag-badge', task.task_type === 'SPAWN' ? 'tag-sub' : 'tag-main']">{{ task.task_type === 'SPAWN' ? '协助' : '主' }}</text>
<text class="card-name">{{ task.task_name }}</text>
</view>
<text :class="['card-status', statusColor(task.status)]">{{ statusLabel(task.status) }}</text>
@ -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);