Skip to content

Castor3 UI AI API 合同

本文是 AI 和业务项目使用 Castor3 UI 时的公开 API 合同。源码发生 API 变化后,运行 npm run docs:api 重新生成。

AI 使用规则

  1. 只使用本文列出的 props、事件、暴露成员和配置字段,不要猜测不存在的 API。
  2. Vue 模板使用 kebab-case 属性;TypeScript 配置对象使用 camelCase 字段。
  3. elementProps 仅用于透传底层 Element Plus 属性,不能替代 Castor3 UI 自身 props。
  4. CommonCommand.command 会成为组件触发的同名事件;使用动态事件时必须同时实现监听器。
  5. 表单和表格配置优先显式标注 FormField[]QueryField[]TableField[]ReportField[],让 TypeScript 阻止错误属性。
  6. uploadmodel[dataField] 是 Element Plus 文件列表;avatarUploader 保留 Vue 2 的图片 URL 模型,上传成功后由业务回调更新 URL。
  7. EditTable 会给行对象写入 operateType: add | edit | view;提交不接受该字段的接口前应由业务剔除。

导入

ts
import Castor3UI, { CaCommonForm, type FormField } from "castor3-ui-element";
import "castor3-ui-element/style.css";

CaCommonForm

配置式表单,支持编辑/查看状态、字段校验、分组和命令。

Props

属性模板写法类型默认值说明
loadingloadingbooleanfalse是否显示加载状态。
operateTypeoperate-typeOperateType'add'操作状态;view 会禁用字段并隐藏底部命令。
rowFieldsCountrow-fields-countnumber2每行字段数量。
modelmodelAnyRecord{}响应式数据模型;组件会直接读写该对象。
fieldsfieldsFormField[][]字段配置数组,结构见本文“配置对象”章节。
commandscommandsCommonCommand[][]命令按钮配置;command 同时是触发的事件名。
customCommandscustom-commandsCommonCommand[][]额外业务命令按钮配置。
customComponentscustom-componentsCustomComponentMap{}自定义组件映射,key 对应配置中的 componentKey
elementPropselement-propsAnyRecord{}透传给底层 Element Plus 主组件的属性。
extendPropsextend-propsFormExtendProps{}表单内容区和底部区域的样式扩展。
emitRegisteremit-registerRecord<string, any>{}传入可变对象后,组件会向其中注册可调用方法。

Events

事件参数说明
[command.command]payload点击底部、顶部或分组命令时触发对应同名事件。

Exposed

成员说明
validate执行当前表单或编辑行校验。
validateField校验指定的一个或多个表单字段。
clearValidate清除指定字段或全部字段的校验结果。
resetFields重置指定字段或全部表单字段。
scrollToField滚动到指定表单字段。
formRef底层 Element Plus 表单实例。

emitRegister

注册成员说明
validate执行当前表单或编辑行校验。
validateField校验指定的一个或多个表单字段。
clearValidate清除指定字段或全部字段的校验结果。
resetFields重置指定字段或全部表单字段。
scrollToField滚动到指定表单字段。

CaCommonQuery

带动态字段选择器的后台查询栏。

Props

属性模板写法类型默认值说明
formIdform-idstring-表单 DOM id;未传时组件生成实例唯一 id。
loadingloadingbooleanfalse是否显示加载状态。
maxFieldWidthmax-field-widthnumber280自动计算列数时单个字段的目标最大宽度。
commandsFloatcommands-float'left' | 'right''right'命令区水平对齐方向。
modelmodelAnyRecord{}响应式数据模型;组件会直接读写该对象。
fieldsfieldsQueryField[][]字段配置数组,结构见本文“配置对象”章节。
commandscommandsCommonCommand[][]命令按钮配置;command 同时是触发的事件名。
dynamicFieldsPositiondynamic-fields-position'start' | 'end''end'动态字段显示在静态字段之前或之后。
defaultCheckedKeysdefault-checked-keysArray<string | number>[]默认展示的动态字段 key。
downloadOptdownload-optDownloadConfig{}导出按钮及下拉命令配置。
elementPropselement-propsAnyRecord{}透传给底层 Element Plus 主组件的属性。
fixedRowCountfixed-row-countnumber0每行固定字段数;0 表示根据宽度自动计算。
customComponentscustom-componentsCustomComponentMap{}自定义组件映射,key 对应配置中的 componentKey
emitRegisteremit-registerRecord<string, any>{}传入可变对象后,组件会向其中注册可调用方法。

