From c839bba7b6caac397470e8d9969fd1d383e0efa5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 20 Jan 2026 13:47:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=B8=80=E7=BA=A7=E9=9C=80?= =?UTF-8?q?=E6=B1=82=E5=AE=A1=E6=A0=B8=E6=97=B6=E9=80=89=E6=8B=A9=E5=AD=90?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E6=88=90=E5=91=98=E5=AE=8C=E5=96=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designhub/controller/UserController.java | 5 +++-- .../com/designhub/service/UserService.java | 18 +++++++++++++++++- frontend/src/api/user.ts | 4 +++- frontend/src/views/TaskHall.vue | 6 ++++-- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/com/designhub/controller/UserController.java b/backend/src/main/java/com/designhub/controller/UserController.java index 3076b5f..85369b4 100644 --- a/backend/src/main/java/com/designhub/controller/UserController.java +++ b/backend/src/main/java/com/designhub/controller/UserController.java @@ -34,9 +34,10 @@ public class UserController { @RequestParam(defaultValue = "10") int pageSize, @RequestParam(required = false) String keyword, @RequestParam(required = false) Long deptId, - @RequestParam(required = false) Integer status + @RequestParam(required = false) Integer status, + @RequestParam(required = false, defaultValue = "false") Boolean includeChildren ) { - return Result.success(userService.getUserList(pageNum, pageSize, keyword, deptId, status)); + return Result.success(userService.getUserList(pageNum, pageSize, keyword, deptId, status, includeChildren)); } @Operation(summary = "获取全部用户列表") diff --git a/backend/src/main/java/com/designhub/service/UserService.java b/backend/src/main/java/com/designhub/service/UserService.java index 94fdc8b..c194b36 100644 --- a/backend/src/main/java/com/designhub/service/UserService.java +++ b/backend/src/main/java/com/designhub/service/UserService.java @@ -75,6 +75,13 @@ public class UserService { * 分页查询用户列表 */ public Page getUserList(int pageNum, int pageSize, String keyword, Long deptId, Integer status) { + return getUserList(pageNum, pageSize, keyword, deptId, status, false); + } + + /** + * 分页查询用户列表(支持包含子部门) + */ + public Page getUserList(int pageNum, int pageSize, String keyword, Long deptId, Integer status, Boolean includeChildren) { Page page = new Page<>(pageNum, pageSize); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -90,7 +97,16 @@ public class UserService { ); } if (deptId != null) { - queryWrapper.eq(User::getDeptId, deptId); + if (includeChildren != null && includeChildren) { + // 包含子部门:获取当前部门及所有子部门的ID列表 + List deptIds = departmentService.getAllChildDeptIds(deptId); + deptIds.add(deptId); // 包含当前部门 + queryWrapper.in(User::getDeptId, deptIds); + log.info("查询用户列表,包含子部门: deptId={}, 所有部门IDs={}", deptId, deptIds); + } else { + // 只查询当前部门 + queryWrapper.eq(User::getDeptId, deptId); + } } if (status != null) { queryWrapper.eq(User::getStatus, status); diff --git a/frontend/src/api/user.ts b/frontend/src/api/user.ts index cf21a95..ff23873 100644 --- a/frontend/src/api/user.ts +++ b/frontend/src/api/user.ts @@ -32,12 +32,14 @@ export const getUserList = async ( pageSize: number = 10, keyword?: string, deptId?: number, - status?: number + status?: number, + includeChildren?: boolean ): Promise> => { const params: any = { pageNum, pageSize }; if (keyword) params.keyword = keyword; if (deptId) params.deptId = deptId; if (status !== undefined) params.status = status; + if (includeChildren !== undefined) params.includeChildren = includeChildren; const response = await request.get('/users', { params }); return response.data; diff --git a/frontend/src/views/TaskHall.vue b/frontend/src/views/TaskHall.vue index f839436..6acc76f 100644 --- a/frontend/src/views/TaskHall.vue +++ b/frontend/src/views/TaskHall.vue @@ -5434,14 +5434,16 @@ const handleApprovePrimaryTask = async (task: Task) => { return } - // 获取部门成员 - const response = await userApi.getUserList(1, 100, undefined, deptId, 1) + // 获取部门成员(包含所有子部门) + const response = await userApi.getUserList(1, 1000, undefined, deptId, 1, true) deptMembersList.value = (response.records || []).map(u => ({ id: u.id!, realName: u.realName || u.username, username: u.username })) + console.log(`获取到${deptMembersList.value.length}个部门成员(含子部门)`) + primaryApproveTaskData.value = task primaryApproveCompleterId.value = undefined primaryApproveComment.value = ''