vue elementui 动态追加下拉框、输入框

devtools/2024/11/17 3:37:49/

elementui__0">vue elementui 动态追加下拉框、输入框

上代码:

<template><div><el-dialogappend-to-body:close-on-click-modal="false":close-on-press-escape="false"width="65%"@close="onClose":modal-append-to-body="true"title="新建"custom-class="dialogBox":visible.sync="dialogVisible":lock-scroll="true":destroy-on-close="true"><el-form :model="combinationInfo" label-width="90px" ref="combinationForm" :rules="rules" :inline="true" size="small"><el-row><el-col :span="12"><el-form-item prop="benchMarks" label="名称"><div style="color: #fb6b3f;width: 230px;">比例之和需为100%(当前<span>{{benchmarkTotal}}</span><span></span>%)</div><div v-for="(item,index) in combinationInfo.benchMarks" :key="index"><el-selectstyle="margin-bottom: 10px;"clearablefilterablecollapse-tagsplaceholder="请选择"class="benchmarkSelectWidth"@change="changeBenchmark"v-model="item.code"><el-optionv-for="(item1, idx) in list":key="idx":label="item1.name":value="item1.code"></el-option></el-select><el-input v-model="item.percentage" @input="changePercentage" placeholder="请输入" class="benchmarkInputWidth"></el-input><span style="padding-left: 2px;">%</span><i v-if="index !== 0" style="font-size: 18px;cursor: pointer;padding: 0 0 0 10px;color: #F56C6C;" @click="deleteIndex(index)" class="el-icon-remove-outline"></i></div><div v-if="benchmarkRule" style="color: #F56C6C;font-size: 12px;margin-top: -17px">请选择名称</div><el-button @click="addIndex" size="mini" type="primary" icon="el-icon-plus">添加</el-button></el-form-item></el-col><el-col :span="12"></el-col></el-row></el-form><div style="text-align: right;margin-top: 20px;"><el-button size="mini" @click="onClose()">取 消</el-button><el-buttonsize="mini"type="primary"@click="onConfirm()">提 交</el-button></div></el-dialog></div>
</template>
data() {return {dialogVisible: false,combinationInfo: {benchMarks: [{code: '',name: '',percentage: '',}]},rules: {benchMarks: [{ required: true }],},benchmarkRule: false,benchmarkTotal: 0,list: [{name: 'aaa',code: '111',},{name: 'bbb',code: '222',},{name: 'ccc',code: '333',},],}},methods: {// 添加addIndex () {this.combinationInfo.benchMarks.push({code: '',percentage: '',})},// 删除deleteIndex (index) {this.combinationInfo.benchMarks.splice(index,1)this.changePercentage()},changeBenchmark (val) {if (this.combinationInfo.benchMarks.length && this.combinationInfo.benchMarks.length > 1) {if (!this.isRepeat(this.combinationInfo.benchMarks,'code')) {this.$message.warning('所选名称不能重复!')return}}},// 判断数组中是否有重复数据(true 不存在;false 存在重复)isRepeat(arr, key) {var obj = {};for (let i = 0; i < arr.length; i ++) {if (obj[arr[i][key]]) {return false;    // 存在} else {obj[arr[i][key]] = arr[i];}}return true;},// 名称值变化时changePercentage (val) {this.benchmarkTotal = 0if (this.combinationInfo.benchMarks.length && this.combinationInfo.benchMarks.length > 0) {for(let i = 0; i < this.combinationInfo.benchMarks.length; i++) {if (this.combinationInfo.benchMarks[i].percentage === '') {break}this.benchmarkTotal+=parseFloat(this.combinationInfo.benchMarks[i].percentage)}}},// 提交onConfirm() {if (this.combinationInfo.benchMarks) {for(let i = 0; i< this.combinationInfo.benchMarks.length; i++) {if (this.combinationInfo.benchMarks[i].code) {this.benchmarkRule = false} else {this.benchmarkRule = truereturn}}}if (this.benchmarkTotal !== 100) {this.$message.warning('名称比例之和需为100%!')return}},// 取消onClose() {this.benchmarkRule = falsethis.dialogVisible = false},
},

展示效果图:
在这里插入图片描述


http://www.ppmy.cn/devtools/18510.html

相关文章

Ajax学习笔记

目录​​​​​​​ 是什么 工作原理基于的关键技术 XMLHttpRequest对象 异步通信 数据格式 XMLHTTPRequest对象 功能 回调函数 onreadystatechange onload onerror ontimeout 函数 属性 写法 基本格式 完整格式 Ajax可以发起的不同请求 GET请求 POST请求 …

代码随想录算法训练营DAY38|C++动态规划Part.1|动态规划理论基础、509.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯

文章目录 动态规划理论基础什么是动态规划动态规划的解题步骤DP数组以及下标的含义递推公式DP数组初始化DP数组遍历顺序打印DP数组动态规划五部曲 动态规划应该如何debug 509.斐波那契数什么是斐波那契数列动态规划五部曲确定dp数组下标以及含义确定递推公式dp数组如何初始化确…

定时重启指定的软件

做一个简单的控制台程序, 让他在指定的时间, 关闭指定的软件(的进程), 关闭后再打开这个软件 ①创建控制台程序, 主要代码: using System.Diagnostics;namespace AutomaticRestart {public class Program{public static string ProcessNames Convert.ToString(CustomConfigMa…

DRF JWT认证进阶

JWT认证进阶 【0】准备工作 &#xff08;1&#xff09;模型准备 模型准备&#xff08;继承django的auth_user表&#xff09; from django.db import models from django.contrib.auth.models import AbstractUserclass UserInfo(AbstractUser):mobile models.CharField(ma…

微服务之分布式理论概述

一、分布式技术相关的理论 CAP理论 CAP定理(CAP theorem)&#xff0c;⼜被称作布鲁尔定理(Eric Brewer)&#xff0c;1998年第⼀次提出. 最初提出是指分布式数据存储不可能同时提供以下三种保证中的两种以上: (1) ⼀致性(Consistency): 每次读取收到的信息都是最新的; (2) …

(MSFT.O)微软2024财年Q3营收619亿美元

在科技的浩渺宇宙中&#xff0c;一颗璀璨星辰再度闪耀其光芒——(MSFT.O)微软公司于2024财政年度第三季展现出惊人的财务表现&#xff0c;实现总营业收入达到令人咋舌的6190亿美元。这一辉煌成就不仅突显了微软作为全球技术领导者之一的地位&#xff0c;更引发了业界内外对这家…

学习 Rust 的第十二天:如何使用向量

大家好&#xff0c; 今天我们来看看计算机科学中的一种基本数据结构&#xff0c;即向量。向量在 Rust 中扮演着至关重要的角色&#xff0c;它在各种编程任务中都发挥着重要作用。像 Rust 这样的系统编程语言以其对安全性和性能的强调而闻名&#xff0c;因此向量提供了一些强大…

想要提升爬虫效率,该如何调整动态IP切换时间?

在进行网络爬虫操作时&#xff0c;动态代理IP的使用是常见的策略之一&#xff0c;用于隐藏爬虫的真实身份和规避目标网站的封锁。然而&#xff0c;一个常见的问题是&#xff1a;在做爬虫时&#xff0c;动态代理IP切换频率到底是越快越好呢&#xff1f;本文将从不同角度探讨这个…