Events

事件参数说明
[command.command]model点击命令、导出项或按 Enter 时触发对应同名事件。

Exposed

成员说明
resetFields重置指定字段或全部表单字段。
checkedKeys当前启用的动态查询字段 key。
formRef底层 Element Plus 表单实例。

emitRegister

注册成员说明
resetFields重置指定字段或全部表单字段。

CaCommonQueryPlus

带展开/收起和已生效条件标签的查询栏。

Props

属性模板写法类型默认值说明
formIdform-idstring-表单 DOM id;未传时组件生成实例唯一 id。
loadingloadingbooleanfalse是否显示加载状态。
maxFieldWidthmax-field-widthnumber280自动计算列数时单个字段的目标最大宽度。
modelmodelAnyRecord{}响应式数据模型;组件会直接读写该对象。
fieldsfieldsQueryField[][]字段配置数组,结构见本文“配置对象”章节。
commandscommandsCommonCommand[][]命令按钮配置;command 同时是触发的事件名。
downloadOptdownload-optDownloadConfig{}导出按钮及下拉命令配置。
elementPropselement-propsAnyRecord{}透传给底层 Element Plus 主组件的属性。
fixedRowCountfixed-row-countnumber0每行固定字段数;0 表示根据宽度自动计算。
queryTagquery-tagstring''折叠状态的 localStorage key;空字符串表示不持久化。
defaultCollapseddefault-collapsedbooleantrue首次加载时是否收起动态字段。
showActiveTagsshow-active-tagsbooleantrue是否展示已提交筛选条件标签。
searchTextsearch-textstring'查询'内置查询按钮文案。
resetTextreset-textstring'重置'内置重置按钮文案。
customComponentscustom-componentsCustomComponentMap{}自定义组件映射,key 对应配置中的 componentKey
emitRegisteremit-registerRecord<string, any>{}传入可变对象后,组件会向其中注册可调用方法。

Events

事件参数说明
searchmodel提交查询或删除单个条件标签后触发。
reset-清空全部查询条件后触发。
collapse-changecollapsed: boolean展开/收起状态变化时触发。
[command.command]model点击额外命令或导出项时触发对应同名事件。

Exposed

成员说明
search提交查询并刷新已生效条件快照。
reset按字段类型清空查询条件。
toggleCollapse切换展开/收起状态。
collapsed当前是否处于收起状态。
activeTags当前已提交的筛选条件标签。

emitRegister

注册成员说明
submitQuery通过 emitRegister 提交查询。
resetFields重置指定字段或全部表单字段。
toggleCollapse切换展开/收起状态。

CaCommonTable

配置式数据表格,支持列设置、批量选择、分页和排序。

Props

属性模板写法类型默认值说明
loadingloadingbooleanfalse是否显示加载状态。
titletitlestring''组件标题。
tipstipsTableTips{}表格上方提示信息配置。
rowKeyrow-keystring'id'行唯一键字段名。
dataSourcedata-sourceAnyRecord[][]表格数据源;编辑类组件会直接修改数组和行对象,并给编辑行写入 operateType
columnscolumnsTableField[][]表格列配置数组,结构见本文“配置对象”章节。
paginationpaginationPaginationConfig | false{}可变的响应式分页、排序配置;组件会直接修改,传 false 关闭分页。
addCommandadd-commandCommonCommand-新增按钮命令配置。
customCommandscustom-commandsCommonCommand[][]额外业务命令按钮配置。
settingCommandssetting-commandsCommonCommand[][]表格设置类命令按钮。
getListget-list() => any | Promise<any>-刷新、分页或排序后调用的数据加载函数。
customComponentscustom-componentsCustomComponentMap{}自定义组件映射,key 对应配置中的 componentKey
tableTagtable-tagstring''列设置缓存标识;非空时用于生成 localStorage key。
elementPropselement-propsAnyRecord{}透传给底层 Element Plus 主组件的属性。
extendPropsextend-propsTableExtendProps() => ({ cacheConfigColumns: true, showRefresh: true, showColumnConfig: true })刷新按钮、列设置和列设置缓存开关。
emitRegisteremit-registerRecord<string, any>{}传入可变对象后,组件会向其中注册可调用方法。

