Skip to content

Form 表单 ​

ElFormPro 的诞生是为了减少表单中的重复代码。并通过 schema 帮助我们快速地开发一个表单。

基础用法 ​

通过 schema 快速生成表单

自定义插槽 ​

通过 key、slot 和 fieldProps.slots 对应插槽名称

自定义 label 和 type ​

ElFormItem 的 label 和 type 支持 h 函数渲染。

Rules 校验 ​

使用 rules 配置字段校验规则来验证用户的输入是否符合规范。

API ​

ElFormPro 在 Element Plus 的 Form 上进行了一层封装,支持了一些预设,并且封装了一些行为。这里只列出与 Element Plus Form 不同和部分原始的 API。

Props ​

属性说明类型默认值
schema表单配置FormProSchemaItem[]-
model表单数据Record<string, any>-
formConfig全局配置FormProConfig-

FormProConfig ​

属性说明类型默认值
labelPosition标签位置;支持字符串或响应式对象,对象配置见下方string / object{ base: 'top', md: 'right' }
buttonAlign底部按钮区域水平对齐方式string'right'
buttons提交、重置、取消按钮配置FormProButtons-
row分栏间隔object{ gutter: 18 }
col栅格列配置number / FormProColProps24
actionCol操作按钮栅格列配置number / FormProColProps-

labelPosition 对象配置 ​

labelPosition 传入对象时,可按断点配置标签位置;未命中的断点会沿用前一个有效值,base 作为基础回退值。

属性说明类型
base基础标签位置,所有断点未配置时使用string
xs视口宽度 < 768px 时使用string
sm视口宽度 ≥ 768px 时使用string
md视口宽度 ≥ 992px 时使用string
lg视口宽度 ≥ 1200px 时使用string
xl视口宽度 ≥ 1920px 时使用string

更多属性请参考 Element Plus Form API

FormProSchemaItem ​

属性说明类型默认值
key字段名,唯一性;组合字段容器可省略string-
label标签文本string / Function-
type字段组件类型;tree 需 Element Plus 2.1.8+,mention 需 Element Plus 2.8.0+,inputTag 需 Element Plus 2.9.0+enum / Componentinput
formItemProps透传给 ElFormItem 的属性object-
fieldProps透传给 type 组件的属性object-
defaultValue字段初始值any-
col栅格列配置number / FormProColProps24
rules校验规则FormItemRule[]-
hidden是否隐藏booleanfalse
slot自定义插槽string-
children子字段配置,用于组合字段FormProSchemaItem[]-
separator子字段之间显示的分隔符string''

更多属性请参考 Element Plus FormItem API

布局配置 ​

通过 formConfig 设置表单与栅格布局:

ts
const formConfig: FormProConfig = {
  labelPosition: 'right',
  labelWidth: 90,
  buttonAlign: 'right',
  row: { gutter: 18 },
  col: 8,
  actionCol: 12,
  buttons: {
    submit: {
      text: '查询',
      type: 'primary',
    },
    reset: {
      text: '重置',
    },
  },
}

col、actionCol 和 schema 项的 col 都支持数字简写;需要偏移或响应式配置时仍使用对象形式:

ts
const formConfig: FormProConfig = {
  col: 12,
  actionCol: { span: 6, offset: 18 },
}

const schema = [
  { key: 'name', label: '名称', col: { span: 8, md: 6 } },
]

更多格栅布局配置请参考 Element Plus Layout

按钮配置 ​

buttons 用来配置表单底部的提交、重置和取消按钮。默认显示“提交”和“重置”

ts
const formConfig: FormProConfig = {
  buttons: {
    submit: { text: '搜索', type: 'primary' },
    reset: { text: '清空' },
    cancel: { text: '返回' },
  },
}

隐藏按钮时传 false

ts
const formConfig: FormProConfig = {
  buttons: {
    submit: false,
    reset: false,
  },
}

需要完全自定义按钮区域时,使用 buttons 插槽

vue
<template>
  <ElFormPro :schema="schema">
    <template #buttons>
      <ElButton @click="save">保存</ElButton>
      <ElButton @click="close">关闭</ElButton>
    </template>
  </ElFormPro>
</template>

更多按钮 API 配置请参考 Element Plus Button

Form Exposes ​

方法名说明类型
validate校验整个表单Function
validateField校验指定字段Function
resetFields重置字段与校验状态Function
clearValidate清除校验结果Function
scrollToError滚动到首个错误字段Function
getValues获取当前表单值Function
setState更新表单配置Function