Files
guilixu-admin/.workbuddy/memory/2026-07-11.md
赵忠林 bf259ea8ff feat(system): 实现用户审核功能
- 新增用户模型字段:auditStatus、auditRemark、auditTime
- 添加用户审核接口 auditUser,支持单条审核
- 用户列表页增加审核状态筛选项和对应列展示
- 列表行内仅待审核用户显示“审核”操作链接
- 工具栏添加批量审核按钮,实现批量审核功能
- 审核弹窗支持选择通过或拒绝及填写备注
- 审核提交支持单条和批量调用接口
- 保持代码类型检查无新增错误,符合项目字段命名规范
2026-07-11 19:43:24 +08:00

4.5 KiB
Raw Permalink Blame History

2026-07-11 工作日志

用户管理模块 UX 优化guilixu-admin 前端)

按用户确认的方案,对 src/views/system/ 下用户管理模块做了一轮优化:

1. 隐藏右上角三个导航按钮

  • src/views/system/user/components/Extra.vue 定义了「人员管理 / 实名认证 / 管理员列表」三个按钮,被 4 个页面复用:user/index.vueadmin/index.vueuserVerify2/index.vueorganization/index.vue
  • 已移除这 4 个页面里对 <Extra/> 的引用与 import并删除孤儿组件 Extra.vue

2. 修复搜索条件被覆盖的 bug

  • user/index.vueadmin/index.vuedatasourcewhere = {} 会清空传入条件(导致 defaultWhere 失效)。改为 const params = { ...where, ... } 合并后传给 pageUsers

3. 清理死代码

  • 删除 userTypehandleTabsuser/index.vue、admin/index.vue 均未使用)。

4. 修复重置密码明文安全问题

  • resetPsw 原先把明文新密码直接显示在 message.success 中;改为 Modal.success 弹窗展示,避免明文暴露。

5. 增加用户状态列 + 行点击查看详情

  • user/admin 列表新增「状态」列(正常/冻结,读取 record.status)。
  • 表格行 onClick 改为打开用户详情抽屉(openInfo),移除原无提示的双击编辑。

6. 新增高级筛选(仅 user/index.vue

  • 在页头加入角色 / 注册来源(platform) / 类型(isAdmin) 三个筛选条件 + 搜索/重置按钮,绑定 searchWhere reactivedatasource 读取后传给 pageUsers

验证

  • vue-tsc --noEmit 类型检查:我改动的 4 个文件无新增错误(仅剩项目既有错误,如 getPageTitle 返回 unknown、$router 类型、CMS/Shop 模块缺失等,与本次无关)。
  • 修复了自引入的 2 个 TS6133resetPsw 中改 message.successModal.successmsg 未使用的报错)。
  • 注意:本环境文件编辑会被自动提交/同步,工作区与 git HEAD 哈希一致属正常现象。

补充修复19:08isAdmin 类型不一致

  • 问题:User 实体模型定义 isAdmin?: booleansrc/api/system/user/model/index.ts:113),但 admin/index.vue 把实体当数字用(updateIsAdminrow.isAdmin ? 0 : 1、模板 record.isAdmin == 1),与模型冲突;user/index.vue 已正确用布尔(!row.isAdminv-if="record.isAdmin")。
  • 修复 admin/index.vue 两处:模板 :checked="record.isAdmin == 1":checked="record.isAdmin"updateIsAdmin 改为 row.isAdmin = !row.isAdmin;。与 User 模型严格一致。
  • 不改:admin 第294行 isAdmin: 1 是查询条件(UserParam.isAdmin?: number),语义正确。
  • 验证:vue-tsc --noEmit 确认改动无新增错误;旧写法已无残留。

审核功能19:27system/user 用户审核

  • 需求audit_status=0待审核时实现审核功能。已与用户确认后端接口已有POST /system/user/audit/{id},入参 {status, remark},与 shop 模块一致);状态 0待审核 / 1通过 / 2拒绝;支持行内单条 + 勾选批量审核。
  • 改动文件:
    • src/api/system/user/model/index.tsUser 加 auditStatus / auditRemark / auditTimeUserParam 加 auditStatus;新增 UserAuditRequest { status: number; remark?: string }
    • src/api/system/user/index.ts:新增 auditUser(id, data)POST /system/user/audit/{id}
    • src/views/system/user/index.vue高级筛选加「审核状态」下拉列配置加「审核状态」列a-tag 展示);行内仅 auditStatus===0 显示「审核」链接(@click.stop 防冒泡触发行详情);工具栏加「批量审核」按钮;新增 a-modal 审核弹窗radio 通过/拒绝 + 备注 textarea脚本 openAudit / openBatchAudit / submitAudit(批量用 Promise.all 循环调单条接口)。
  • 验证vue-tsc 仅剩项目既有错误(updateUserRecommend 的 form any、$routerloginUser/updateIsAdmin 未使用等),本功能无新增类型错误。
  • 注意点:字段用 camelCase auditStatus(与项目约定一致);若后端实际返回下划线 audit_status 需同步改模型字段名。批量审核为循环调单条接口(不依赖后端批量接口)。

备注

  • 方案中的「Batch 3 长期维护项」admin/user 组件合并、导入模板配置化、search.vue 重命名)本次未执行,属可选重构,风险较高,留待后续。
  • Grep 工具在当前环境因 pcre2 动态库缺失报错,改用 bash grep 替代。