Events

事件参数说明
selection-changeselection选中行变化。
sort-change{ prop, order }排序条件变化。
page-index-changepageIndex当前页变化。
page-size-changepageSize每页数量变化。
row-clickElement Plus 原始参数行单击。
row-dblclickElement Plus 原始参数行双击。
cell-clickElement Plus 原始参数单元格单击。
cell-dblclickElement Plus 原始参数单元格双击。
[command.command]命令相关参数新增、批量、设置或行命令的同名事件。

Exposed

成员说明
tableRef底层 Element Plus 表格实例。
refresh重新执行 getList
clearSelection清空表格选中行。
multipleSelection当前选中行数组。

emitRegister

注册成员说明
refresh重新执行 getList
clearSelection清空表格选中行。
getSelectionRows返回当前选中行数组的副本。

CaEditTable

行内编辑表格,支持自动/手动编辑、校验、新增、取消恢复和未保存草稿保护。

Props

属性模板写法类型默认值说明
editTriggerModeedit-trigger-mode'manual' | 'auto''manual'编辑触发方式:手动命令或点击行自动进入编辑。
loadingloadingbooleanfalse是否显示加载状态。
titletitlestring''组件标题。
rowKeyrow-keystring'id'行唯一键字段名。
childrenKeychildren-keystring'children'树形数据的子节点字段名。
treeModetree-modebooleanfalse是否启用树形表格模式。
dataSourcedata-sourceAnyRecord[][]表格数据源;编辑类组件会直接修改数组和行对象,并给编辑行写入 operateType
columnscolumnsTableField[][]表格列配置数组,结构见本文“配置对象”章节。
paginationpaginationPaginationConfig{}可变的响应式分页、排序配置;组件会直接修改,不支持 false。干净编辑会先结束再继续;未保存编辑会保留草稿并阻止修改。
addCommandadd-commandCommonCommand-新增按钮命令配置。
editCommandedit-commandCommonCommand-自动模式进入编辑时使用的命令。
saveCommandsave-commandCommonCommand-自动模式离开行或表格时使用的保存命令。
dirtyCheckdirty-check(row: AnyRecord, originalRow: AnyRecord) => boolean-自定义已有行是否发生业务变更;默认深比较所有 editable: true 字段。
addInsideadd-insidebooleanfalse是否由组件直接向数据源插入新增行。
addInsidePositionadd-inside-position'beforeFirst' | 'afterLast''beforeFirst'新增行或子节点插入到数组头部还是尾部。
customCommandscustom-commandsCommonCommand[][]额外业务命令按钮配置。
appendContentappend-contentstring''表格底部附加文本。
getListget-list() => any | Promise<any>-分页或排序获准后调用的数据加载函数;存在未保存编辑而被阻止时不会调用。
customComponentscustom-componentsCustomComponentMap{}自定义组件映射,key 对应配置中的 componentKey
elementPropselement-propsAnyRecord{}透传给底层 Element Plus 主组件的属性。
emitRegisteremit-registerRecord<string, any>{}传入可变对象后,组件会向其中注册可调用方法。

Events

