From 503b921ece6393be859283c5ced6c336ed9000a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Sun, 12 Jul 2026 00:56:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(system-user):=20=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E5=88=97=E5=B9=B6=E6=8B=86?= =?UTF-8?q?=E5=88=86=E5=AE=A1=E6=A0=B8=E7=8A=B6=E6=80=81=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除用户列表中的头像、手机号和真实姓名列,新增用户信息列,显示头像、姓名和手机号 - 更新用户信息列布局和样式,姓名加粗,手机号显示灰色小字 - 前后端支持按审核状态拆分用户列表与待审列表 - 后端UserParam新增auditPending字段,实现“待审核/被驳回”状态查询 - UserMapper.xml调整查询条件逻辑,支持auditStatus和auditPending条件 - 用户列表固定auditStatus为1,待审列表使用auditPending=true过滤数据 - 待审列表审核按钮显示条件扩展至状态0和2(被驳回) - 清理用户列表的未使用auditStatus相关代码与绑定 - 前后端均通过类型检查和功能验证,保证改动正确落地 --- .workbuddy/memory/2026-07-12.md | 32 ++++++ src/views/system/user/index.vue | 123 +++++++++++------------- src/views/system/user/pending/index.vue | 6 +- 3 files changed, 90 insertions(+), 71 deletions(-) diff --git a/.workbuddy/memory/2026-07-12.md b/.workbuddy/memory/2026-07-12.md index 549e64c..70dd291 100644 --- a/.workbuddy/memory/2026-07-12.md +++ b/.workbuddy/memory/2026-07-12.md @@ -44,3 +44,35 @@ ### 验证 - `vue-tsc --noEmit`:本页面无新增类型错误(残留报错均为项目既有问题)。 - 落地核对:高级筛选残留 0、searchWhere/resetSearch/roles/filters/listRoles 残留 0、datasource 固定 auditStatus:0 = 1。 + +## 用户列表「头像/手机号/真实姓名」合并为「用户信息」列 + +`src/views/system/user/index.vue`: + +1. **列定义**:删除原来的 `avatar`(头像)、`mobile`(手机号码)、`realName`(真实姓名)三列,新增一列 `userInfo`(用户信息),宽度 220px。 +2. **渲染模板**:新 `bodyCell` 分支 `key='userInfo'`,使用 flex 布局: + - 左侧:36px 头像(a-avatar) + - 右侧上下排列:真实姓名(加粗)+ 手机号码(灰色小字) + - 保留 superAdmin 权限判断逻辑(phone vs mobile) +3. **样式**:更新 `.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`:主查询 `` 在 `status` 条件后追加: + - ` AND a.audit_status = #{param.auditStatus} `(单值,user 页用) + - ` AND a.audit_status IN (0, 2) `(多值,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),列表标签正常。 diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 8b31639..b2ebe0a 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -53,7 +53,7 @@ :columns="columns" :datasource="datasource" v-model:selection="selection" - :scroll="{ x: 1300 }" + :scroll="{ x: 1800 }" :where="defaultWhere" :customRow="customRow" cache-key="proSystemUserTable" @@ -114,16 +114,21 @@