这是一个定义表单结构的代码,其中包含了多个表单项,每个表单项都有一个 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录