事件参数说明
update:validateStatusvalid: boolean编辑行校验状态变化。
add-subparent, row新增子节点后触发。
row-clickElement Plus 原始参数手动模式下的行单击。
page-index-changepageIndex当前页实际变化后发出;脏编辑阻断时不发出。
page-size-changepageSize每页数量实际变化后发出;脏编辑阻断时不发出。
sort-change{ prop, order }排序条件实际变化后发出;脏编辑阻断时不发出。
[command.command]index, row, done, reason?编辑、保存、取消或自定义命令的同名事件。

Exposed

成员说明
tableRef底层 Element Plus 表格实例。
editingRow当前正在编辑的行。
editing当前是否有行处于编辑状态。
dirty当前编辑行是否有业务字段变更。
addRow创建并插入一条新行。
addSubRow向指定父行插入子节点。
startEdit让指定行进入编辑状态。
finishEdit结束编辑并保留当前值。
cancelEdit取消编辑;已有行恢复快照,新增行被移除。
isDirty判断当前编辑行是否有业务字段变更。
validate执行当前表单或编辑行校验。
requestSave校验并请求保存当前编辑行。

emitRegister

注册成员说明
addRow创建并插入一条新行。
addSubRow向指定父行插入子节点。
startEdit让指定行进入编辑状态。
finishEdit结束编辑并保留当前值。
cancelEdit取消编辑;已有行恢复快照,新增行被移除。
isDirty判断当前编辑行是否有业务字段变更。
validate执行当前表单或编辑行校验。
requestSave校验并请求保存当前编辑行。

CaTreeEditTable

启用树形能力的 EditTable 包装组件。

继承说明:除下表属性外,还支持 CaEditTable 的全部属性和事件。

Props

属性模板写法类型默认值说明
addInsideadd-insidebooleantrue是否由组件直接向数据源插入新增行。
addInsidePositionadd-inside-position'beforeFirst' | 'afterLast''beforeFirst'新增行或子节点插入到数组头部还是尾部。
childrenKeychildren-keystring'children'树形数据的子节点字段名。

Events

事件参数说明
inherited-事件与 CaEditTable 一致,组件会透传监听器。

Exposed

成员说明
addRow创建并插入一条新行。
addSubRow向指定父行插入子节点。
startEdit让指定行进入编辑状态。
finishEdit结束编辑并保留当前值。
cancelEdit取消编辑;已有行恢复快照,新增行被移除。
dirty当前编辑行是否有业务字段变更。
isDirty判断当前编辑行是否有业务字段变更。
validate执行当前表单或编辑行校验。
requestSave校验并请求保存当前编辑行。
editTableRefTreeEditTable 内部的 EditTable 实例。

CaReportTable

支持多级表头、动态列和单元格合并的报表表格。

Props

属性模板写法类型默认值说明
loadingloadingbooleanfalse是否显示加载状态。
dataSourcedata-sourceAnyRecord[][]表格数据源;编辑类组件会直接修改数组和行对象,并给编辑行写入 operateType
columnscolumnsReportField[][]表格列配置数组,结构见本文“配置对象”章节。
paginationpaginationPaginationConfig() => ({ pageIndex: 1, pageSize: 10, total: 0 })可变的响应式分页、排序配置;组件会直接修改,不支持 false
addCommandadd-commandCommonCommand-新增按钮命令配置。
customCommandscustom-commandsCommonCommand[][]额外业务命令按钮配置。
getListget-list() => any | Promise<any>-刷新、分页或排序后调用的数据加载函数。
customComponentscustom-componentsCustomComponentMap{}自定义组件映射,key 对应配置中的 componentKey
dynamicFieldsdynamic-fieldsstring[][]当前显示的动态报表字段,可匹配 dataFieldlabel
elementPropselement-propsAnyRecord{}透传给底层 Element Plus 主组件的属性。
emitRegisteremit-registerRecord<string, any>{}传入可变对象后,组件会向其中注册可调用方法。

Events

事件参数说明
selection-changeselection选中行变化。
row-clickElement Plus 原始参数行单击。
page-index-changepageIndex当前页变化。
page-size-changepageSize每页数量变化。
sort-change{ prop, order }排序条件变化。
[command.command]命令相关参数新增、批量或列命令的同名事件。

