首页 > 其他分享 >vue中el-select 多选限制条件(根据不同选项进行不同可选可不选)

vue中el-select 多选限制条件(根据不同选项进行不同可选可不选)

时间:2023-05-29 11:37:44浏览次数:35  
标签:el vue searchform item tag push 缺陷 select tagslist

首先看一个数据结构:

1:无缺陷

2:有缺陷-》缺陷1,缺陷2,缺陷3

3:审核不通过

把它们集成到一个平面数据,进行下拉所选就变成了:

1:无缺陷,2:审核不通过,3:缺陷一,4:缺陷二,5:缺陷三。

因为字典项是个平面的,所以在类似的大批量的情况下,有缺陷这个类如果还按照这种结构除非自己去归类。想要直接映射到下拉就要进行数据的判断。

所以需求就变成了这样:

1:下拉框可多选

2:当选中(多选后包含指定值)有 无缺陷 选项时,只能选择无缺陷的,其它的缺陷标签就不能同时出现了

3:当选中(多选或直接选择)有不符合样本 选项时,只能选择不符合样本项,其它的缺陷标签包括无缺陷标签就不能同时出现

实现思路:

1:首先做正常下拉选项,然后支持多选

2:监听选择事件@changeSelect=""select"

3:因为是数据驱动,所以只要在数据层面控制数据即可

根据不同的条件监听到当前选中的是不是包含指定不让冲突类型进行判断

代码:

<el-form-item label="缺陷标签:" prop="tag">
            <el-select v-model="searchform.tag"  @change="tagchange" multiple>
              <el-option v-for="v in opttag" :value="v.value" :label="v.label" :key="v.label"></el-option>
            </el-select>
          </el-form-item>

tagchange(v){
      // 限制无故障不冲突
      if(v.includes('无故障')){
          this.searchform.tag = []
          this.searchform.tag.push('无故障')
      }
      // 限制后使组件还能正常多选其它项
      if(v[0]=='无故障'){
        this.searchform.tag.shift()
        this.searchform.tag.push(v[1])
      }
      // 以此类推 可以添加其它
       if(v.includes('审核不通过')){
          this.searchform.tag = []
          this.searchform.tag.push('审核不通过')
      }
      if(v[0]=='审核不通过'){
        this.searchform.tag.shift()
        this.searchform.tag.push(v[1])
      }
      console.log(this.searchform.tag)
    },

如果只是限制如果选中a项,就清空了其它已选的多个项目,那么后面再选就会被限制选择了,所以要补充,首先清空然后添加当前所选的v[1],而v[0] 永远是当前所选项,所以可以以此判断出。

同理:如果还有其它类似的条件限制,依照这种判断往后添加即可

 

扩展:其它模块显示中 点击按钮给图片导入此类似标签,也需要这种限制:

如果只是限制如果选中a项,就清空了其它已选的多个项目,那么后面再选就会被限制选择了,所以要补充,首先清空然后添加当前所选的v[1],而v[0] 永远是当前所选项,所以可以以此判断出。

代码判断:

// 审核
    fnchosetag(item){
      if(this.tagslist.includes(item)){
        // this.$message('不能重复选择')
      }else{
        this.tagslist.push(item)
      }
      if(item.value=='无缺陷'){
        this.tagslist = []
        this.tagslist.push(item)
      }
      if(item.value=='样本不合格'){
          this.tagslist = []
        this.tagslist.push(item)
      }
      if(this.tagslist[0].value=='无缺陷'){
        this.tagslist = []
        this.tagslist.push(item)
      }
      if(this.tagslist[0].value=='样本不合格'){
        this.tagslist = []
        this.tagslist.push(item)
      }
      
    },

判断限制的思路其实是一样的。

 

标签:el,vue,searchform,item,tag,push,缺陷,select,tagslist
From: https://www.cnblogs.com/zbbk/p/17439980.html

