Vue 表单结构代码示例:使用 FormSchema 定义表单项
这是一个定义表单结构的代码,其中包含了多个表单项,每个表单项都有一个 label(标签)、field(字段名)、component(组件类型)等属性。其中,label 用于展示在表单项前面的文本,field 用于标识该表单项对应的字段名,component 则指定了该表单项使用的组件类型。
除此之外,还有一些表单项定义了 dynamicRules(动态校验规则)属性,该属性的值是一个函数,用于在表单项值发生变化时动态生成校验规则。例如,当状态('status')表单项的值发生变化时,动态规则函数会返回一个必填校验规则,要求用户必须填写状态信息。
在定义表单结构时,还可以为某些表单项指定 componentProps(组件属性)属性,该属性的值是一个对象,包含了组件所需要的一些属性和配置。例如,定时关('timingOff')和定时开('timingOpen')表单项使用的是 DatePicker 组件,因此需要指定 componentProps 属性来配置日期格式和时间显示等属性。
export const formSchema: FormSchema[] = [
{
label: '设备编号',
field: 'deviceId',
component: 'Input',
dynamicRules: ({model,schema}) => {
return [
{ required: true, message: '请输入设备编号!'},
];
},
},
{
label: '品牌',
field: 'brand',
component: 'Input',
dynamicRules: ({model,schema}) => {
return [
{ required: true, message: '请输入品牌!'},
];
},
},
{
label: '售价',
field: 'price',
component: 'Input',
dynamicRules: ({model,schema}) => {
return [
{ required: true, message: '请输入售价!'},
];
},
},
{
label: '温度',
field: 'temperature',
component: 'InputNumber',
},
{
label: '状态',
field: 'status',
component: 'JSwitch',
componentProps:{
options:["open","close"]
},
dynamicRules: ({model,schema}) => {
return [
{ required: true, message: '请输入状态!'},
];
},
},
{
label: '模式',
field: 'model',
component: 'JDictSelectTag',
componentProps:{
dictCode:"device_model"
},
},
{
label: '风力',
field: 'windForce',
component: 'JDictSelectTag',
componentProps:{
dictCode:"wind_force"
},
},
{
label: '千瓦时',
field: 'power',
component: 'InputNumber',
dynamicRules: ({model,schema}) => {
return [
{ required: true, message: '请输入千瓦时!'},
];
},
},
{
label: '定时关',
field: 'timingOff',
component: 'DatePicker',
componentProps: {
showTime: true,
valueFormat: 'YYYY-MM-DD HH:mm:ss'
},
},
{
label: '定时开',
field: 'timingOpen',
component: 'DatePicker',
componentProps: {
showTime: true,
valueFormat: 'YYYY-MM-DD HH:mm:ss'
},
},
];
原文地址: https://www.cveoy.top/t/topic/kAuH 著作权归作者所有。请勿转载和采集!