Skip to content

fpi-el-form 组件属性:

1.基本属性

同原生element-plus form 属性 (与官方文档相同)

2.扩展属性:

参数说明类型默认值
formOptionform配置项属性,对应每一条form-item组件,以下会详细讲解Array[]
formBtnOption表单按钮配置项,对应生成表但末尾的按钮操作,以下会详细讲解btnOptionTs[]
btnBoxStyle按钮盒子样式Object--
modelValue表单v-model 对象,对应整个form关联变量对象Object--
labelWidth标签的长度,例如 '50px'。 作为 Form 直接子元素的 form-item 会继承该值。 可以使用 auto。String'120px'
isText是否是文本形式表单,用于切换编辑和查看模式true/falsefalse
isShowBtnBox 0.7.5是否显示按钮true/falsetrue
trigger 0.7.5设置整个form 的语法糖默认的校验触发时机change/blurchange

formBtnOption

参数说明类型默认值
type对应el-button类型'primary'/'success'/'warning'/'danger'/'info'/'text'--
label按钮内部文字string--
size按钮大小'large'/'default'/'small'--
click点击事件Function /'submit'/'cancel'--

事件

事件名说明参数
submit表单提交默认方法--
cancel表单取消默认方法--

方法

方法名说明参数
getFormData获取表单obj变量--
getForm获取 form dom--
validate对整个表单的内容进行验证。 接收一个回调函数,或返回 Promise。--
validateField验证具体的某个字段。--
resetFields重置该表单项,将其值重置为初始值,并移除校验结果。--
scrollToField滚动到指定的字段--
clearValidate清理某个字段的表单验证信息--
refInput获取内部input dom节点,对应input节点名称为设置的key值,formRef.refInput[key]--

formOption数组内部对象可选值 属性详解

1.基本属性

参数说明类型默认值
prop对应v-model对象内的key值,也就是变量名称。支持多级,如:obj.name, 0.keystring--
label输入框标题stringstring
labelWidth标签宽度,例如 '50px'。 可以使用 auto。string/number--
required是否为必填项,如不设置,则会根据校验规则确认booleanfalse
rules自定义规则,内部定义一些语法糖,可以方便使用,下面会详细解释Array/staticRulesKeyTs/Object--
error表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息。string--
inlineMessage是否显示校验错误信息。booleantrue
showMessage是否在行内显示校验信息。booleanfalse
size用于控制该表单域下组件的默认尺寸'large'/'default'/'small''default'
for和原生标签相同能力string--
validateStatus校验的状态''/'error'/'validating'/'success'--

2.扩展属性:

参数说明类型默认值
type按钮类型fromTypeTs--
value默认值any--
slot是否使用form插槽 true 时 此form-item 内部的输入框会可以由外部样式插入, 详细插槽见下方使用boolean--
labelSlot是否使用label插槽 true 时 此form-item 内部的label会可以由外部样式插入boolean--
defaultSelectselect类型 默认选中的索引number--
itemRulesform item单独设置的rules 这个于rules属性重复后期升级可能会用到Array--
option选择项列表Array--
inputWidth输入框盒子大小string--
textStyle 0.7.5当type: 'text' 或者 form 绑定 is-text时设置样式Object--
inputProps对应直接绑定在input上的属性,详细见下inputPropsTs--
col内部嵌套 对应element的col组件formItemTs[]--
spancol列内部属性 对应传的数组代表占整行的百分比 24是100% 12是50% 以此类推number--
guttercol列内部属性 对应element的row组建的间隔属性number--
vHtmlcol列内部属性 自定义dom内容 当key不传的时候使用() => string--
isLine是否是分割线boolean--
lineLabel分割线文字string--
lineLabelStyle分割线文字样式record--
lineStyle分割线样式record--

按钮类型

fromTypeTs =
    | 'time-picker' // 时间选择 el-time-picker
    | 'date-picker' // 日期选择 el-date-picker
    | 'select' // 下拉选择 el-select
    | 'input' // 输入框 el-input
    | 'checkbox'// 复选 el-checkbox
    | 'radio'// 单选 el-radio
    | 'textarea'// 多行输入 el-textarea
    | 'switch'// 开关 el-switch
    | 'dom'// 自定义渲染dom
    | 'input-number'// 计数器 el-input-number
fromTypeTs =
    | 'time-picker' // 时间选择 el-time-picker
    | 'date-picker' // 日期选择 el-date-picker
    | 'select' // 下拉选择 el-select
    | 'input' // 输入框 el-input
    | 'checkbox'// 复选 el-checkbox
    | 'radio'// 单选 el-radio
    | 'textarea'// 多行输入 el-textarea
    | 'switch'// 开关 el-switch
    | 'dom'// 自定义渲染dom
    | 'input-number'// 计数器 el-input-number

