Skip to content

AI 编码指引 ​

组件包内置 AI_GUIDE.md,它是面向 AI 编码工具的现行公开 API 约束,包含默认值、组件类型、接口签名和生成后检查。业务项目应让 AI 先读本地安装版本,而不是凭历史代码猜用法。

初始化项目指令 ​

bash
npx antdv-superform init-ai

命令会检测并更新已有的 AGENTS.md、CLAUDE.md、GEMINI.md、Copilot 或 Cursor 指令入口。

安全规则:

  • 不覆盖既有项目约束,只维护组件库自己的标记区。
  • 没有检测到入口时不创建文件,而是输出可手工添加的提示词。
  • 标记不完整时拒绝改写,避免破坏文件。
  • 检测到 Cursor rules 目录时创建独立规则文件。
  • 重复执行保持幂等。

建议补充的项目事实 ​

md
- 项目统一通过 src/plugins/super-form.ts 安装,不在页面重复配置 dictApi。
- 分页请求字段是 pageNum/pageSize,响应为 data.list/data.total。
- 业务主键来自接口类型,禁止根据 label 猜字段。
- 可用扩展字段:ExtUserPicker、ExtOrgTree。
- Upload 默认接口和最大文件大小已全局配置。

这些事实比“请写一个表格”更能约束生成结果。

公共导出 ​

ts
import {
  SuperForm,
  useForm,
  defineForm,
  SuperTable,
  useTable,
  defineTable,
  SuperDetail,
  useDetail,
  defineDetail,
  createModal,
  useModal,
  useModalForm,
  SuperButtons,
  useButtons,
  diagnoseSchema,
} from "antdv-superform";

默认导出是插件对象,提供 install、registerComponent、setDefaultProps。类型也从包根导入。

生成 Schema 的顺序 ​

  1. 确认页面场景:Form、Table、Detail 或 ModalForm。
  2. 从业务接口类型确定 field、rowKey 和请求参数。
  3. 选择字段/数组容器,不虚构内置 type。
  4. 复用项目字典、权限、上传和默认配置。
  5. 只添加覆盖默认行为所需的 attrs。
  6. 为关联值明确 labelField、endField、vModelFields。
  7. 用诊断工具和 TypeScript 检查。
ts
// 推荐:意图明确,无冗余默认
{
  type: 'Input',
  field: 'name',
  label: '名称',
  required: true,
}

// 不推荐:重复默认或无内容
{
  type: 'Input',
  field: 'name',
  label: '名称',
  attrs: { placeholder: '请输入名称' },
  options: [],
  hidden: false,
}

exaTypes 属性覆盖导航 ​

下面按 src/exaTypes.d.ts 的声明归属列出全部 Schema 相关属性。外部继承的 Ant Design Vue Props 不在本文件逐项展开,统一通过 attrs 进入对应底层组件。

ExtBaseOption / ExtRow ​

属性组文档
type、field、initialValue、vModelFieldsSchema 与数据模型
label、labelSlot、tooltip展示与辅助
rules、required校验机制
attrs、dynamicAttrs响应式与联动
hidden、disabled、computed、onUpdate响应式与联动
excludeSchema 场景
on、onXxx事件与上下文
colProps、span、block、breakAfter、align布局与结构
slots、viewRender渲染与插槽
rowProps、subSpan、gutter布局与结构

详情、分组与表单 ​

类型直接声明属性详细页面
ExtDescriptionsPropsmode、wrapperCol、labelCol、labelAlign、tableLayout、noInput、spanSuperDetail
ExtGroupBaseOptiontitle、buttons、subItems、descriptionsProps布局容器
ExtGroupOptioncomponent、ignoreTableTitle、contentAttrs布局容器
ExtDescriptionsOptiontitle、dataSource、buttons、mode、attrs、isContainer、subItemsDescriptions
ExtFormOptiondataSource、attrs、isContainer、compact、ignoreRules、subItems、buttons、descriptionsPropsSuperForm

按钮 ​

类型直接声明属性详细页面
ButtonItemlabel、name、customRender、confirmText、roleName、unauthorized、color、visibleIn、dropdown、tooltip、disabledTooltip、icon、attrs、hidden、disabled、meta、onClick单个按钮
ExtButtonGroupattrs、limit、buttonType、buttonShape、size、align、visibleIn、placement、divider、labelMode、moreLabel、unauthorized、hidden、disabled、targetSlot、methods、effectData、actions按钮组属性

Table、SuperTable 与标签筛选 ​

类型直接声明属性详细页面
TableApisquery、info、save、update、delete接口与数据适配
TabsHeaderfield、initialValue、bordered、options、dictName、labelAsValue、activeKey、slots、customTabSuperTable tabs
ExtColumnsItemviewRender、columnPropsTable 列
ExtTableOptionfield、title、attrs、editable、rowEditor、columns、tabs、columnProps、indexColumn、buttons、rowButtons、modalProps、descriptionsPropsTable 容器
rowEditoreditMode、addMode、form、modalProps、onSave、onCancel四种编辑方式
TableScanHightmaxHeight、isScanHeight、resizeHeightOffset、isFixedHeight、inheritHeightSuperTable 高度
RootTableOptionisContainer、apis、dataSource、params、immediate、beforeQuery、afterQuery、onLoaded、searchForm、pagination、attrsSuperTable
searchFormsubItems、searchOnChange、teleport、limit 及 Form 属性搜索表单

