- 新增用户模型字段:auditStatus、auditRemark、auditTime - 添加用户审核接口 auditUser,支持单条审核 - 用户列表页增加审核状态筛选项和对应列展示 - 列表行内仅待审核用户显示“审核”操作链接 - 工具栏添加批量审核按钮,实现批量审核功能 - 审核弹窗支持选择通过或拒绝及填写备注 - 审核提交支持单条和批量调用接口 - 保持代码类型检查无新增错误,符合项目字段命名规范
50 lines
4.5 KiB
Markdown
50 lines
4.5 KiB
Markdown
# 2026-07-11 工作日志
|
||
|
||
## 用户管理模块 UX 优化(guilixu-admin 前端)
|
||
|
||
按用户确认的方案,对 `src/views/system/` 下用户管理模块做了一轮优化:
|
||
|
||
### 1. 隐藏右上角三个导航按钮
|
||
- 原 `src/views/system/user/components/Extra.vue` 定义了「人员管理 / 实名认证 / 管理员列表」三个按钮,被 4 个页面复用:`user/index.vue`、`admin/index.vue`、`userVerify2/index.vue`、`organization/index.vue`。
|
||
- 已移除这 4 个页面里对 `<Extra/>` 的引用与 import,并删除孤儿组件 `Extra.vue`。
|
||
|
||
### 2. 修复搜索条件被覆盖的 bug
|
||
- `user/index.vue` 与 `admin/index.vue` 的 `datasource` 中 `where = {}` 会清空传入条件(导致 `defaultWhere` 失效)。改为 `const params = { ...where, ... }` 合并后传给 `pageUsers`。
|
||
|
||
### 3. 清理死代码
|
||
- 删除 `userType`、`handleTabs`(user/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` reactive,datasource 读取后传给 `pageUsers`。
|
||
|
||
### 验证
|
||
- `vue-tsc --noEmit` 类型检查:我改动的 4 个文件无新增错误(仅剩项目既有错误,如 `getPageTitle` 返回 unknown、`$router` 类型、CMS/Shop 模块缺失等,与本次无关)。
|
||
- 修复了自引入的 2 个 `TS6133`(`resetPsw` 中改 `message.success` 为 `Modal.success` 后 `msg` 未使用的报错)。
|
||
- 注意:本环境文件编辑会被自动提交/同步,工作区与 git HEAD 哈希一致属正常现象。
|
||
|
||
### 补充修复(19:08):isAdmin 类型不一致
|
||
- 问题:`User` 实体模型定义 `isAdmin?: boolean`(`src/api/system/user/model/index.ts:113`),但 `admin/index.vue` 把实体当数字用(`updateIsAdmin` 中 `row.isAdmin ? 0 : 1`、模板 `record.isAdmin == 1`),与模型冲突;`user/index.vue` 已正确用布尔(`!row.isAdmin`、`v-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:27):system/user 用户审核
|
||
- 需求:audit_status=0(待审核)时实现审核功能。已与用户确认:后端接口已有(`POST /system/user/audit/{id}`,入参 `{status, remark}`,与 shop 模块一致);状态 `0待审核 / 1通过 / 2拒绝`;支持行内单条 + 勾选批量审核。
|
||
- 改动文件:
|
||
- `src/api/system/user/model/index.ts`:User 加 `auditStatus / auditRemark / auditTime`;UserParam 加 `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、`$router`、`loginUser/updateIsAdmin` 未使用等),本功能无新增类型错误。
|
||
- 注意点:字段用 camelCase `auditStatus`(与项目约定一致);若后端实际返回下划线 `audit_status` 需同步改模型字段名。批量审核为循环调单条接口(不依赖后端批量接口)。
|
||
|
||
### 备注
|
||
- 方案中的「Batch 3 长期维护项」(admin/user 组件合并、导入模板配置化、search.vue 重命名)本次未执行,属可选重构,风险较高,留待后续。
|
||
- Grep 工具在当前环境因 pcre2 动态库缺失报错,改用 bash grep 替代。
|