diff --git a/apps/web-antd/src/api/platform-user/index.ts b/apps/web-antd/src/api/platform-user/index.ts index 47a2a14..78f9561 100644 --- a/apps/web-antd/src/api/platform-user/index.ts +++ b/apps/web-antd/src/api/platform-user/index.ts @@ -9,6 +9,7 @@ export namespace PlatformUserApi { nickname: string; info: string; inside: number; + disable: number; // 0-可用 1-封禁 create_time: string; update_time: string; } @@ -23,6 +24,7 @@ export namespace PlatformUserApi { nickname: string; info: string; inside: number; + disable: number; // 0-可用 1-封禁 } } diff --git a/apps/web-antd/src/api/request.ts b/apps/web-antd/src/api/request.ts index 654f5cb..0f058b7 100644 --- a/apps/web-antd/src/api/request.ts +++ b/apps/web-antd/src/api/request.ts @@ -91,15 +91,21 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) { }), ); - // 通用的错误处理,如果没有进入上面的错误处理逻辑,就会进入这里 + // 通用错误处理:优先展示后端返回的 errMsg,确保用户能看到具体错误原因(如封禁、查询暂停等) client.addResponseInterceptor( - errorMessageResponseInterceptor((msg: string, error) => { - // 这里可以根据业务进行定制,你可以拿到 error 内的信息进行定制化处理,根据不同的 code 做不同的提示,而不是直接使用 message.error 提示 msg - // 当前mock接口返回的错误字段是 error 或者 message - const responseData = error?.response?.data ?? {}; - const errorMessage = responseData?.error ?? responseData?.msg ?? ''; - // 如果没有错误信息,则会根据状态码进行提示 - message.error(errorMessage || msg); + errorMessageResponseInterceptor((msg: string, error: any) => { + // 后端统一返回 { code, msg },code !== 200 时 defaultResponseInterceptor 会 throw,error 上可能有 response.data 或 data + const responseData = error?.response?.data ?? error?.data ?? {}; + const backendMsg = + responseData?.msg ?? + responseData?.errMsg ?? + responseData?.error ?? + responseData?.message ?? + ''; + const displayMsg = backendMsg.trim() || msg; + if (displayMsg) { + message.error(displayMsg); + } }), ); diff --git a/apps/web-antd/src/views/platform-user/data.ts b/apps/web-antd/src/views/platform-user/data.ts index f7fcf03..445a79d 100644 --- a/apps/web-antd/src/views/platform-user/data.ts +++ b/apps/web-antd/src/views/platform-user/data.ts @@ -2,8 +2,10 @@ import type { VbenFormSchema } from '#/adapter/form'; import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table'; import type { PlatformUserApi } from '#/api/platform-user'; -// 表单配置 -export function useFormSchema(): VbenFormSchema[] { +// 表单配置(可选传入 onDisableChange,用于同步「是否封禁」滑块的当前值,确保解封时提交 disable=0) +export function useFormSchema(options?: { + onDisableChange?: (value: 0 | 1) => void; +}): VbenFormSchema[] { return [ { component: 'Input', @@ -36,6 +38,19 @@ export function useFormSchema(): VbenFormSchema[] { }, defaultValue: 0, }, + { + component: 'Switch', + fieldName: 'disable', + label: '是否封禁用户', + componentProps: { + checkedChildren: '封禁', + unCheckedChildren: '解封', + onChange: (checked: boolean) => { + options?.onDisableChange?.(checked ? 1 : 0); + }, + }, + defaultValue: 0, + }, ]; } @@ -104,6 +119,12 @@ export function useColumns( width: 100, formatter: ({ cellValue }) => (cellValue === 1 ? '是' : '否'), }, + { + field: 'disable', + title: '是否封禁', + width: 100, + formatter: ({ cellValue }) => (cellValue === 1 ? '封禁' : '可用'), + }, { field: 'create_time', title: '创建时间', diff --git a/apps/web-antd/src/views/platform-user/modules/form.vue b/apps/web-antd/src/views/platform-user/modules/form.vue index 3a215b7..23ceb65 100644 --- a/apps/web-antd/src/views/platform-user/modules/form.vue +++ b/apps/web-antd/src/views/platform-user/modules/form.vue @@ -1,7 +1,7 @@