Exposed

成员说明
tableRef底层 Element Plus 表格实例。
multipleSelection当前选中行数组。
filteredColumns应用动态列过滤后的报表列。

emitRegister

注册成员说明
clearSelection清空表格选中行。
getSelectionRows返回当前选中行数组的副本。

配置对象

以下类型从 packages/types.ts 自动提取。

CommonCommand

字段类型必填说明
textstring按钮或选项显示文本。
commandstring命令名;组件会触发同名事件。
commandType'edit' | 'save' | 'cancel' | 'addSub' | 'link' | string编辑命令语义,例如 edit、save、cancel、addSub、link;自定义命令应显式配置,避免名称推断。
loadingboolean命令加载声明;CommonQuery 和 CommonQueryPlus 仅在组件 loading 同时为 true 时显示加载态。
canKeyDownboolean是否可通过 Enter 触发。
keyCodenumber兼容旧项目的键码;13 表示 Enter。
visibleValidator(subject: any) => boolean返回 false 时隐藏;兼容直接接收 model、row 或 selection。对象 subject 的 model、row、index、operateType 是保留字段。
disableValidator(subject: any) => boolean返回 true 时禁用;兼容直接接收 model、row 或 selection。对象 subject 的 model、row、index、operateType 是保留字段。
elementPropsAnyRecord透传给对应 Element Plus 组件。
extendPropsAnyRecord业务扩展配置。

SelectOption

字段类型必填说明
labelstring显示标签。
valuestring | number | boolean选项值;省略时使用 label 作为值。
disabledboolean是否禁用。
colorstring状态或选项颜色。
childrenSelectOption[]子选项或子报表列。
optionsSelectOption[]选项数组。

FormFieldExtendProps

字段类型必填说明
optionsSelectOption[]选项数组。
formItemPropsAnyRecord透传给 ElFormItem 的属性。
formItemStyleCSSPropertiesElFormItem 的内联样式。
componentKeystringcustom 类型使用的自定义组件 key。
groupTitlestring分组标题。
subTitlestring分组副标题。
groupCommandsCommonCommand[]分组右侧命令。
statusOptionsSelectOption[]状态显示选项。
showInFooterboolean是否把字段放到表单底部区域。
beforeTextstring输入框前置文本。
appendTextstring输入框或文本字段后置文本。
helpTextstring字段帮助提示。
activeTextstring开关为 true 时的查询标签文案。
fromFieldstring区间起始值对应的 model 字段。
toFieldstring区间结束值对应的 model 字段。
tagKeysstring[]删除自定义查询标签时需要清空的字段。
tagFormatter(model: T) => string | false自定义查询标签文案函数。
onChange(model: T, value?: any) => void字段值变化回调。
onSelect(model: T, item: any) => void选择选项后的回调。
onEnter(model: T) => void按 Enter 回调。

FormField

字段类型必填说明
typeFormFieldType字段或列类型。
labelstring显示标签。
dataFieldstring绑定的 model 或 row 字段名。
columnSpannumber占用网格列数。
rulesFormItemRule[]Element Plus 表单校验规则。
visibleValidator(subject: any) => boolean返回 false 时隐藏;兼容直接接收 model、row 或 selection。对象 subject 的 model、row、index、operateType 是保留字段。
disableValidator(subject: any) => boolean返回 true 时禁用;兼容直接接收 model、row 或 selection。对象 subject 的 model、row、index、operateType 是保留字段。
elementPropsAnyRecord透传给对应 Element Plus 组件。
extendPropsFormFieldExtendProps<T>业务扩展配置。

QueryField extends FormField<T>

字段类型必填说明
showType'static' | 'dynamic'静态、动态或展开区显示方式。
showTagboolean是否生成查询条件标签。

FormExtendProps

字段类型必填说明
contentStyleCSSProperties内容区样式。
footerStyleCSSProperties底部区域样式。

PaginationConfig

