首页 > 其他分享 >element ui el-select下拉多选添加全选功能

element ui el-select下拉多选添加全选功能

时间:2023-12-14 15:45:24浏览次数:27  
标签:selectAll el val eleTypeList 下拉多选 element 全选 ElementTypebyOption includes

// html       <div class="item" >         <span class="label">观测要素</span>         <span>           <!-- 要素组批量处理-多选 -->           <el-select  v-model="eleTypeList" multiple @change="eleTypeChangeList" class="theme-select" style="width: 1430px;" placeholder="请选择">             <el-option label="全选" value="selectAll"  v-if="ElementTypebyOption.length > 0"></el-option>             <el-option v-for="(item, index) in ElementTypebyOption" :key="index" :label="item.TEXT" :value="item.ID"></el-option>           </el-select>         </span>       </div> // data       ElementTypebyOption: [],       oldSeleValue: [],       eleTypeList: [],       elementTypeList: [], //methods中 // 观测要素批量下拉列表     getObsvItem (flag = false) {       let params = {         stationType: this.staType,         dataType: this.dataType,         eleType: ''       }       this.ElementTypebyOption = []       this.eleTypeList = []       WORK_API.getObsvItem(params).then(res => {         this.ElementTypebyOption = res.data         if (this.ElementTypebyOption.length !== 0) {           this.ElementTypebyOption.forEach((item, index) => {             this.eleTypeList.push(item.ID)           })         }         this.eleTypeList.push('selectAll');         this.$nextTick(() => {           // 获取el-tag--info类名的元素           var dom = document.getElementsByClassName('el-tag--info')[0]           const content = dom.innerText;           if (content == 'selectAll') {             dom.style.display = 'none'; // 隐藏选择的元素           }           setInterval(() => {             this.eleTypeChangeList(this.eleTypeList)           }, 200)         })         console.log(this.eleTypeList)       }).catch(err => {         console.log(err)       })     }, eleTypeChangeList(val) {       // 用来储存上一次的值,可以进行对比       const oldVal = this.oldSeleValue.length === 1 ? this.oldSeleValue[0] : [];       // 若是全部选择       if (val.includes('selectAll')) {         this.eleTypeList = Object.assign([],this.allSeleValue);         this.eleTypeList.push('selectAll');       }       // 取消全部选中 上次有 当前没有 表示取消全选       if (oldVal.includes('selectAll') && !val.includes('selectAll')) this.eleTypeList = [];       // 点击非全部选中 需要排除全部选中 以及 当前点击的选项       // 新老数据都有全部选中       if (oldVal.includes('selectAll') && val.includes('selectAll')) {           const index = val.indexOf('selectAll');           val.splice(index, 1); // 排除全选选项           this.eleTypeList = val       }         // 全选未选 但是其他选项全部选上 则全选选上 上次和当前 都没有全选       if (!oldVal.includes('selectAll') && !val.includes('selectAll')) {           if (val.length ===  this.allSeleValue.length) {             this.eleTypeList.push('selectAll');           };       }       // 储存当前最后的结果 作为下次的老数据       this.oldSeleValue[0] = this.eleTypeList;     },

 

标签:selectAll,el,val,eleTypeList,下拉多选,element,全选,ElementTypebyOption,includes
From: https://www.cnblogs.com/jerrycoco/p/17901299.html

相关文章

  • vue2 中 el-table 实现树形列表,支持增删改等操作
    需求场景:el-table构造一个树形列表,支持新增节点,删除,修改等操作。实现效果思路 一般的el-table增删改,我们都很熟悉;关键在于实现一个纯前端的树形列表,最终再调接口存列表数据。     树形el-table,需要设置 row-key,一般为id,所以每新增一条数据,都必须有id。需......
  • 软件测试/人工智能|selenium元素定位方式大全
    前言当我们在使用selenium进行自动化测试工作时,元素定位是非常重要的一环,因为我们是借助脚本模拟我们通过鼠标和键盘对元素进行点击、输入内容和滑动操作的,所以准确的元素定位是我们执行测试脚本的重要一环。本文就来给大家介绍一下selenium的元素定位方式。find_element和find......
  • 软件测试/人工智能|一文教你配置selenium环境
    前言在软件开发过程中,自动化测试是确保应用程序质量的关键步骤之一。Python语言与Selenium库的结合为开发者提供了一个强大的工具,用于自动化Web应用程序的测试。本文将介绍如何配置Python和Selenium,搭建一个高效的自动化测试环境。Seleium安装我们可以直接在项目的虚拟环境中......
  • 2020CVPR_High-Resolution Image Synthesis with Latent Diffusion Models
    1.AutoEncoderAutoEncoder(自编码器)是一种无监督学习的神经网络模型,用于学习有效的数据表示。它的目标是将输入数据编码成一种潜在的、紧凑的表示形式,然后从这个表示中重构原始输入。自编码器由两部分组成:编码器(Encoder)和解码器(Decoder)。编码器(Encoder):将输入数据映射到潜在表示空......
  • 软件测试/人工智能|解决Selenium中的异常问题:“error sending request for url”
    前言在使用Selenium自动化测试时,有时会遇到“errorsendingrequestforurl”这样的异常。这个问题通常与Chrome浏览器驱动程序和网络请求相关。本文让我们来了解如何解决这个问题。问题原因这个异常通常出现在Selenium与Chrome浏览器交互时,可能由于网络请求或Chrome驱动程序......
  • Delphi Android程序启动过程
    文章转载于不得闲大师的文章,源文链 https://www.cnblogs.com/DxSoft/p/4460236.html Delphi的Android程序是原生的程序,也就是NativeActivity。那么就需要先看一下NativeActivity的原理,在AndroidManifest.xml文件里面指定入口activity为nativeactivity,这样应用程序一启动,jav......
  • js excel操作
    Js操作Excel常用方法Js操作Excel常用方法1.创建一个新Excel表格    varXLObj=newActiveXObject("Excel.Application");    varxlBook=XLObj.Workbooks.Add;                         //新增工作簿    varExcelSheet=xlBook.Wo......
  • Element Message相同文案重复提示处理
    import{Message}from'element-ui'letlastMessageText=nullletmessageTimer=nullexportdefaultfunctionshowMessage(options){ //如果新的消息与上一条消息相同,并且计时器还在运行,那么不显示新的消息 if(options.message===lastMessageText&&mess......
  • Linux 部署1Panel现代化运维管理面板教程并且实现远程访问(运维福音!!)
    1Panel是一个现代化、开源的Linux服务器运维管理面板。高效管理,通过Web端轻松管理Linux服务器,包括主机监控、文件管理、数据库管理、容器管理等下面我们介绍在Linux本地安装1Panel并结合cpolar内网穿透工具实现远程访问1Panel管理界面1.Linux安装1Panel执行如下......
  • Vue + Element UI 实现复制当前行数据功能(复制到新增页面组件值不能更新等问题解决)
    1、需求使用Vue+ElementUI实现在列表的操作栏新增一个复制按钮,复制当前行的数据可以打开新增弹窗后亦可以跳转到新增页面,本文实现为跳转到新增页面。2、实现1)列表页index.vue<el-table><!--其他列--><el-table-columnlabel="操作"width="150"><templateslot-scope=......