From 130e0afcb291dee54228162cddcb48ceb01b81a0 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 16 Jan 2026 16:00:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=9C=80=E6=B1=82?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E8=BF=9B=E8=A1=8C=E4=B8=AD=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E4=B8=8E=E9=A1=B6=E9=83=A8=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E4=B8=8D=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 后端新增 excludeStatuses 参数,支持排除指定状态查询 2. 前端需求部门负责人视角使用 excludeStatuses 排除 draft/completed/cancelled 3. 使用后端返回的 total 作为分页总数,确保分页正确 --- .../designhub/controller/TaskController.java | 16 +++++++++++++--- .../java/com/designhub/service/TaskService.java | 14 ++++++++++++++ frontend/src/views/TaskHall.vue | 17 +++++++---------- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/backend/src/main/java/com/designhub/controller/TaskController.java b/backend/src/main/java/com/designhub/controller/TaskController.java index a9e5850..46f58c9 100644 --- a/backend/src/main/java/com/designhub/controller/TaskController.java +++ b/backend/src/main/java/com/designhub/controller/TaskController.java @@ -65,11 +65,12 @@ public class TaskController { @Parameter(description = "发布者部门ID") @RequestParam(required = false) Long publisherDeptId, @Parameter(description = "发布者部门ID列表(逗号分隔)") @RequestParam(required = false) String publisherDeptIds, @Parameter(description = "接收部门ID") @RequestParam(required = false) Long receiverDeptId, + @Parameter(description = "排除的状态列表(逗号分隔,如 draft,completed,cancelled)") @RequestParam(required = false) String excludeStatuses, @Parameter(description = "页码") @RequestParam(defaultValue = "1") Integer page, @Parameter(description = "每页数量") @RequestParam(defaultValue = "20") Integer pageSize) { - log.info("查询任务列表: status={}, taskTypeId={}, publisherDeptId={}, publisherDeptIds={}, receiverDeptId={}, page={}, pageSize={}", - status, taskTypeId, publisherDeptId, publisherDeptIds, receiverDeptId, page, pageSize); + log.info("查询任务列表: status={}, taskTypeId={}, publisherDeptId={}, publisherDeptIds={}, receiverDeptId={}, excludeStatuses={}, page={}, pageSize={}", + status, taskTypeId, publisherDeptId, publisherDeptIds, receiverDeptId, excludeStatuses, page, pageSize); // 处理多个发布者部门ID List publisherDeptIdList = null; @@ -81,7 +82,16 @@ public class TaskController { .collect(Collectors.toList()); } - IPage taskPage = taskService.getTaskList(page, pageSize, status, taskTypeId, publisherDeptId, publisherDeptIdList, receiverDeptId); + // 处理排除状态列表 + List excludeStatusList = null; + if (excludeStatuses != null && !excludeStatuses.isEmpty()) { + excludeStatusList = Arrays.stream(excludeStatuses.split(",")) + .map(String::trim) + .filter(s -> !s.isEmpty()) + .collect(Collectors.toList()); + } + + IPage taskPage = taskService.getTaskList(page, pageSize, status, taskTypeId, publisherDeptId, publisherDeptIdList, receiverDeptId, excludeStatusList); return Result.success(taskPage); } diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 4367056..90cc828 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -707,6 +707,14 @@ public class TaskService { * 获取任务列表 */ public IPage getTaskList(Integer page, Integer pageSize, String status, Long taskTypeId, Long publisherDeptId, List publisherDeptIds, Long receiverDeptId) { + return getTaskList(page, pageSize, status, taskTypeId, publisherDeptId, publisherDeptIds, receiverDeptId, null); + } + + /** + * 获取任务列表(支持排除指定状态) + * @param excludeStatuses 要排除的状态列表(如 draft,completed,cancelled) + */ + public IPage getTaskList(Integer page, Integer pageSize, String status, Long taskTypeId, Long publisherDeptId, List publisherDeptIds, Long receiverDeptId, List excludeStatuses) { Page pageParam = new Page<>(page, pageSize); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -715,6 +723,12 @@ public class TaskService { wrapper.eq(Task::getStatus, status); } + // 🔥 排除指定状态(需求部门负责人查看"处理中"任务时使用) + if (excludeStatuses != null && !excludeStatuses.isEmpty()) { + wrapper.notIn(Task::getStatus, excludeStatuses); + log.info("排除状态: excludeStatuses={}", excludeStatuses); + } + // 根据任务类型筛选 if (taskTypeId != null) { wrapper.eq(Task::getTaskTypeId, taskTypeId); diff --git a/frontend/src/views/TaskHall.vue b/frontend/src/views/TaskHall.vue index 609a40c..24a0b45 100644 --- a/frontend/src/views/TaskHall.vue +++ b/frontend/src/views/TaskHall.vue @@ -4521,24 +4521,21 @@ const loadInProgressTasks = async () => { console.log('需求部门负责人查询的部门ID列表:', demandDeptIds) - // 需求部门负责人:不传递status参数,查询所有非草稿的任务 + // 需求部门负责人:查询所有处理中的任务(排除 draft、completed、cancelled) const { status: _, ...paramsWithoutStatus } = params const taskResponse = await taskApi.getTasks({ ...paramsWithoutStatus, - publisherDeptIds: demandDeptIds.join(',') // 按多个发布者部门过滤 + publisherDeptIds: demandDeptIds.join(','), // 按多个发布者部门过滤 + excludeStatuses: 'draft,completed,cancelled' // 🔥 后端排除指定状态 }) if (taskResponse.data && taskResponse.data.records) { - // 需求部门负责人:显示所有已发布且未完成的任务(pending、in_progress、review等) - const tasksWithInProgress = taskResponse.data.records.filter((task: any) => { - // 排除草稿和已完成的任务 - const excludeStatuses = ['draft', 'completed', 'cancelled'] - return !excludeStatuses.includes(task.status) - }) - allTasks = tasksWithInProgress.map((task: any) => ({ + // 需求部门负责人:显示所有处理中的任务(后端已过滤) + allTasks = taskResponse.data.records.map((task: any) => ({ ...task, isSubTask: false })) - totalCount = allTasks.length + // 🔥 使用后端返回的总数,确保分页正确 + totalCount = taskResponse.data.total || allTasks.length } } }