相关文章

  • vue3学习中使用vue-router@4的问题Invalid VNode type: undefined (undefined)
    首先是按照常规的箭头函数引入的方法,结果报一下错误,且页面报错constHelloWorld=()=>import('../components/HelloWorld.vue'); 解决办法import{defineAsyncComponent}from'vue'constHelloWorld=defineAsyncComponent(()=>import('../components/HelloWorld.vue......
  • selenium爬虫 根据域名后缀查询网站数量
    本质是对‘site’功能的自动化查询importrefromseleniumimportwebdrivera={'org.do',....,'org.ua'}driver=webdriver.Chrome()driver.get("https://www.baidu.com/")p_input=driver.find_element_by_id('kw')dir_={}d_=......
  • laravel 框架中的 事件 监听 和订阅
    真实举例老规矩假设我们需要在用户注册成功后发送一封欢迎邮件给用户首先定义事件App\Events\UserRegistered、App\Events\UserLogin然后定义一个监听器App\Listeners\SendWelcomeEmail然后添加一个订阅者App\Listeners\UserEventSubscriber简化版本Event::lis......
  • powershell 更新版本
    在Windows操作系统中,可以使用PowerShell命令行工具来更新版本。具体地说,可以按照以下步骤进行操作:打开PowerShell:在开始菜单中搜索“PowerShell”,然后单击打开。检查Windows版本:在PowerShell命令行中输入“winver”,然后按回车键执行。这将显示当前Windows版本的详细信息,包括......
  • Python generator 构建协程,实现异步编程(使用yield构建消息处理者和消息创造者)
    协程的定义理解Python协程可以在单个处理机或多个处理机上运行,这取决于具体实现方式。在Python中,主要有两种协程实现方式:生成器协程和asyncio协程。生成器协程只能在单个处理机上运行,因为生成器协程是通过生成器函数实现的,而生成器函数在单个线程中执行。生成器协程也称为......
  • 1万7千条英语口语句子大全ACCESS\EXCEL数据库
    其实,关于英汉词典或者英语类的数据库硬盘上还有很多很多,不仅仅是已放在这里的,至于会不会陆续的发在这里得视情况,今天的这个《1万7千条英语日常口语句子大全》只是其中之一。截图下方有显示“共有记录数”,截图包含了表的所有字段列。该数据提供ACCESS数据库文件(扩展名是MDB)以及EX......
  • 如何在前端应用中合并多个 Excel 工作簿
    本文由葡萄城技术团队于博客园原创并首发。葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言|问题背景SpreadJS是纯前端的电子表格控件,可以轻松加载Excel工作簿中的数据并将它们呈现在前端浏览器应用的网页上。在某些情况下,您可能需要将来自多......
  • shell正则匹配捕获引用进行IP匹配
    在服务器上加了一个服务检测机制,用到正则来匹配IP和捕获分组。shell和其他语言一样也可以使用正则分组捕获,不过不能使用$1或1这样的形式来捕获分组,可以通过数组${BASH_REMATCH}来获得,如${BASH_REMATCH[1]},${BASH_REMATCH[N]}简单的测试如下所示:#!/bin/baship="121.0.2.2"if[......
  • laravel box/spout 处理excel大数据
    1、简介laravel导入导出常规使用maatwebsite/excel,在处理大数据时效率低、占用过多内存。而box/spout效率高、占用内存少,更适合处理大数据的导入导出。2、安装composerrequirebox/spout"box/spout":"^3.1"3、封装<?phpnamespaceApp\Services\Common;useBox\Spo......
  • 1万5千求职面试宝典大全ACCESS\EXCEL数据库
    《求职面试宝典大全ACCESS数据库》包含:1-穿着打扮、2-随身携带、3-场景指导、4-考官分析、5-考官问题、6-回答参考表、7-面试大全。虽然有些表的记录数不多,但胜在信息全面以及考官问题及答案的全面。问题类型记录数为:待遇问题(10条)、个人素养(10条)、教育家庭(10条)、经验问题(10条)、......