# Adapter > 文档路径:`apps/wisdom-legacy/docs/adapter.md`(勿放在 `src/` 下,避免 Vite 解析 `.md` 中的 import / SFC 语法) `adapter` 是 wisdom-legacy 对 Vben 表单、VXE 表格、弹窗/抽屉的统一封装层。业务页面通常按 **Grid 列表 + EditShell 编辑** 组合开发。 ``` views/xxx/ ├── xxx.data.ts # defineGrid + defineEditShell(声明式配置) ├── XxxList.vue # useGridPage(列表页) └── modules/XxxEdit.vue # useEditShell(编辑表单) ``` ## 目录 | 目录 | 职责 | | --- | --- | | `form/` | Vben 表单封装:`useVbenForm`、校验规则、通用 schema 字段 | | `vxe-table/` | 表格页封装:`defineGrid`、`useGridPage`、列助手、单元格渲染器、数据代理 | | `shell/` | Modal / Drawer 壳层:`useShell`、`defineEditShell`、`useEditShell` | | `antd/` | Ant Design Vue 组件类型映射 | | `setup.ts` | 应用启动时注册 form、vxe-table、antd 适配 | --- ## 初始化 在应用入口调用 `adapter/setup.ts`,依次完成 antd 组件注册、表单规则注册、VXE 表格与渲染器注册。 ```ts import initAdapter from '#/adapter/setup'; await initAdapter(app); ``` --- ## Form 表单 ### 导出 API ```ts import { useVbenForm, // 创建表单组件与 api defineStatusField, // 启用/禁用状态字段 defineFormSchema, // 按 model 回填 defaultValue 的动态 schema z, // Zod 校验(re-export) } from '#/adapter/form'; import type { VbenFormProps, VbenFormSchema } from '#/adapter/form'; ``` ### useVbenForm 底层基于 `@vben/common-ui` 的 `useVbenForm`,并绑定项目内 Ant Design 组件类型。 ```ts const [Form, formApi] = useVbenForm({ layout: 'vertical', showDefaultActions: false, schema: [ { component: 'Input', fieldName: 'name', label: '名称', rules: 'required', // 内置规则 }, { component: 'Input', fieldName: 'phone', label: '手机号', rules: z.string().regex(/^\d{11}$/), // Zod schema }, ], async handleSubmit(values) { // 提交逻辑 }, }); ``` 模板中渲染 `
`,通过 `formApi` 操作表单: | 方法 | 说明 | | ---------------------------------------- | ----------------- | | `setValues(values, merge?, validate?)` | 回填表单 | | `getValues()` | 获取当前值 | | `validate()` / `validateAndSubmitForm()` | 校验 / 校验并提交 | | `resetForm()` | 重置 | | `setState({ schema })` | 动态更新 schema | ### Schema 字段 每个 schema 项对应一个表单项,常用属性: | 属性 | 说明 | | --- | --- | | `component` | 组件名,如 `Input`、`Select`、`ApiTreeSelect` | | `fieldName` | 字段路径,支持 `department.id` 点语法 | | `label` | 标签 | | `rules` | `'required'`、`'selectRequired'`、Zod schema、或规则数组 | | `defaultValue` | 默认值 | | `hide` / `disabled` | 隐藏 / 禁用 | | `dependencies` | 联动:`if`、`rules`、`triggerFields` | | `componentProps` | 传给底层组件的 props | | `formItemClass` / `wrapperClass` | 布局 class | | `renderComponentContent` | 自定义组件插槽内容(如 Checkbox 文案) | **条件显示示例:** ```ts { component: 'InputPassword', fieldName: 'password', label: '密码', dependencies: { if: (values) => !values.id, // 仅新增时显示 triggerFields: ['id'], }, } ``` **自定义插槽:** 在 `