Skip to content

FormDrawer

FormDrawer 是配置驱动的表单抽屉,支持 add / edit / view 三种模式、声明式 dependencies 联动、字段级 rules 校验。

add 模式

新填表单,所有字段可编辑。

edit 模式

预填值,字段可编辑。

view 模式

只读,footer 仅显示「关闭」。

声明式联动

dependencies 配置字段显隐。

API

Props

属性类型默认值说明
modelValueboolean是否显示抽屉,v-model(必填)
titlestring抽屉标题(必填)
formDataRecord<string, unknown>表单数据对象,字段值双向引用(必填)
fieldsFormField[]字段定义(必填)
rulesRecord<string, FormFieldRule[]>el-form 级校验规则
loadingbooleanfalse提交 loading,控制确认按钮与字段禁用
widthstring'500px'抽屉宽度
mode'add' | 'edit' | 'view''add'抽屉模式;view 时全字段禁用且 footer 仅显示「关闭」

Events

事件名参数说明
update:modelValue(value: boolean)抽屉显隐变化
submit(data: Record<string, unknown>)点击「确认」且表单校验通过后触发,dataformData 的浅拷贝

Slots

名称说明
field-<prop>自定义某个字段的控件,<prop> 对应 FormField.prop;作用域参数:field: FormField

TIP

组件 footer 由内部根据 mode 渲染(view 仅「关闭」,其余为「取消」「确认」),未对外暴露 footer 插槽。

暴露方法

方法签名说明
validateField(prop: string) => Promise<void>手动触发某字段校验,用于联动后重校验关联字段

FormField 类型

字段类型默认说明
propstring字段名(必填)
labelstring标签(必填)
typeFormFieldType控件类型(必填),见下
optionsFormFieldOption[]select / radio 的选项
treeDataTreeNodeData[]treeSelect 的树形数据
treeProps{ label: string; children: string; disabled?: string }treeSelect 的节点 props
placeholderstring占位文案,默认走 i18n
defaultunknown字段默认值
spannumber24el-col span
disabledbooleanfalse是否禁用
dependenciesFormFieldDependency[]声明式联动;所有 dependency.show 返回 true 时字段才可见
rulesFormFieldRule[]字段级校验规则,透传到 el-form-item

FormFieldType 取值:input / textarea / number / select / radio / checkbox / switch / date / password / treeSelect / cascader

FormFieldDependency 类型

字段类型说明
triggerstring触发字段名
show(values: Record<string, unknown>, ctx: { mode: FormDrawerMode }) => boolean返回 true 时字段可见,valuesformData

基于 MIT 协议发布