表单参数

属性说明类型默认
loadKey是否自动绑定 select/checkboxt 等标签的数据源booltrue
labelWidth左边标签宽度number100
labelPosition表单标签显示位置stringtop/left
formFields表单字段存的值,如:{name:'admin',age:18}json
formRules表单字段配置信息(注意formRules是二维数组)array

formRules表单字段配置信息

属性说明类型默认
[[{表单字段 formRules 的参数配置说明
title标题名称string
field字段,与表单字段必须相同string
dataKey数据源字典编号(菜单->系统->下拉框绑定中的字典编号)string
data数据源,可以手动绑定格式[{key:1,value:'是',hidden:false,disabled:false}],(hidden 下拉框选项是否隐藏,disabled 下拉框选项是否禁用),也可以自动绑定array[]
render支持 vue 原生 render 处理,见上面表单示例具体使用render: (h) => {return <div>显示内容</div>} 见上面【完整表单配置】function
readonly是否只读boolfalse
labelRender自定义标题及事件 labelRender: (h, {}) => {return <div>显示内容</div>}) 见上面【完整表单配置】
labelStyle自定义标题样式,labelStyle: "color:red;font-weight:700" 见上面【完整表单配置】
label是否只读,并且内容显示为纯文本boolfalse
inputStyle输入框或者只读的自定义样式,inputStyle: { color: "#f50000" }, //设置输入框样式boolfalse
hidden隐藏字段配置bool
required是否必填boolfalse
format日期自定义显示的格式,如:YYYY-MM-DDstring
filter启用搜索,只对 select/selectList 生效,默认下拉框数据源超出 10 个开启搜索 boolfalse
type渲染的标签类型,可选值,mail、text、textarea、img、checkbox、number、decimal、date、datetime、phone、switch、select、selectList(多选下拉框)、label(纯文本显示,selectTable、selectTree、treeSelect(树形级联))、cascaderstringtext
placeholder输入框占位提示字符string
range显示两个输入框boolfalse
min字段如果是数字,会自动验证数字最大、小值;如果是字符串, 会验证字符长度,如果日期,会限制日期可选范围) number
max最大值,操作与 min 相同number
validator对标签的值进行自定义验证,如: validator: (rule, val, callback)=> { if (val != '234') { return '必须输入234'; } return ''; }function
extra添加额外标签: extra: {//样式 style: "color:red",//显示图标 icon: "ios-search", //显示文本 text: "点击可触发事件",//触发事件 click: item =\> {}} 见上面【完整表单配置】string
minRowstextarea 标签最小高度number2
maxRowstextarea 标签最大高度number10
itemStyle指定表单宽度(表单字段占的宽度)itemStyle :'width:300px'string
colSize指定表单宽度(表单字段占的宽度),可选值:12,8,6,如果是 12 标签会占 100%宽度number
onKeyPress输入事件: 只对 input/textarea/decimal 数字输入框 生效,onKeyPress:($event)=> { if ($event.keyCode == 13) {} }function
onChange下拉框、日期选择事件,仅对 select、date、datetime、checkbox、switch、级联组件生效; onChange: (value, data,isClear) => {}function
blur表单失去焦点事件blur:()=>{}function
focus表单获取焦点事件focus:()=>{}function
}]]表单字段 formRules 的参数配置说明
数据槽 slot可以在表单的第一行第前使用或最后一行

表单方法(校验、重置、清除校验)

vue3代码
<template>
  <vol-form ref="formRef" :formFields="formFields" :formRules="formRules">
    <el-button @click="validate">获取表单</el-button>
    <el-button @click="reset">重置表单</el-button>
    <el-button @click="clear">清除校验提示</el-button>
  </vol-form>
</template>
<script lang="jsx" setup>
import { ref, reactive, getCurrentInstance } from 'vue'
const { proxy } = getCurrentInstance()
const formRef = ref(null)
//表单字段值
const formFields = reactive({ price: null })
//表单配置formRules数据格式是二维数组,表示每个标签所在位置:[[{},{}]]
const formRules = reactive([[{ type: 'decimal', title: '单价', required: true, field: 'price' }]])
//表单校验
const validate = () => {
  formRef.value.validate(() => {
    proxy.$message.success('校验成功')
  })
}
//重置表单,重置时可指定重置的值,如果没有指定重置的值,默认全部清空
const reset = () => {
  let data = { decimalVal: 100, numberVal: 100 }
  formRef.value.formRef.reset(data)
  proxy.$message.error('表单已重置')
}
//清除校验提示信息
const clear = () => {
  formRef.value.$refs.volform.clearValidate()
}
</script>