rule语法糖

trigger form传入此属性用于设置整个form 的 语法糖默认的校验触发时机 change| blur

'email' 邮箱验证 { type: 'email',required: true, message: '请输入正确的邮箱格式', trigger: 'change' },
'date' 日期验证 { required: true, message: '请选择时间', trigger: 'change' },
'select' 单选验证 { required: true, message: '请选择', trigger: 'change' },
'unNull' 不为空 { required: true, message: '不能为空', trigger: 'change' }
'number' 数字 { type: 'number', message: '请输入数字值', trigger: 'change' },
'phone' 手机号验证 { pattern: /^1[3456789]\d{9}$/, message: '手机号格式不正确' },
'checkbox' 复选验证 { type: 'array', required: true, message: '请至少选择一项', trigger: 'change' } |

--------------------------------------------

string // 以上可以任意逗号分割组合 

--------------------------------------------

{
   email: '自定义message',
   unNull: '自定义message',
   .........
}
'email' 邮箱验证 { type: 'email',required: true, message: '请输入正确的邮箱格式', trigger: 'change' },
'date' 日期验证 { required: true, message: '请选择时间', trigger: 'change' },
'select' 单选验证 { required: true, message: '请选择', trigger: 'change' },
'unNull' 不为空 { required: true, message: '不能为空', trigger: 'change' }
'number' 数字 { type: 'number', message: '请输入数字值', trigger: 'change' },
'phone' 手机号验证 { pattern: /^1[3456789]\d{9}$/, message: '手机号格式不正确' },
'checkbox' 复选验证 { type: 'array', required: true, message: '请至少选择一项', trigger: 'change' } |

--------------------------------------------

string // 以上可以任意逗号分割组合 

--------------------------------------------

{
   email: '自定义message',
   unNull: '自定义message',
   .........
}

控制和设置内部输入框

TIP

  1. 对于内部没有二级嵌套的组件,如input,switch,time-picker, input-number,date-picker,其会继承全部 inputProps内的属性。
  2. 对于有二级的组件的,比如 select对应有:el-selectel-option,则el-select会继承全部 inputProps内的属性,而每一个el-option对应option内的每个对象,其会全部继承其属性。其他还有radio,check,都只需要设置 inputPropsoption属性即可。
  3. 所有的内部输入框事件也都是继承在inputProps内,只需要在事件名称改为驼峰前加on即可,比如:onChange: (val) => void 0
  4. 使用输入节点方法: 需要获取输入节点的dom,所以需要先获取fpiElForm实例,然后获取refInput属性,其包含所有的form内部节点的dom对象,相应的节点就是该节点对应的props的值,也就是: fpiElForm.refInput[props]
  5. 所有选择框都封装为option 内显示文字为 label ,值为 value, 选择列表单独显示文字:selectLabel
  6. optionExpr 0.7.6:格式inputProps: { optionExpr: { value?: string, label?: string, selectLabel?: string } }。可以设置修改 option 内的变量在对象内的 key 名称。

示例:

const tableOption = [
    {
        type: 'checkbox',
        prop: 'data1',
        label: 'Checkbox',
        option: [
            {   
                value: '1'
                label: 'label'
                onClick: val => console.log('onClick')
            }
        ],
        inputProps: {
            clearable: true,
            placeholder: '测试',
            size: 'small',
            onChange: val => console.log('onChange')
        }
    }
]
const tableOption = [
    {
        type: 'checkbox',
        prop: 'data1',
        label: 'Checkbox',
        option: [
            {   
                value: '1'
                label: 'label'
                onClick: val => console.log('onClick')
            }
        ],
        inputProps: {
            clearable: true,
            placeholder: '测试',
            size: 'small',
            onChange: val => console.log('onChange')
        }
    }
]

inputPropsTs

1.input

所有inputProps内的属性都会传递到 input 上。

1.1 input 属性

所有el-input属性都继承了,以下只介绍修改或者扩展属性

参数说明类型默认值
inputLimit输入校验,方法时,如参是输入,出参为过滤后的参数,InputLimitTs为定义好的语法糖function/InputLimitTs--
prefixel-input插槽VNode--
suffixel-input插槽VNode--
prefixIconel-input插槽VNode--
suffixIconel-input插槽VNode--
prependel-input插槽VNode--
appendel-input插槽VNode--
isFocus是否默认获取焦点boolean--

1.2 InputLimit

设置inputLimit 内的值为以下字符串可以对输入进行限制,当然也支持回调函数形式,进行自定义设置。

