- 删除用户列表中的头像、手机号和真实姓名列,新增用户信息列,显示头像、姓名和手机号 - 更新用户信息列布局和样式,姓名加粗,手机号显示灰色小字 - 前后端支持按审核状态拆分用户列表与待审列表 - 后端UserParam新增auditPending字段,实现“待审核/被驳回”状态查询 - UserMapper.xml调整查询条件逻辑,支持auditStatus和auditPending条件 - 用户列表固定auditStatus为1,待审列表使用auditPending=true过滤数据 - 待审列表审核按钮显示条件扩展至状态0和2(被驳回) - 清理用户列表的未使用auditStatus相关代码与绑定 - 前后端均通过类型检查和功能验证,保证改动正确落地
5.4 KiB
5.4 KiB
2026-07-12 工作日志
用户审核弹窗与列表增加店名/姓名/地区信息
针对用户管理 system/user 的审核功能做信息补全:
1. 新增字段
src/api/system/user/model/index.ts:在User接口增加storeName?: string(店名)。
2. 用户列表增加「店名」列
src/views/system/user/index.vue:- 列配置在「昵称」后新增
storeName列(title: '店名',align: 'center',ellipsis: true)。 bodyCell渲染分支:空值显示-,保留title提示完整店名。
- 列配置在「昵称」后新增
3. 审核弹窗展示用户关键信息
- 新增响应式变量
currentAuditUser。 openAudit(row)时把当前行记录赋给currentAuditUser;openBatchAudit时清空(批量审核不展示单条信息)。- 审核弹窗顶部增加信息区(仅单条审核时展示):
- 店名:
currentAuditUser.storeName || '-' - 姓名:
currentAuditUser.realName || currentAuditUser.nickname || '-'(真实姓名优先,无则取昵称) - 所在地区:
province + city + region拼接,空则显示-
- 店名:
验证
vue-tsc --noEmit类型检查:本次改动文件无新增错误(列出的报错均为项目既有错误:$router、getPageTitle、loginUser/updateIsAdmin未使用、导出数组隐式 any 等,与本次无关)。- 落地核对:模型
storeName1 处、页面列配置 1 处、bodyCell渲染 1 处、currentAuditUser变量 7 处、弹窗信息区字段各 1 处。
待审核用户专用页 /system/user/pending 精简
src/views/system/user/pending/index.vue 已存在(基于 user 列表的副本)。按用户要求改造:
1. 只显示待审核用户
datasource改为固定auditStatus: 0,不再读取筛选条件。
2. 删除高级筛选区(角色/注册来源/类型/审核状态 4个下拉 + 搜索/重置按钮)
- 模板删除整个
<a-form>高级筛选区。 - 脚本删除
searchWherereactive、resetSearch、roles变量、filters()调用。 - 删除已无用的
listRolesimport。 - 顶部关键词搜索框(
a-input-search)保留。
注意点(待用户确认)
- 列表的「角色」列、「注册来源」列、「审核状态」列均保留(用户要求删除的是筛选"功能",非列表展示列)。其中「审核状态」列在待审核页全会显示"待审核",若用户也想删列表列需再告知。
- 工具栏「新建/修改/重置密码/批量审核/批量删除/导入/导出」按钮保留未动。
验证
vue-tsc --noEmit:本页面无新增类型错误(残留报错均为项目既有问题)。- 落地核对:高级筛选残留 0、searchWhere/resetSearch/roles/filters/listRoles 残留 0、datasource 固定 auditStatus:0 = 1。
用户列表「头像/手机号/真实姓名」合并为「用户信息」列
src/views/system/user/index.vue:
- 列定义:删除原来的
avatar(头像)、mobile(手机号码)、realName(真实姓名)三列,新增一列userInfo(用户信息),宽度 220px。 - 渲染模板:新
bodyCell分支key='userInfo',使用 flex 布局:- 左侧:36px 头像(a-avatar)
- 右侧上下排列:真实姓名(加粗)+ 手机号码(灰色小字)
- 保留 superAdmin 权限判断逻辑(phone vs mobile)
- 样式:更新
.user-box样式,增加 gap、user-name 加粗、user-mobile 灰色小字。
按审核状态拆分 user / pending 列表(前后端)
需求:/system/user/pending 只显示待审核(0)与被驳回(2);/system/user 只显示已通过(1)。后端在 /Users/gxwebsoft/JAVA/com.gxwebsoft.core。
后端改动
src/main/java/com/gxwebsoft/common/system/param/UserParam.java:- 给
auditStatus字段补@QueryField(type = QueryType.EQ)注解(原缺失,不参与查询)。 - 新增
private Boolean auditPending(带@TableField(exist=false))语义字段:是否查询"待处理审核"(待审核0/被驳回2)。
- 给
src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml:主查询<where>在status条件后追加:<if test="param.auditStatus != null"> AND a.audit_status = #{param.auditStatus} </if>(单值,user 页用)<if test="param.auditPending != null and param.auditPending"> AND a.audit_status IN (0, 2) </if>(多值,pending 页用)
- 未采用数组参数方案(
auditStatusList: [0,2]):因UserController.page是 GET 且 Spring 绑定UserParam对象,axios 默认把数组序列化为key[]=v形式,Spring MVC 默认不识别,存在序列化风险。改用语义布尔字段彻底规避。
前端改动
src/views/system/user/index.vue:datasource 固定auditStatus: 1;清理未绑定的死代码searchWhere.auditStatus(定义 + resetSearch)。src/views/system/user/pending/index.vue:datasource 由auditStatus: 0改为auditPending: true;审核按钮v-if由仅auditStatus===0扩展为===0 || ===2(被驳回用户也可重新审核)。
验证
- 前端
vue-tsc --noEmit:user/pending 两页无新增实质类型错误(残留均为项目既有噪音:$router、getPageTitle、TS6133 未使用、TS7053 导出数组索引)。 - 后端落地核对:UserParam auditPending 字段=1、XML 两条件各=1,片段上下文正确。SELECT 用
a.*会返回audit_status(驼峰映射 auditStatus),列表标签正常。