156 lines
6.7 KiB
Markdown
156 lines
6.7 KiB
Markdown
# 后台管理系统 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<AdminUserRoleDto>`)
|
||
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`
|
||
|
||
---
|
||
|
||
## 六、测试验证
|
||
|
||
修复完成后需要验证:
|
||
|
||
- [ ] 角色管理 - 分配菜单能正确加载已勾选项
|
||
- [ ] 角色管理 - 分配菜单能正确保存
|
||
- [ ] 角色管理 - 分配权限能正确加载和保存
|
||
- [ ] 部门管理 - 分配菜单能正确加载已勾选项
|
||
- [ ] 部门管理 - 分配菜单能正确保存
|
||
- [ ] 管理员管理 - 列表搜索功能正常
|
||
- [ ] 管理员管理 - 角色列正确显示
|
||
- [ ] 管理员管理 - 部门列正确显示
|
||
- [ ] 管理员管理 - 最后登录时间正确显示
|
||
- [ ] 管理员管理 - 分配角色能正确加载和保存
|
||
- [ ] 管理员管理 - 分配部门能正确加载和保存
|
||
- [ ] 管理员管理 - 分配专属菜单能正确加载和保存
|
||
- [ ] 新增管理员功能正常
|
||
- [ ] 编辑管理员功能正常
|