el-form复杂表单嵌套el-table实现复制字段并校验删除等功能

news/2024/10/28 18:31:58/

功能:表单项全部复制,表单项根据el-table选择后复制部分内容,做所有表单项的校验,部分表单项删除功能

 点击添加饮品爱好后弹出el-table表单

 选择好后点确定如下图,并且实现删除功能,删除仅仅删除饮品和爱好

 完整代码如下复制即可实现,根据实际情况更改

<template><!-- 全部添加和部分添加 --><div class="content-box"><el-button @click="open">打开弹窗</el-button><el-dialog title="外层 Dialog" :visible.sync="outerVisible"><el-dialog width="30%" title="内层 Dialog" :visible.sync="innerVisible" append-to-body><el-tableref="multipleTable":data="tableData"tooltip-effect="dark"style="width: 100%"@selection-change="handleSelectionChange"><el-table-column type="selection" width="55"> </el-table-column><el-table-column label="日期" width="120"><template slot-scope="scope">{{ scope.row.date }}</template></el-table-column><el-table-column prop="name" label="姓名" width="120"> </el-table-column><el-table-column prop="address" label="地址" show-overflow-tooltip> </el-table-column></el-table><div class="insidebtn"><el-button type="parmary" plain @click="suredata('cancel')">取消</el-button><el-button type="parmary" @click="suredata()">确认</el-button></div></el-dialog><div class="container"><p>主题页面 1 - 1</p><el-row><el-col :span="20"><div class="table-container"><el-form ref="form" :model="form1" label-width="100px"><div v-for="(item, index) in form1.items" :key="index"><el-form-itemlabel="姓名":prop="'items.' + index + '.name'":rules="{ required: true, message: '姓名不能为空', trigger: 'blur' }"><el-input v-model="item.name"></el-input></el-form-item><el-form-itemlabel="年龄":prop="'items.' + index + '.age'":rules="{ required: true, message: '年龄不能为空', trigger: 'blur' }"><el-input v-model="item.age"></el-input></el-form-item><el-form-itemlabel="年龄":prop="'items.' + index + '.select'":rules="{ required: true, message: '年龄不能为空', trigger: 'change' }"><el-select v-model="item.select" placeholder="请选择"><el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option></el-select></el-form-item><div v-for="(text, i) in item.itemall" :key="i"><el-form-itemlabel="饮品---":prop="'items.' + index + '.itemall.' + i + '.drink'":rules="{ required: true, message: '饮品不能为空', trigger: 'blur' }"><el-input v-model="text.drink"></el-input></el-form-item><el-form-itemlabel="爱好---":prop="'items.' + index + '.itemall.' + i + '.hobby'":rules="{ required: true, message: '爱好不能为空', trigger: 'blur' }"><el-input v-model="text.hobby"></el-input></el-form-item><el-form-item><el-button type="danger" @click="deletefrom(index,i)">删除</el-button></el-form-item></div><el-form-item><el-button type="primary" @click="addItem(index)">添加饮品爱好</el-button></el-form-item></div><el-form-item><template><el-button type="primary" @click="addAll">添加全部</el-button><el-button type="primary" @click="submitForm">提交</el-button></template></el-form-item></el-form></div></el-col></el-row><div class="pagination-area"></div></div></el-dialog></div>
</template><script>
import { testApi } from '@/api/test';const defaultListQuery = {pageNum: 1,pageSize: 10,keyword: ''
};export default {data() {return {form1: {items: [{name: '',age: '',itemall: [{ drink: '', hobby: '' }]}// { name: '', itemall: [{ sexs: '', age: '' }] }]},options: [{value: '选项1',label: '黄金糕'},{value: '选项2',label: '双皮奶'}],outerVisible: false,innerVisible: false,tableData: [{date: '2016-05-03',name: '王小虎1',address: '上海市普陀区金沙江路 1518 弄'},{date: '2016-05-02',name: '王小虎2',address: '上海市普陀区金沙江路 1518 弄'},{date: '2016-05-04',name: '王小虎3',address: '上海市普陀区金沙江路 1518 弄'},{date: '2016-05-01',name: '王小虎4',address: '上海市普陀区金沙江路 1518 弄'},{date: '2016-05-08',name: '王小虎5',address: '上海市普陀区金沙江路 1518 弄'},{date: '2016-05-06',name: '王小虎6',address: '上海市普陀区金沙江路 1518 弄'},{date: '2016-05-07',name: '王小虎7',address: '上海市普陀区金沙江路 1518 弄'}],multipleSelection: [],indexfrom:0,//表单的标识};},created() {},methods: {// 添加表单内容操作addItem(index) {this.innerVisible = true;this.indexfrom=index// console.log(index);// this.form1.items[index].itemall.push({//     drink: '',//     hobby: ''// });},// 提交做校验submitForm() {this.$refs.form.validate(valid => {if (valid) {console.log(this.form1, '数据结构');} else {console.log('表单验证失败');}});},addAll() {this.form1.items.push({name: '',age: '',itemall: [{ drink: '', hobby: '' }]});},open() {this.outerVisible = true;},// 选择handleSelectionChange(val) {this.multipleSelection = val;console.log(this.multipleSelection);},suredata(text) {if(text=='cancel'){this.$refs.multipleTable.clearSelection();}this.form1.items[this.indexfrom].itemall = [];this.multipleSelection.map(item => {// this.$nextTick(()=>{let {items}=this.form1items[this.indexfrom].itemall.push({drink: item.name,hobby: item.date});// })});console.log("111111",this.form1);this.innerVisible = false;this.$refs.multipleTable.clearSelection();},deletefrom(index,i){let {items}=this.form1items[index].itemall.splice(i,1)}}
};
</script>

文章到此结束,希望对你有所帮助~有不懂的可以在评论区评论,看到会回复


http://www.ppmy.cn/news/597920.html

相关文章

伦敦银实时行情最新解读

在伦敦银市场上做交易&#xff0c;不管大家做的是长线、中线还是短线&#xff0c;都离不开对最新的实时行情走势进行解读。借助交易软件上一些常用的技术指标&#xff0c;伦敦银投资者可以从技术面增加自己的交易操作准确率。 Stochastic是相当常见而实用的技术指标&#xff0c…

Qt开发经验小技巧271-275

编程的过程中经常遇到需要将QString转成char *或者const char *的情况&#xff0c;在转换成QByteArray后调用.data()或者.constData()函数进行转换&#xff0c;这里需要注意的是&#xff0c;如果转换类型是const char *尽管用data()不会出错&#xff0c;会给你自动转换&#xf…

游戏平台代表--PS4【推荐】

目前市上专业的游戏主机三足鼎立&#xff0c;分别是任天堂的wii&#xff0c;微软的xbox&#xff0c;已经索尼的PlayStation系列&#xff0c;这其中的老大当然是索尼PS4啦&#xff0c;因为即使美国佬也是优选ps4而不是自家的Xbox。小编历经千辛万科终于购入了一台ps4&#xff08…

索尼游戏平台针对被黑事件补偿玩家

索尼PlayStation官方网站今日发布消息&#xff0c;针对圣诞节黑客攻击PlayStation Network服务器一事&#xff0c;对玩家作出补偿&#xff0c;决定向PS Plus会员提供额外5天会籍&#xff0c;及向所有PSN会员提供一组特惠代码以九折优惠购买PlayStation Store购物车中所有内容一…

NFT游戏有哪些?盘点当前热门的NFT游戏

全文导读 在了解NFT游戏有哪些之前&#xff0c;我们不妨先来了解一下NFT&#xff0c;很多币圈新手虽然经常听说NFT&#xff0c;但是还不知道这个NFT具体是什么。其实NFT的中文名是非同质化代币&#xff0c;它就是一个智能合约&#xff0c;相当于给某个数字资产独一无二的身份证…

在中国大陆,XGP对比Steam有什么优势?

6个月前&#xff0c;我入手了《Persona 5 Royal 女神异闻录5皇家版》&#xff08;简称P5R&#xff09;的PS4光盘&#xff0c;玩了一小段就搁置了&#xff0c;2022年10月21日&#xff0c;P5R登录了全平台&#xff0c;而PS4光盘又无法升级到PS5版&#xff0c;为了低价享受更好的画…

直流恒流源电路分析-运放恒流源设计

7种直流恒流源电路分析 传感器及发光器件常需恒流源供电&#xff0c;精确测量微小电阻一般也要用到恒流源。恒流源的本质是其具有调节负载两端电压的能力&#xff0c;凡具有电压调整能力的器件均可构成恒流源&#xff0c;包括运放、稳压芯片、三极管、MOS管等。下面以运放和电…

FPGA_学习_09_PWM呼吸灯

PWM在三相电机控制中&#xff0c;有着非常重要的地位。 如果你需要用FPGA去实现三相电机的控制&#xff0c; PWM这一关是绕不过的。好在PWM的基本原理是比较简单的。所以原理部分本文就略过&#xff0c;本文基于PWM实现呼吸灯。 1 时序 {signal: [{name: clk, wave: p....…