diff --git a/.workbuddy/memory/2026-07-11.md b/.workbuddy/memory/2026-07-11.md index cc76842..116a4da 100644 --- a/.workbuddy/memory/2026-07-11.md +++ b/.workbuddy/memory/2026-07-11.md @@ -35,6 +35,15 @@ - 不改:`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 替代。 diff --git a/src/api/system/user/index.ts b/src/api/system/user/index.ts index 9f49596..eeae092 100644 --- a/src/api/system/user/index.ts +++ b/src/api/system/user/index.ts @@ -1,6 +1,6 @@ import request from '@/utils/request'; import type { ApiResult, PageResult } from '@/api'; -import type { User, UserParam } from './model'; +import type { User, UserParam, UserAuditRequest } from './model'; import { SERVER_API_URL } from '@/config/setting'; /** @@ -293,3 +293,19 @@ export async function exportUsers(params?: UserParam) { }); return res.data; } + +/** + * 审核用户 + * @param id 用户id + * @param data 审核结果 + */ +export async function auditUser(id: number, data: UserAuditRequest) { + const res = await request.post>( + SERVER_API_URL + '/system/user/audit/' + id, + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/user/model/index.ts b/src/api/system/user/model/index.ts index be3b50d..f34fb2f 100644 --- a/src/api/system/user/model/index.ts +++ b/src/api/system/user/model/index.ts @@ -129,6 +129,12 @@ export interface User { followers?: number; // 推荐人ID dealerId?: number; + // 审核状态: 0待审核 1通过 2拒绝 + auditStatus?: number; + // 审核备注 + auditRemark?: string; + // 审核时间 + auditTime?: string; } /** @@ -158,4 +164,16 @@ export interface UserParam extends PageParam { showProfile?: boolean; isStaff?: boolean; templateId?: number; + // 审核状态: 0待审核 1通过 2拒绝 + auditStatus?: number; +} + +/** + * 用户审核请求 + */ +export interface UserAuditRequest { + // 审核状态: 1-通过 2-拒绝 + status: number; + // 审核备注 + remark?: string; } diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index dfe3b85..7f88376 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -40,6 +40,18 @@ 普通用户 + + + 待审核 + 通过 + 拒绝 + + 搜索 重置 @@ -84,6 +96,17 @@ :disabled="selection.length === 0" >重置密码 + + + 批量审核 + 冻结 - +