当前位置: 首页 > news >正文

数组循环form表单对象校验

<el-button type="primary" icon="el-icon-circle-plus-outline" :size="$formSize" @click="addDevice" :disabled="readOnly">添加</el-button><!--整个表单块循环-->
<div v-for="(item,index) in actionList" :key="item.devId" class="block"><el-form ref="actionBlockForm" :model="item" :rules="formBlockRule" :size="$formSize" label-width="130px"><el-form-item :label="'执行设备'+(index < 10 ? '0' + (index+1) : (index+1))" prop="devAlias"><el-input v-model="item.devAlias" style="width: 300px;" disabled></el-input></el-form-item><el-form-item label="控制" prop="checkList"><el-checkbox-group v-model="item.checkList"><el-checkbox v-for="(item1,index1) in item.currentProperty" @change="handleCheckboxChange(index, item1.identifier)" :key="index1" :label="item1.identifier" :disabled="readOnly">{{item1.identifierDesc}}</el-checkbox></el-checkbox-group></el-form-item></el-form><el-button :size="$formSize" class="button-delete-primary" :disabled="readOnly" icon="el-icon-delete" @click="delBlock(index)">删除</el-button>
</div><!--提交按钮-->
<el-button :size="$buttonSize" class="button-minwidth" type="primary" :disabled="readOnly" :loading="btnLoading" @click="onSubmit">提交</el-button>
//数据定义、表单prop校验
data(){return{actionList:[],formBlockRule:{devAlias:[{ required: true, message: '执行设备名称不能为空', trigger: "blur" }],checkList:[{ type:'array', required: true, message: '请至少选择一个选项', trigger: 'change'} ]}}
},
methods:{//添加addDevice(){//this.actionList.push()},// 勾选监听//(动态勾选:通过监听改变直接赋值,选中指定勾选值取消其他值的勾选状态,勾选其他值取消指定值的勾选状态)handleCheckboxChange(index,value){if(value!=='multiSwitch'){let arr =this.actionList[index].checkList.filter((item) => item !== 'multiSwitch')this.actionList[index].checkList=arr}else{this.actionList[index].checkList=['multiSwitch']}},//删除delBlock(index){this.actionList.splice(index, 1);},//提交onSubmit(){//循环表单校验function validateList(formArr) {let arr = [];formArr.forEach((item) => {arr.push(new Promise((resolve) => {item.validate((valid) => {if (!valid) {resolve(false);}resolve(true);});}));});return arr;}const validateactionBlockForm = () => {return new Promise((resolve) => {let formArr = this.$refs["actionBlockForm"]; if (!formArr) {resolve(true);return;}Promise.all(validateList(formArr)).then((res) => {if (res.includes(false)) {resolve(false);} else {resolve(true);}});})}validateactionBlockForm().then((res) => {if (!res) return;//调接口提交数据}
}

相关文章:

  • Project 项目管理软件真的好用吗?
  • 为什么PPT录制没有声音 电脑ppt录屏没有声音怎么办
  • sed删除文件中所有空格,包括空格、制表符和其他空白字符
  • Unity Shader基础知识的入门了解
  • 23种设计模式之代理模式
  • 递归解析 LXML 树并避免重复进入某个节点
  • Plotly : 超好用的Python可视化工具
  • Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘
  • 05 Hadoop简单使用
  • 品牌与产品:消费者决策的经济逻辑与品牌宣传的战略意义
  • Keil MDK 下载安装相对应CPU的Software Packs
  • QT6 学生管理系统以及登录(QSQLITE数据库)
  • “探索AIGC市场:腾讯元宝APP加入竞争,大模型产品的未来走向与个人选择“
  • 在 .NET Core 中构建工作服务和调度运行
  • Java 关于抽象 -- Java 语言的抽象类、接口和函数式接口
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Docker下部署自己的LNMP工作环境
  • HashMap ConcurrentHashMap
  • Java精华积累:初学者都应该搞懂的问题
  • laravel 用artisan创建自己的模板
  • miaov-React 最佳入门
  • mysql 数据库四种事务隔离级别
  • SpringBoot 实战 (三) | 配置文件详解
  • 工作中总结前端开发流程--vue项目
  • 官方解决所有 npm 全局安装权限问题
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 小李飞刀:SQL题目刷起来!
  • 你对linux中grep命令知道多少?
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • (13):Silverlight 2 数据与通信之WebRequest
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (转)setTimeout 和 setInterval 的区别
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)平衡树
  • .gitignore文件—git忽略文件
  • .NET Core 版本不支持的问题
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET开发不可不知、不可不用的辅助类(一)
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • @component注解的分类
  • @DS 多数据源 + @Transactional(rollbackFor = Exception.class) 导致@DS 多数据源没法使用
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [@Controller]4 详解@ModelAttribute
  • [ANT] 项目中应用ANT
  • [autojs]逍遥模拟器和vscode对接
  • [C#]将opencvsharp的Mat对象转成onnxruntime的inputtensor的3种方法
  • [C++]C++基础知识概述
  • [c++刷题]贪心算法.N01