HaniBlindBox/docs/后台管理系统-Bug清单.md
2026-01-05 10:30:19 +08:00

6.7 KiB
Raw Blame History

后台管理系统 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 字段进行模糊搜索,后端期望 UsernameRealNamePhone 分开的字段
  • 修复内容
    1. AdminUserQueryRequest 添加 Keyword 字段,移除 UsernameRealNamePhone
    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 接口定义 lastLoginAtlastLoginTime
    2. 前端 user/index.vue 表格列绑定 lastLoginAtlastLoginTime

三、功能逻辑问题

BUG-005权限编码不匹配导致按钮不显示 已修复

  • 严重程度🔴
  • 模块:角色管理、部门管理、管理员管理
  • 问题描述:多个页面的操作按钮因权限编码不匹配而不显示(前端用连字符,后端用下划线)
  • 修复内容:前端统一改为下划线格式
    • role/index.vue: role:assign-menurole:assign_menu, role:assign-permissionrole:assign_permission
    • department/index.vue: department:assign-menudepartment:assign_menu
    • user/index.vue: user:assign-roleuser:assign_role, user:assign-departmentuser:assign_department, user:assign-menuuser:assign_menu, user:reset-passworduser: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管理员表单 - 邮箱不应该是必填项 已确认正常

  • 严重程度🟢
  • 模块:管理员管理
  • 问题描述:新增/编辑管理员时,邮箱字段不应该是必填的
  • 确认结果:前端 formRulesemail 字段只有格式验证,没有 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 接口,lastLoginAtlastLoginTime

六、测试验证

修复完成后需要验证:

  • 角色管理 - 分配菜单能正确加载已勾选项
  • 角色管理 - 分配菜单能正确保存
  • 角色管理 - 分配权限能正确加载和保存
  • 部门管理 - 分配菜单能正确加载已勾选项
  • 部门管理 - 分配菜单能正确保存
  • 管理员管理 - 列表搜索功能正常
  • 管理员管理 - 角色列正确显示
  • 管理员管理 - 部门列正确显示
  • 管理员管理 - 最后登录时间正确显示
  • 管理员管理 - 分配角色能正确加载和保存
  • 管理员管理 - 分配部门能正确加载和保存
  • 管理员管理 - 分配专属菜单能正确加载和保存
  • 新增管理员功能正常
  • 编辑管理员功能正常