uniapp多级动态表单规则

最近有个新的业务、主要涉及多层级的动态表单提交,其中又涉及很多类型,踩了很多坑之后,终于研发完毕。

传来的数据格式处理

传来的数据格式涉及比较多的内容,以下举例一个,涉及到规则的填写
规则写法有两种,一种是直接在表单里添加规则,一种是在字段中添加规则

表单里规则添加,以下是第一级的写法

我这里字段的定义是因为有其他数据要一并提交,可按照自己需求来
1、字段里label-width我设定的是300,是因为会有比较长的字段。根据返回文本,自行调节
2、:name字段主要是为了寻找key值,这个必填,
dynamicLists为数组,index为数组下标位置,value


<uni-forms ref="dynamicForm" :modelValue="dynamicFormData" label-position="top" label-width="300px">
    <view v-for="(item, index) in dynamicFormData.dynamicLists" :key="item.inspectionItemId">
      <uni-forms-item :label="index+1+'.'+ide+1+'、'+ite.itemName"  label-width="100%"
		:rules="[{required: true,errorMessage: '请填写'}]"
		:name="['dynamicLists',index,'value']" required>
		<uni-data-checkbox  v-model="dynamicFormData.dynamicLists[index].value"
         :localdata="ite.itemValueList" />										
	   </uni-forms-item>
    </view>
</uni-forms>
<script>
export default {
   
   data(){
   
     return{
   
         dynamicFormData:{
   
           dynamicLists:[],
         }
     }
   }
}
</script>

第二种规则里填写

首先要对数据处理
在数据里添加rules规则

rules: [{
   
		'required': true,
		errorMessage: "请填写" + this.detail[i].itemName//这里写你想校验的内容
	}],
	

this.detail是我从后台返回的数据,其中内容做了处理。按照自己的值编辑

this.dynamicFormData.dynamicLists.push({
   
	label: this.detail[i].itemName,
	value: "",
	itemType: this.detail[i].itemType,
	rules: [{
   
		'required': true,
		errorMessage: "请填写" + this.detail[i].itemName
	}],						
	inspectionId: this.detail[i].inspectionId, 
	itemValueList: itemValueList,
	children: children,
	includeImage: this.detail[i].includeImage,
})
<uni-forms-item :label="index+1+'.'+ide+1+'、'+ite.itemName"  label-width="100%"
		:rules="item.rules"
		:name="['dynamicLists',index,'value']" required>
		<uni-data-checkbox  v-model="dynamicFormData.dynamicLists[index].value"
         :localdata="ite.itemValueList" />										
	   </uni-forms-item>

子级的表单编写

子级的表单与父级一致,主要添加了以下字段

父级表单提交

 <uni-forms-item :label="index+1+'.'+ide+1+'、'+ite.itemName"  label-width="100%"
		:rules="[{required: true,errorMessage: '请填写'}]"
		:name="['dynamicLists',index,'value']" required>
		<uni-data-checkbox  v-model="dynamicFormData.dynamicLists[index].value"
         :localdata="ite.itemValueList" />										
	   </uni-forms-item>

子级表单填写就是在父级字段加了children,ide

<uni-forms-item :label="index+1+'.'+ide+1+'、'+ite.itemName" required
		:rules="ite.rules"
		:name="['dynamicLists',index,'children',ide,'value']">
	<uni-easyinput class="easyinput" trim="all" :autoHeight="true" 
       maxlength="500"type="textarea"
	   v-model="dynamicFormData.dynamicLists[index].children[ide].value"
		placeholder="请输入内容" />
</uni-forms-item>

编辑完毕
图例1、验证不通过,未填写
在这里插入图片描述
图例2、填写数据、校验规则消失
在这里插入图片描述

相关推荐

  1. uniapp验证

    2023-12-30 08:38:02       74 阅读
  2. vue生成动态

    2023-12-30 08:38:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 08:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 08:38:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 08:38:02       82 阅读
  4. Python语言-面向对象

    2023-12-30 08:38:02       91 阅读

热门阅读

  1. python-表格读取-xlrd

    2023-12-30 08:38:02       56 阅读
  2. Kubernetes 100个常用命令

    2023-12-30 08:38:02       42 阅读
  3. Conda所有的指令说明

    2023-12-30 08:38:02       52 阅读
  4. 统计计算quark代币的数量和总价值

    2023-12-30 08:38:02       59 阅读
  5. conda移除环境

    2023-12-30 08:38:02       60 阅读
  6. Conda简介及常用指令

    2023-12-30 08:38:02       54 阅读
  7. 几种设计模式介绍

    2023-12-30 08:38:02       56 阅读
  8. 2024前端React最新面试题:React设计思想是什么?

    2023-12-30 08:38:02       59 阅读
  9. CSS日常总结--CSS伪类

    2023-12-30 08:38:02       89 阅读
  10. 理解开源协议GPL、MIT、BSD、Apache License

    2023-12-30 08:38:02       54 阅读
  11. SQL面试题挑战14:每年的在校人数

    2023-12-30 08:38:02       59 阅读
  12. K8s - Helm、HPA、rancher

    2023-12-30 08:38:02       42 阅读