Skip to content

Form 表单

表单组件继承自 ElForm 组件,基础用法请参考 Element Plus 官方文档。

在原有表单基础上增加了以下功能:

  1. 表单项定义可以由数据定义,此时数据将自动双向绑定
  2. 表单验证得到增强,参考 Validate 数据验证
  3. 集成了自定义表单组件,更方便使用
  4. 表单会自动根据设备宽度动态调整布局
  5. 表单数据在加载时自带骨架屏
  6. 所有附件上传服务器的逻辑调整至表单提交且表单验证通过后统一上传

基础用法

render 自定义渲染项

slots 定义组件插槽

loading 加载中

表单数据未加载完成前,展示骨架屏

slotName 声明插槽完全定制表单项

slotName 属性声明插槽 name,这样可以通过具名插槽来完全定制表单项

jsx 风格绑定事件

在模板中我们一般使用 @事件名 来绑定事件, 表单组件基于 jsx 动态实现,所以绑定事件应调整为 on事件名 的函数名来绑定事件, 如 onChange

colspan 定制跨列规则

form的 colspan 属性定义表单的col跨度,采用24分隔法,表单项的 colspan 属性用户覆盖form配置,cols表示跨表单项数,通过组合使用灵活实现跨列需求

comment 备注信息

满足对表单项有特殊说明的需求,支持 VNode 定义备注内容

Native 特殊表单项类型

有时候,有些表单项可能只是要展示一些内容而已,用插槽自定义来实现又比较麻烦,所以增加此类型方便使用

$param 属性名冲突时的处理 v1.6.0

有时候,表单列的属性定义可能和某些表单组件的属性名重合,导致无法单独定义表单组件的属性值,我们可以使用 $param 属性做单独配置, 通过 $param 配置表单组件属性时,优先级更高。

Form API

Form 属性

属性名描述类型默认值
handleType表单处理类型add | edit | detail | string'add'
colspanel-col默认跨度number
model表单数据对象object必填
columns表单项定义 CommonFormColumnArray
labelWidth表单标题宽度string | number
loading加载状态,为true时展示骨架屏boolean

Form Slots

插槽名详情类型
string通过slotName 动态指定插槽名

Form Exposes

方法名详情类型
submit提交表单,验证并上传附件Function

CommonFormColumn 表单项

仅列出本项目特有字段说明,对应表单组件的的属性文档,请查阅 Element Plus 文档

字段字段描述类型
label标题名称string
type表单类型,参考下方表单类型对照表string
hidden隐藏此列boolean
prop绑定表单的属性string
prop2表单属性2 ,'daterange', 'datetimerange', 'monthrange' 可能会使用string
rules验证规则,参考 Validate 数据验证ValidRules
render自定义渲染,参数为默认渲染的vNodeFunction
comment疑问备注string | VNode
required显示必填星号boolean
slots表单项插槽SlotsObj
slotName允许用户按照自己的slotName插槽定制string
optionParam定制 'radio-group''checkbox-group' 的选项参数object
itemListtype = 'select' | 'radio-group' | 'checkbox-group' 时的枚举选项CommonItemList
labelKey枚举选项的 labelKey,默认为 labelstring
valueKey枚举选项的 valueKey,默认为 valuestring
$param v1.6.0当column属性和表单组件属性名冲突时,可通过此属性给表单组件做覆盖配置object

Form Type 对照表

type值对应组件说明
'text' | 'textarea' | 'password' | 'number' | undefinedElInput
'year' | 'month' | 'date' | 'dates' | 'datetime' | 'week' | 'datetimerange' | 'daterange' | 'monthrange'ElDatePiker
'autocomplete'ElAutocomplete
'cascader'ElCascader
'checkbox'ElCheckbox
'checkbox-button'ElCheckboxButton
'color-picker'ElColorPicker
'input-number'ElInputNumber
'radio'ElRadio
'radio-button'ElRadioButton
'rate'ElRate
'select'ElSelect
'select-v2'ElSelectV2
'slider'ElSlider
'switch'ElSwitch
'time-picker'ElTimePicker
'time-select'ElTimeSelect
'upload'ElUpload
'radio-group'ElRadioGroup
'checkbox-group'ElCheckboxGroup
'tree-select' v1.6.0ElTreeSelect
'color-picker-panel' v1.6.0ElColorPickerPanel
'date-picker-panel' v1.6.0ElDatePickerPanel
'input-tag' v1.6.0ElInputTag
'mention' v1.6.0ElMention
'icon-select'MIconSelect
'upload-img' | 'upload-file'MUpload
'span'| 'div'| 'p'| 'a'| 'i'MNative表单的值将作为这些原生标签的 innerHtml 插入展示
'blank'MNative将此表单项将显示为空