From 0f2df8105d8390a3d9dd2876026836a82078f84b Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 12 Jan 2026 18:24:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8D=95?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E8=B4=9F=E8=B4=A3=E4=BA=BA=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E7=9C=8B=E5=88=B0=E9=83=A8=E9=97=A8=E6=88=90=E5=91=98=E6=89=80?= =?UTF-8?q?=E6=9C=89=E8=BF=9B=E8=A1=8C=E4=B8=AD=E4=BB=BB=E5=8A=A1=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/TaskHall.vue | 90 +++++++++++++++++++++++---------- 1 file changed, 62 insertions(+), 28 deletions(-) diff --git a/frontend/src/views/TaskHall.vue b/frontend/src/views/TaskHall.vue index a4451b6..6602fd1 100644 --- a/frontend/src/views/TaskHall.vue +++ b/frontend/src/views/TaskHall.vue @@ -4054,37 +4054,71 @@ const loadInProgressTasks = async () => { let totalCount = 0 // 根据部门类型决定加载哪些任务 - // 优先判断是否是部门负责人切换视角 - if (isDeptLeader && currentDeptView.value !== undefined) { - // 部门负责人切换到其他部门视角 - console.log('部门负责人视角切换,部门ID:', currentDeptView.value, '部门类型:', currentDeptType) - - if (currentDeptType === 'receiving') { - // 接单部门视角:看该部门成员的子任务 - const itemResponse = await taskApi.getInProgressTaskItems(params) - if (itemResponse.data && itemResponse.data.records) { - const items = itemResponse.data.records.map((item: any) => mapTaskItemToTask(item)) - allTasks = [...allTasks, ...items] - totalCount += itemResponse.data.total || 0 + // 优先判断是否是部门负责人(包括切换视角和未切换视角的情况) + if (isDeptLeader) { + if (currentDeptView.value !== undefined) { + // 部门负责人切换到其他部门视角 + console.log('部门负责人视角切换,部门ID:', currentDeptView.value, '部门类型:', currentDeptType) + + if (currentDeptType === 'receiving') { + // 接单部门视角:看该部门成员的子任务 + const itemResponse = await taskApi.getInProgressTaskItems(params) + if (itemResponse.data && itemResponse.data.records) { + const items = itemResponse.data.records.map((item: any) => mapTaskItemToTask(item)) + allTasks = [...allTasks, ...items] + totalCount += itemResponse.data.total || 0 + } + } else { + // 需求部门视角:看该部门发起的任务(通过 deptId 参数) + const taskResponse = await taskApi.getTasks({ + ...params, + publisherDeptId: currentDeptView.value // 按发布者部门过滤 + }) + if (taskResponse.data && taskResponse.data.records) { + const tasksWithInProgress = taskResponse.data.records.filter((task: any) => { + if (task.isPipeline === 1) { + return (task.subTaskInProgress || 0) > 0 || task.status === 'in_progress' + } + return task.status === 'in_progress' + }) + allTasks = tasksWithInProgress.map((task: any) => ({ + ...task, + isSubTask: false + })) + totalCount = allTasks.length + } } } else { - // 需求部门视角:看该部门发起的任务(通过 deptId 参数) - const taskResponse = await taskApi.getTasks({ - ...params, - publisherDeptId: currentDeptView.value // 按发布者部门过滤 - }) - if (taskResponse.data && taskResponse.data.records) { - const tasksWithInProgress = taskResponse.data.records.filter((task: any) => { - if (task.isPipeline === 1) { - return (task.subTaskInProgress || 0) > 0 || task.status === 'in_progress' - } - return task.status === 'in_progress' + // 部门负责人未切换视角:根据用户自己的部门类型显示 + console.log('部门负责人未切换视角,用户部门类型:', userDeptType.value) + + if (userDeptType.value === 'receiving') { + // 接单部门负责人:看自己部门所有成员的子任务(不传deptId,后端会自动获取所有负责的部门) + const itemResponse = await taskApi.getInProgressTaskItems(params) + if (itemResponse.data && itemResponse.data.records) { + const items = itemResponse.data.records.map((item: any) => mapTaskItemToTask(item)) + allTasks = [...allTasks, ...items] + totalCount += itemResponse.data.total || 0 + } + } else { + // 需求部门负责人:看自己部门发起的任务 + const taskResponse = await taskApi.getTasks({ + ...params, + publisherDeptId: userDeptId.value // 按发布者部门过滤 }) - allTasks = tasksWithInProgress.map((task: any) => ({ - ...task, - isSubTask: false - })) - totalCount = allTasks.length + if (taskResponse.data && taskResponse.data.records) { + const tasksWithInProgress = taskResponse.data.records.filter((task: any) => { + if (task.isPipeline === 1) { + return (task.subTaskInProgress || 0) > 0 || task.status === 'in_progress' + } + return task.status === 'in_progress' + }) + allTasks = tasksWithInProgress.map((task: any) => ({ + ...task, + isSubTask: false + })) + totalCount = allTasks.length + } } } } else if (isAdmin) {