字段类型必填说明
pageIndexnumber当前页,从 1 开始。
currentPagenumberpageIndex 的兼容别名。
pageSizenumber每页数量。
totalnumber总记录数。
type'default' | 'bigData'字段或列类型。
direction'previous' | 'next'大数据分页方向。
sortFieldstring排序字段。
order'ascending' | 'descending' | nullElement Plus 排序方向。
showPaginationboolean是否强制展示分页器。
pageSizesnumber[]可选每页数量。
elementPropsAnyRecord透传给对应 Element Plus 组件。

DownloadConfig

字段类型必填说明
textstring按钮或选项显示文本。
loadingboolean命令加载声明;CommonQuery 和 CommonQueryPlus 仅在组件 loading 同时为 true 时显示加载态。
elementPropsAnyRecord透传给对应 Element Plus 组件。
optionsCommonCommand[]选项数组。

TableTips

字段类型必填说明
titlestring提示标题。
elementPropsAnyRecord透传给对应 Element Plus 组件。

TableExtendProps

字段类型必填说明
cacheConfigColumnsboolean是否缓存列显示和固定状态。
showRefreshboolean是否展示刷新按钮。
showColumnConfigboolean是否展示列设置。

TableColumnExtendProps

字段类型必填说明
optionsSelectOption[]选项数组。
commandsCommonCommand[]普通状态行命令。
editableCommandsCommonCommand[]编辑状态行命令。
linkCommandstring链接列点击后触发的命令名。
imageCommandstring图片点击后触发的命令名。
imageSizestring图片宽高。
componentKeystringcustom 类型使用的自定义组件 key。
defaultValueany新增行的默认值。
autoFocusboolean进入编辑时是否自动聚焦。
isExpandColumnboolean兼容树形编辑的展开列标识。
formatstring日期格式。
onChange(row: T, value?: any) => void字段值变化回调。
onEnter(index: number, row: T, done: () => void) => void按 Enter 回调。

TableField

字段类型必填说明
typeTableColumnType字段或列类型。
labelstring显示标签。
dataFieldstring绑定的 model 或 row 字段名。
dataTemplate(row: T, index: number) => any单元格显示值函数。
rulesFormItemRule[]Element Plus 表单校验规则。
addableboolean新增行时是否可编辑。
editableboolean已有行编辑时是否可编辑。
elementPropsAnyRecord透传给对应 Element Plus 组件。
extendPropsTableColumnExtendProps<T>业务扩展配置。

ReportField extends TableField<T>

字段类型必填说明
reportType'title' | 'data'报表标题列或数据列。
showType'static' | 'dynamic'静态、动态或展开区显示方式。
childrenReportField<T>[]子选项或子报表列。

公共联合类型

OperateType

'add' \| 'edit' \| 'view'

FormFieldType

\| 'default' \| 'input' \| 'text' \| 'status' \| 'autocomplete' \| 'autoComplete' \| 'inputNumber' \| 'textArea' \| 'select' \| 'multiSelect' \| 'groupedSelect' \| 'cascader' \| 'treeSelect' \| 'switch' \| 'radioGroup' \| 'radioButtonGroup' \| 'checkboxGroup' \| 'time' \| 'timeSelect' \| 'timeRange' \| 'date' \| 'dateRange' \| 'datetime' \| 'dateTimeRange' \| 'month' \| 'monthRange' \| 'year' \| 'yearRange' \| 'splitDateRange' \| 'inputNumberRange' \| 'groupTitle' \| 'hr' \| 'space' \| 'custom' \| 'upload' \| 'avatarUploader' \| 'complexInput'

TableColumnType

\| 'default' \| 'selection' \| 'index' \| 'link' \| 'custom' \| 'commands' \| 'status' \| 'dot-status' \| 'keyToValue' \| 'multiKeyToValue' \| 'expand' \| 'date' \| 'image' \| 'input' \| 'inputNumber' \| 'select' \| 'switch' \| 'dateTimeRange' \| 'dateRange' \| 'monthRange' \| 'month' \| 'year' \| 'yearRange' \| 'datetime'