uniapp多级动态表单规则

news2024/11/22 14:36:13

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

传来的数据格式处理

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

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

我这里字段的定义是因为有其他数据要一并提交,可按照自己需求来
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、填写数据、校验规则消失
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1343928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Maven】下载及配置

文章目录 1. 下载2. 解压3. 配置环境变量4. 验证 Maven 是一个跨平台的项目管理工具。作为 Apache 组织的一个颇为成功的开源项目&#xff0c;其主要服务于基于 Java 平台的项目创建&#xff0c;依赖管理和项目信息管理&#xff0c;是一个自动化构建工具&#xff0c;本文将介绍…

Activemq存储KahaDb详解

引言 ActiveMQ在不提供持久化的情况下&#xff0c;数据保存在内存中&#xff0c;一旦应用崩溃或者重启之后&#xff0c;数据都将会丢失&#xff0c;这显然在大部分情况下是我们所不希望的。对此ActiveMQ提供了两种持久化方式以供选择。 kahaDB kahaDB是一个基于文件&#xf…

为什么ChatGPT采用SSE协议而不是Websocket?

在探索ChatGPT的使用过程中&#xff0c;我们发现GPT采用了流式数据返回的方式。理论上&#xff0c;这种情况可以通过全双工通信协议实现持久化连接&#xff0c;或者依赖于基于EventStream的事件流。然而&#xff0c;ChatGPT选择了后者&#xff0c;也就是本文即将深入探讨的SSE&…

聚簇索引和非聚簇索引的区别

在 MySQL 中&#xff0c;B 树的实现主要是通过 InnoDB 存储引擎来实现的。InnoDB 存储引擎中的索引主要有聚簇索引和非聚簇索引两种类型&#xff0c;聚簇索引是根据主键创建的索引&#xff0c;⽽非聚簇索引是根据⾮主键列创建的索引。 对于非聚簇索引&#xff0c;MySQL 中会同时…

神经网络 —— 模拟人脑的计算方式

神经网络能够反映人类大脑的行为&#xff0c;允许计算机程序识别模式&#xff0c;以及解决人工智能、机器学习和深度学习领域的常见问题。 人类发明的灵感来源有很多都是来自大自然&#xff0c;神经网络同样如此。人工神经网络是一种类似于人类神经网络的信息处理技术。但事实上…

【Linux系统化学习】进程终止的奥秘

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Liunx系统化学习 代码仓库&#xff1a;Gitee 目录 获取函数返回值 退出码 进程退出的场景 错误码 信号终止异常代码 进程的终止 main函数直接return exit函数 _exit函数 获取函数返回值 在C语言学…

如何像高级软件工程师一样使用vscode做开发

以一个真实的代码库为例&#xff0c;带您了解高级软件工程的关键原则是什么&#xff0c;以及如何充分利用vscode提供的各种特性来提高开发效率。您可以将学到的技巧和思想应用于任何项目。 视频地址&#xff1a; 如何像高级软件工程师一样使用vscode做开发 欢迎关注公众号&a…

ViT的极简pytorch实现及其即插即用

先放一张ViT的网络图 可以看到是把图像分割成小块&#xff0c;像NLP的句子那样按顺序进入transformer&#xff0c;经过MLP后&#xff0c;输出类别。每个小块是16x16&#xff0c;进入Linear Projection of Flattened Patches, 在每个的开头加上cls token和位置信息&#xff0c;…

云原生|对象存储|minio分布式集群的搭建和初步使用(可用于生产)

前言&#xff1a; minio作为轻量级的对象存储服务安装还是比较简单的&#xff0c;但分布式集群可以大大提高存储的安全性&#xff0c;可靠性。分布式集群是在单实例的基础上扩展而来的 minio的分布式集群有如下要求&#xff1a; 所有运行分布式 MinIO 的节点需要具有相同的访…

【Java 进阶篇】Redis 缓存优化:提升应用性能的不二选择

