# 后台管理系统 Bug 清单 > 更新时间:2026-01-05 > 涉及模块:角色管理、部门管理、管理员管理 > 状态:✅ 已全部修复 --- ## 一、后端 API 缺失问题 ### BUG-001:部门菜单获取接口缺失 ✅ 已修复 - **严重程度**:🔴 高 - **模块**:部门管理 - **问题描述**:前端调用 `GET /api/admin/departments/{id}/menus` 获取部门已分配的菜单,但后端没有实现该接口 - **修复内容**: 1. 在 `IDepartmentService` 添加 `GetMenuIdsAsync(long departmentId)` 方法 2. 在 `DepartmentService` 实现该方法 3. 在 `DepartmentController` 添加 `[HttpGet("{id:long}/menus")]` 接口 --- ## 二、前后端字段不匹配问题 ### BUG-002:管理员查询参数不匹配 ✅ 已修复 - **严重程度**:🔴 高 - **模块**:管理员管理 - **问题描述**:前端使用 `keyword` 字段进行模糊搜索,后端期望 `Username`、`RealName`、`Phone` 分开的字段 - **修复内容**: 1. 在 `AdminUserQueryRequest` 添加 `Keyword` 字段,移除 `Username`、`RealName`、`Phone` 2. 在 `AdminUserService.GetListAsync` 实现对用户名、姓名、手机号的模糊搜索 ### BUG-003:管理员列表角色字段格式不匹配 ✅ 已修复 - **严重程度**:🔴 高 - **模块**:管理员管理 - **问题描述**:前端期望 `roles` 是对象数组,后端返回的是两个独立数组 - **修复内容**: 1. 在 `AdminUserDto` 添加 `Roles` 属性(`List`) 2. 添加 `AdminUserRoleDto` 类(包含 Id 和 Name) 3. 在 `AdminUserService` 中填充 `Roles` 属性 ### BUG-004:管理员列表时间字段名不匹配 ✅ 已修复 - **严重程度**:🟡 中 - **模块**:管理员管理 - **问题描述**:前端期望 `lastLoginAt`,后端返回 `LastLoginTime` - **修复内容**: 1. 前端 `adminUser.ts` 接口定义 `lastLoginAt` → `lastLoginTime` 2. 前端 `user/index.vue` 表格列绑定 `lastLoginAt` → `lastLoginTime` --- ## 三、功能逻辑问题 ### BUG-005:权限编码不匹配导致按钮不显示 ✅ 已修复 - **严重程度**:🔴 高 - **模块**:角色管理、部门管理、管理员管理 - **问题描述**:多个页面的操作按钮因权限编码不匹配而不显示(前端用连字符,后端用下划线) - **修复内容**:前端统一改为下划线格式 - `role/index.vue`: `role:assign-menu` → `role:assign_menu`, `role:assign-permission` → `role:assign_permission` - `department/index.vue`: `department:assign-menu` → `department:assign_menu` - `user/index.vue`: `user:assign-role` → `user:assign_role`, `user:assign-department` → `user:assign_department`, `user:assign-menu` → `user:assign_menu`, `user:reset-password` → `user:reset_password` ### BUG-006:管理员专属菜单权限未定义 ✅ 已修复 - **严重程度**:🟡 中 - **模块**:管理员管理 - **问题描述**:前端使用 `user:assign_menu` 权限控制"专属菜单"按钮,但后端 DataSeeder 中没有初始化该权限 - **修复内容**:在 `DataSeeder.cs` 中添加权限 `user:assign_menu` ### BUG-007:部门管理 - 分配菜单功能异常 ✅ 已修复 - **严重程度**:🔴 高 - **模块**:部门管理 - **问题描述**:同 BUG-001,由于后端接口缺失,无法获取部门已分配的菜单 - **修复内容**:见 BUG-001 ### BUG-008:管理员管理 - 无法查看用户详情 ✅ 已修复 - **严重程度**:🟡 中 - **模块**:管理员管理 - **问题描述**:列表页面无法直观看到用户的角色、部门信息 - **修复内容**:依赖 BUG-003 修复 --- ## 四、数据展示问题 ### BUG-009:管理员列表 - 角色标签不显示 ✅ 已修复 - **严重程度**:🔴 高 - **模块**:管理员管理 - **问题描述**:角色列的 `el-tag` 无法正确渲染 - **修复内容**:见 BUG-003 ### BUG-010:管理员列表 - 部门名称可能为空 ✅ 已确认正常 - **严重程度**:🟡 中 - **模块**:管理员管理 - **问题描述**:部门列可能显示为空 - **确认结果**:后端 `AdminUserService` 已正确 Include Department 并填充 `DepartmentName` ### BUG-011:管理员列表 - 表头与数据列错位 ✅ 已修复 - **严重程度**:🔴 高 - **模块**:管理员管理 - **问题描述**:表格表头和实际内容对应不上 - **修复内容**:依赖 BUG-003、BUG-004 修复 ### BUG-012:管理员表单 - 邮箱不应该是必填项 ✅ 已确认正常 - **严重程度**:🟢 低 - **模块**:管理员管理 - **问题描述**:新增/编辑管理员时,邮箱字段不应该是必填的 - **确认结果**:前端 `formRules` 中 `email` 字段只有格式验证,没有 `required: true` ### BUG-013:部门表单 - 新增时残留上次数据 ✅ 已修复 - **严重程度**:🟡 中 - **模块**:部门管理 - **问题描述**:点击"新增部门"按钮时,表单中会显示上一次新增/编辑的数据 - **修复内容**:在 `el-dialog` 添加 `:destroy-on-close="true"` 属性 --- ## 五、修复清单 ### 后端修改 ✅ 1. ✅ **DepartmentController.cs** - 添加获取部门菜单接口 `GET /{id}/menus` 2. ✅ **IDepartmentService.cs** - 添加 `GetMenuIdsAsync` 方法声明 3. ✅ **DepartmentService.cs** - 实现 `GetMenuIdsAsync` 方法 4. ✅ **AdminUserQueryRequest.cs** - 添加 `Keyword` 字段,移除分开的字段 5. ✅ **AdminUserService.cs** - 修改查询逻辑支持 `Keyword` 模糊搜索 6. ✅ **AdminUserDto.cs** - 添加 `Roles` 属性和 `AdminUserRoleDto` 类 7. ✅ **AdminUserService.cs** - 修改映射逻辑填充 `Roles` 8. ✅ **DataSeeder.cs** - 添加 `user:assign_menu` 权限 ### 前端修改 ✅ 1. ✅ **role/index.vue** - 权限编码改为下划线格式 2. ✅ **department/index.vue** - 权限编码改为下划线格式,添加 `destroy-on-close` 3. ✅ **user/index.vue** - 权限编码改为下划线格式,时间字段名修改 4. ✅ **adminUser.ts** - 修改 `AdminUser` 接口,`lastLoginAt` → `lastLoginTime` --- ## 六、测试验证 修复完成后需要验证: - [ ] 角色管理 - 分配菜单能正确加载已勾选项 - [ ] 角色管理 - 分配菜单能正确保存 - [ ] 角色管理 - 分配权限能正确加载和保存 - [ ] 部门管理 - 分配菜单能正确加载已勾选项 - [ ] 部门管理 - 分配菜单能正确保存 - [ ] 管理员管理 - 列表搜索功能正常 - [ ] 管理员管理 - 角色列正确显示 - [ ] 管理员管理 - 部门列正确显示 - [ ] 管理员管理 - 最后登录时间正确显示 - [ ] 管理员管理 - 分配角色能正确加载和保存 - [ ] 管理员管理 - 分配部门能正确加载和保存 - [ ] 管理员管理 - 分配专属菜单能正确加载和保存 - [ ] 新增管理员功能正常 - [ ] 编辑管理员功能正常