数组容器 ​

类型直接声明属性详细页面
ExtListOptionfield、title、attrs、buttons、columns、rowButtons、descriptionsPropsList
ExtListGroupOptionfield、attrs.labelIndex、attrs.rowKey、rowButtons、columnsListGroup
ExtInputListtitle、attrs.labelIndex、rowButtons、columns 及 FormItem 属性InputList
ExtInputGroupOptionsubItems 及 Row 属性InputGroup

Tabs 与 Collapse 容器 ​

类型直接声明属性详细页面
ExtTabsOptionactiveKey、buttons、subItemsTabs
ExtTabItemlabel、key、icon、subItems 及 GroupBase 属性页签项
ExtCollapseOptiontitle、activeKey、subItemsCollapse
CollapseItemlabel、key、icon、subItems、buttons 及 GroupBase 属性Collapse

通用字段与输入字段 ​

类型直接声明属性详细页面
ExtFormItemOptionvalue、labelField、tagViewer、formItemProps、descriptionsProps、editable数据绑定、展示辅助
ExtInputOptiononSearch、attrs: InputPropsInput
ExtAutoCompleteOptionoptions、dictName、attrs: AutoCompletePropsAutoComplete
ExtSlotOptionrenderInputSlot / InfoSlot

选择字段 ​

类型直接声明属性详细页面
DefaultOptionTypelabel、value、children、disabled 及业务扩展字段options 格式
ExtSelectoptions、dictName、valueToNumber、labelAsValue、stringifyValue通用值转换
ExtSelectOptionattrs: SelectPropsSelect
ExtTagSelectOption.attrsmultiple、stringifyValueTagSelect
ExtTagInputOption.attrsstringifyValue、newLabel、closableTagInput
ExtTreeOptionlabelField、attrs: TreeSelectProps、treeDataTreeSelect
ExtSwitchOptionvalueLabels、attrs.firstIsChecked、attrs.defaultChecked 及 SwitchPropsSwitch
ExtRadioOptionattrs: RadioGroupProps 及 ExtSelectRadio / Checkbox

日期范围与 Upload ​

类型直接声明属性详细页面
ExtDateRangeendField、stringifyValue范围值模式
ExtUpload.vModelFieldsfileListUpload 字段值
ExtUpload.attrs.apisupload、delete、downloadUpload 接口
ExtUpload.attrsinfoNames、valueKey、minSize、maxSize、isSingle、hideOnMax、uploadMode、tip、title、repeatable、isView 及 UploadProps文件上传

类型注册表与内部模型声明 ​

WrapperTypes 声明 InfoSlot、Form、Group、Fragment、Card、List、ListGroup、Tabs、Table、Collapse、Descriptions;WidgetTypes 声明 Buttons、Hidden、InputSlot、InfoSlot、Text、HTML、Textarea、Input、AutoComplete、InputNumber、DatePicker、TimePicker、DateRange、TimeRange、Select、TreeSelect、Radio、Checkbox、Switch、Upload、InputGroup、InputList、TagInput、TagSelect。

ModelData、ModelDataGroup、ModelChildren 是内部建模类型,不是 Schema 配置。其声明属性 refData、refName、parent、index、initialValue、fieldName、propChain、rules、children、listData、modelsMap 用于组件库内部模型图;业务回调只使用公开的 effectData,不应直接构造这些对象。

废弃属性迁移 ​

旧属性/API现行写法
hideInTableexclude: ['table']
hideInFormexclude: ['form']
hideInDescriptionexclude: ['description']
blockedblock
wrappingbreakAfter
valueToLabellabelAsValue
valueToStringstringifyValue
TreeSelect datatreeData
DateRange keepFieldendField
validOnvisibleIn
invalidDisabledunauthorized: 'disable'
roleModeunauthorized
forSlottargetSlot
表格 editeditable 或 rowEditor
根 editMode / addModerowEditor.editMode / rowEditor.addMode
editFormrowEditor.form
searchSchemasearchForm
form.setDataform.resetFields
registComponentregisterComponent
labelBgColor项目主题或样式变量
borderColor项目主题或样式变量

类型中保留旧属性用于迁移,不代表新代码应继续使用。

生成后自检 ​

  1. 所有导入来自包根或项目统一封装。
  2. type 是内置类型或已注册 Ext*。
  3. field、rowKey、接口参数来自业务类型。
  4. 分页需求显式配置 pagination。
  5. params、immediate、searchForm 位于 SuperTable 根级。
  6. 没有生成重复默认值和空配置。
  7. CRUD、Upload、字典契约与接口一致。
  8. 需要提交的隐藏字段已声明 Hidden。
  9. 动态回调只读取当前场景提供的 effectData。
  10. 执行 Schema 诊断和 TypeScript 检查。

基于 MIT 许可发布