在现代的软件开发中&#xff0c;性能一直是开发者们追求的目标之一。对于数据库访问频繁、数据读取较慢的场景&#xff0c;使用缓存是提升性能的有效手段之一。而 Redis 作为一款高性能的内存数据库&#xff0c;被广泛用作缓存工具。本文将围绕 Redis 缓存优化进行详解&#xf…

《深入理解JAVA虚拟机笔记》并发与线程安全原理

除了增加高速缓存之外&#xff0c;为了使处理器内部的运算单元能尽量被充分利用&#xff0c;处理器可能对输入代码进行乱序执行&#xff08;Out-Of-Order Execution&#xff09;优化。处理器会在计算之后将乱序执行的结果重组&#xff0c;保证该结果与顺序执行的结果一致&#…

三台CentOS7.6虚拟机搭建Hadoop完全分布式集群(三)

这个是笔者大学时期的大数据课程使用三台CentOS7.6虚拟机搭建完全分布式集群的案例&#xff0c;已成功搭建完全分布式集群&#xff0c;并测试跑实例。 9 安装hbase 温馨提示&#xff1a;安装hbase先在master主节点上配置&#xff0c;然后远程复制到slave01或slave02 &#xf…

远程网络唤醒家庭主机(openwrt设置)

远程网络唤醒家庭主机&#xff08;openwrt设置&#xff09; 前提&#xff1a; 1.配置好主板bios的网络唤醒功能(网络教程自己百度一下找) 2.电脑开启网络唤醒功能(网络教程自己百度一下找) 3.路由器通过ddns实现域名和动态IP绑定内网穿透方法汇总_不修改光猫进行内网穿透-C…

【办公软件】Excel双坐标轴图表

在工作中整理测试数据&#xff0c;往往需要一个图表展示两个差异较大的指标。比如共有三个数据&#xff0c;其中两个是要进行对比的温度值&#xff0c;另一个指标是两个温度的差值&#xff0c;这个差值可能很小。 举个实际的例子&#xff1a;数据如下所示&#xff0c;NTC检测温…

JavaScript中实现页面跳转的几种常用方法

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍在JavaScript中实现页面跳转的几种常用方法以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录获&#xff0c;友友们有任何问题…

2024收入最高的编程语言

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 1.Python Python 是最流行、用途最广泛的语言之一。它通常用于网络开发、数据科学、机器学习等。 以下是 Python 编程语言的一些主要用途&#xff1a; Web 开发&…

【AIGC科技展望】预测AIGC2025年的机会与挑战

2025年&#xff0c;AIGC的机会与挑战 在未来的五年里&#xff0c;AIGC&#xff08;AI Generated Content&#xff09;将会成为一个越来越重要的领域。但是&#xff0c;伴随着机会而来的是挑战。在这篇文章中&#xff0c;我们将一起探讨AIGC的机会与挑战&#xff0c;并预测2025…

WinForm开发 - C# RadioButton(单选框) 设置默认选中或取消默认选中

WinForm开发中RadioButton组件使用过程中的小技巧。 1、属性界面操作 如果有多个组件&#xff0c;希望不显示默认选中单选框只需要将其Checked属性全部设置为False即可&#xff0c; 如果希望默认多个组件中显示默认选中&#xff0c;将其Checked属性设置为True。 2、代码实…

GEE错误——‘xxx‘ did not match any bands.

这里我们在进行影像展示的时候会出现下面的错误,主要的原因是我们虽然进行了波段运算,但是依旧无法加载,主要原因是我们没有将计算过后的波段信息进行添加到我们的一个多波段影像,这里我们首先来看看代码出现的错误提示。当然这里只是给出了主要的问题,其实在进行波段运算…

Java——猫猫图鉴微信小程序(前后端分离版)

目录 一、开源项目 二、项目来源 三、使用框架 四、小程序功能 1、用户功能 2、管理员功能 五、使用docker快速部署 六、更新信息 审核说明 一、开源项目 猫咪信息点-ruoyi-cat: 1、一直想做点项目进行学习与练手&#xff0c;所以做了一个对自己来说可以完成的…