父组件提交时让各自的子组件验证表格是否填写完整

ops/2024/11/22 19:45:51/

项目场景:

提示:这里简述项目相关背景:

父组件中有三个表格,表格中时输入框,有些输入框是必填的,在父组件提交时需要验证这三个表格的必填输入框中是否有没填写的。


原因分析:

提示:这里填写问题的分析:

有两点:

1:表格的验证

表格外面套一个form表单,然后在表格的必填输入框的每一项中用表单的验证规则验证

2:多个子组件一起验证,只要一个验证没通过就不能提交

Promise.all([child1,child2,child3,]).then(res=>{})


解决方案:

提示:这里填写该问题的具体解决方案:

1:父组件

1:html

<template><!-- 第一个表格组件 --><QuestionType ref="child1":disabled="disabled":tableList="questionData.testList":title="'型式试验'"/><!-- 第二个表格组件 --><QuestionCarref="child2":disabled="disabled":tableList="questionData.processList"/><!-- 第三个表格组件 --><QuestionTyperef="child3" :disabled="disabled":tableList="questionData.marketList"/><el-button  type="primary" @click="submitForm()">提交</el-button><el-button @click="dialogVisible = false">取 消</el-button>
</template>

2:ts

// 提交输入的表格
const child1=ref();//获取子组件的表格的实例
const child2=ref();
const child3=ref();
const submitForm=(status:number)=>{let res1= child1.value.form.validate()let res2= child2.value.form.validate()let res3= child3.value.form.validate()let res4= child4.value.form.validate()let promise=[res1,res2,res3,res4];Promise.all(promise).then(res=>{//返回的是个数组,验证不通过的是返回false,验证通过的返回是trueif(res.indexOf('false')==-1){//如果所有的子组件返回的没有falseYearPerformanceApi.editYearPerformance(questionData.value).then(result=>{dialogVisible.value=false;loading.value = true;disabled.value=true;})}})
}

2:子组件的表格加验证规则

1:html

<el-form ref="form" :model="props"><el-table ref="tableRef":data="props.tableList" :stripe="true" :show-overflow-tooltip="true" :border="true":header-cell-style="{textAlign:'center'}":cell-style="{textAlign:'center'}"><el-table-column type="selection" width="80" fixed="left" /><el-table-column label="问题编号"min-width="160"prop="questionsCode"><template #header v-if="props.tableList.length>0"><div ><span style="color:red">*</span>问题编号</div></template><template #default="scope"><el-form-item :prop="'tableList['+scope.$index+'].questionsCode'" :rules="[{ required: true, message: '请输入问题编号',trigger: 'blur', },{ required: true, message: '请输入问题编号',trigger: 'change', }]"><el-input v-model="scope.row.questionsCode" :disabled="props.disabled" placeholder="请输入"/></el-form-item></template></el-table-column></el-table>
</el-form>

2:ts

//接收父组件传过来的值
const props = defineProps({disabled:{type:Boolean,default:true},tableList:{type:Array,},
})


http://www.ppmy.cn/ops/135870.html

相关文章

ant-design-vue中table组件多列排序

antD中table组件多列排序 使用前注意实现效果图实现的功能点及相关代码1. 默认按某几个字段排序2. 点击排序按钮可同时对多个字段进行排序3. 点击重置按钮可恢复默认排序状态。 功能实现完整的关键代码 使用前注意 先要确认你使用的antD版本是否支持多列排序&#xff0c;我这里…

微信小程序02-页面制作

微信小程序页面制作指南 目录 微信小程序页面制作 1. 个人信息展示小程序 案例分析 需求背景&#xff1a;许多大学生毕业后需要求职&#xff0c;因此制作一个展示个人信息的微信小程序对招聘人员快速了解求职者非常有帮助。页面布局&#xff1a;页面分为头像区域和详细信息…

智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序7 进化论及科学的信息技术创新:分布式账本/区块链/智能合约

Q&A Q46、 聊聊“分布式账本”“区块链”和“智能合约” “分布式账本”、“区块链”和“智能合约”是现代信息技术领域的几个重要概念&#xff0c;它们在金融、供应链管理、物联网等多个领域都发挥着重要作用。以下是对这三个概念的详细解析&#xff1a; 分布式账本 …

数据分析-49-时间序列信息编码之采用虚拟变量

文章目录 1 基本概念1.1 虚拟变量(one-hot)1.2 时间特征2 模拟数据2.1 日期序列2.2 目标序列3 编码虚拟变量(one-hot)3.1 年份编码3.2 月份编码3.3 星期几编码4 拟合模型4.1 构建数据集(每月编码)4.2 构建数据集(每日编码)5 参考附录1 基本概念 1.1 虚拟变量(one-hot) 虚拟变…

修改this.$confirm的按钮位置、图标、文字及标题

在Vue.js项目中&#xff0c;this.$confirm 通常是基于某些UI库&#xff08;如Element UI或Ant Design Vue&#xff09;的对话框确认方法。 以下是基于Element UI的this.$confirm的用法示例。 在此之前&#xff0c;你的项目要已经安装了Element UI&#xff0c;如果没安装话就打…

C++结构型设计模式所体现面向接口设计的特征和优点

结构型设计模式&#xff08;Structural Patterns&#xff09;在面向接口设计方面体现了一系列重要的特征&#xff0c;这些特征帮助我们构建灵活、可扩展和易于维护的系统。以下是结构型设计模式在面向接口设计方面的特征及其优点&#xff1a; 1. 接口分离和抽象化 特征 结构…

Python进阶学习路线与未来就业前景

Python进阶学习路线与未来就业前景 Python作为一种语法简洁、易于理解和学习的编程语言&#xff0c;近年来在编程语言排行榜中持续攀升&#xff0c;尤其在人工智能领域的广泛应用下&#xff0c;更是备受瞩目。本文将为读者介绍Python进阶的学习路线以及各个学习方向的未来就业…

141. Sprite标签(Canvas作为贴图)

上节课案例创建标签的方式&#xff0c;是把一张图片作为Sprite精灵模型的颜色贴图,本节给大家演示把Canvas画布作为Sprite精灵模型的颜色贴图&#xff0c;实现一个标签。 注意&#xff1a;本节课主要是技术方案讲解&#xff0c;默认你有Canvas基础&#xff0c;如果没有Canvas基…