'number' // 数字
| 'int' // 整数
| 'positive-int' // 正整数
| 'negative-int' // 负数整数
| 'positive-number' // 正数
| 'negative-number' // 负数

or 

function (val) => val
'number' // 数字
| 'int' // 整数
| 'positive-int' // 正整数
| 'negative-int' // 负数整数
| 'positive-number' // 正数
| 'negative-number' // 负数

or 

function (val) => val

1.3 事件

支持全部el-input事件,只需要改为驼峰再其前面加上on, 就可以。

事件名说明类型
onBlur当选择器的输入框失去焦点时触发(event: FocusEvent) => void
onFocus当选择器的输入框获得焦点时触发(event: FocusEvent) => void
onChange仅当 modelValue 改变时,当输入框失去焦点或用户按Enter时触发`(value: string
onInput在 Input 值改变时触发`(value: string
onClear在点击由 clearable 属性生成的清空按钮时触发() => void

2 select

所有inputProps内的属性都会传递到 el-select 上,支持全部el-select属性,事件只需在原事件名称改为驼峰加 on即可。
el-option 属性只需在 option 内每个对象设置相应的值就可以绑定到相应的 el-option上,其支持全部 el-option 属性。
详情请参考 element-plus 原文档el-select

3 Checkbox

  1. 所有inputProps内的属性都会传递到 checkboxGroup 上,所有 option内的属性都会传递到 Checkbox 或者 CheckboxButton 上。
  2. 支持全部 Checkbox 全部事件,只需在其option 内对应的对象内设置事件名称的属性,前面加上on就可以。
  3. 开启CheckboxButton模式只需将inputProps内的type属性设置为type: 'button' 即可。
  4. option 内显示文字为 label ,值为 value
    详情请参考 element-plus 原文档 checkbox

4 input-number (计数器)

所有inputProps内的属性都会传递到 input-number 上,事件只需在原事件名称改为驼峰加 on即可。
详情请参考 element-plus 原文档 input-number

5 DatePicker

所有inputProps内的属性都会传递到 DatePicker 上,事件只需在原事件名称改为驼峰加 on即可。
详情请参考 element-plus 原文档 DatePicker, datetime-picker

6 radio

所有inputProps内的属性都会传递到 el-radio-group 上,支持全部el-radio-group属性,事件只需在原事件名称改为驼峰加 on即可。
el-radio and el-radio-button 属性只需在 option 内每个对象设置相应的值就可以绑定到相应的 el-radio 或者 el-radio-button 上,其支持全部 el-radio 属性。
开启el-radio-button模式只需将inputProps内的type属性设置为type: 'button' 即可。
详情请参考 element-plus 原文档el-radio

7 switch

所有inputProps内的属性都会传递到 el-switch 上,支持全部el-switch属性,事件只需在原事件名称加 on即可。
详情请参考 element-plus 原文档el-switch

8 TimePicker

所有inputProps内的属性都会传递到 el-TimePicker 上,支持全部el-TimePicker属性,事件只需在原事件名称改为驼峰加 on即可。
详情请参考 element-plus 原文档el-TimePicker

btnOptionTs配置项(直接绑定在form上)

btnOptionTs (object[]),内部的每一个对象代表着一个 el-button, 其会继承全部对象内的属性,el-button
事件只需要在原事件名称改为驼峰前加一个 on 即可, 例如: @click => onClick, @dblclick => ondblclick。 默认如下:onClick有默认封装好 submit and cancel事件,前者会自动校验表单,成功才会回调,后者会重置表单为最初值,清除校验(如果有设置value会恢复到value值)。
所有onClick事件都会默认传入两个参数,第一个是fpiElForm实例本身,第二个是点击时间原参数Event,其他方法维持原事件参数。

{
    type: 'primary',
    label: '提交',
    onClick: 'submit'
},
{
    label: '取消',
    onClick: 'cancel'
}
{
    type: 'primary',
    label: '提交',
    onClick: 'submit'
},
{
    label: '取消',
    onClick: 'cancel'
}

form Scoped Slot

name说明
default 0.8.15默认插槽,会放在按钮和option输入列表中间,占满整行
${slotLine} 0.8.16设置 slotLine: 'name' 定义的名称就是此option会为外部预留一个具名插槽,用于自定义这一整行,插槽名称就是 slotLine的值,记得不要和其他的prop 值重复哦!插槽入参为
${prop}自定义输入框的内容,需要对应配置像设置 slot 参数为true,插槽入参为
${prop}-label自定义输入框文案的内容, 需要对应配置像设置 labelSlot 参数为true. 插槽入参为

贡献者:

水产品-马佳辉

fpi-component