若依 ruoyi-vue el-select 多选框 全选 反选 全不选 查询功能

参考文章vue+el-select下拉实现:全选、反选、清空功能

如图,优化代码,支持若依字典
在这里插入图片描述

import multipleSelect from '@/components/MultipleSelect/index.vue'

 components: { multipleSelect },


          <el-row>
            <el-form-item label="分管领域" prop="manageDomainArray">
              <multipleSelect v-model="form.manageDomainArray" dictName="tzLyUserDomain"></multipleSelect>
            </el-form-item>
          </el-row>
<template>
  <div>
    <el-select style="width: 100% "
               v-model="selectData"
               size="small"
               multiple
               filterable
               :filter-method="selectDataFilter"
               placeholder="请选择"
               @change="sendMsg()">

      <div class="select_up">
        <el-button type="text" v-on:click="selectAll">
          <i class="el-icon-circle-check"/>
          全选
        </el-button>
        <el-button type="text" v-on:click="selectRemove">
          <i class="el-icon-close"/>
          清空
        </el-button>
        <el-button type="text" v-on:click="selectReverse">
          <i class="el-icon-copy-document"/>
          反选
        </el-button>
      </div>
      <div class="select_list">
        <el-option
          v-for="dict in options"
          :key="dict.dictValue"
          :label="dict.dictLabel"
          :value="dict.dictValue">
        </el-option>
      </div>
    </el-select>

  </div>
</template>
<script>

export default {
  props: {
    //接受父组件v-model数据
    value: {
      type: Array,
      required: [],
      default: function() {
        return []
      }
    },
    dictName: {
      type: String
    }
  },
  watch: {
    //监听父组件v-model数据变化,修改子组件selectData
    value(newValue, oldValue) {
      this.selectData = newValue
    },
    // 监听子组件selectData变化,修改父组件v-model
    selectData: function(newVal, oldVal) {
      this.sendMsg()
    }
  },
  data() {
    return {
      options: [],//下拉选项
      selectData: []//选中数据
    }
  },
  created() {
    this.getDicts(this.dictName).then(res => {
      this.options = res.data
      // 第一次打开,初始化 selectData
      this.selectData = this.value
    })
  },
  methods: {
    //清空操作
    selectRemove() {
      this.selectData = []
    },
    //全选操作
    selectAll() {
      this.options.map(dict => {
        if (!this.selectData.includes(dict.dictValue)) {
          this.selectData.push(dict.dictValue)
        }
      })
    },
    //反选操作
    selectReverse() {
      const val = []
      this.options.forEach(dict => {
        const index = this.selectData.indexOf(dict.dictValue)
        if (index !== -1) {
          // 已选中的项,不加入反选列表
        } else {
          val.push(dict.dictValue)
        }
      })
      this.selectData = val // 直接修改 selectData 数组
    },
    //查询操作
    selectDataFilter(query) {
      if (query !== null && query !== undefined && query.trim() !== '') {
        this.options.forEach(dict => {
          //模糊查询并且不存在
          if (dict.dictLabel.includes(query) && !this.selectData.includes(dict.dictValue)) {
            this.selectData.push(dict.dictValue)
          }
        })
      }
    },
    sendMsg() {
      //input是默认双向绑定事件,select控件也可以用input给父组件传递数据
      this.$emit('input', this.selectData)
    }

  }
}
</script>
<style scoped lang="scss">
.el-select-dropdown__list {
  height: 100%;
  overflow: hidden;

}

.select_up {
  padding: 0 14px;
  font-size: 14px;
  position: absolute;
  z-index: 99999;
  background-color: white;
  top: 0px;
  width: 100%;
  border-radius: 5px 5px 0 0;

  ::v-deep .el-button {
    color: #bcbcbc;
    font-size: 14px;

    i {
      font-size: 14px;
    }
  }

  ::v-deep .el-button:hover {
    color: #409EFF;
  }

  .el-button + .el-button {
    margin-left: 6px;
  }
}

.select_list {
  margin-top: 25px;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/545451.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ETL中如何运用好MQ消息集成

一、ETL的主要作用 ETL&#xff08;Extract, Transform, Load&#xff09;是数据仓库中的关键环节&#xff0c;其主要作用是将数据从源系统中抽取出来&#xff0c;经过转换和清洗后加载到数据仓库中。具体而言&#xff1a; Extract&#xff08;抽取&#xff09;&#xff1a;从…

python爬虫 - 爬取图片

文章目录 1、爬取图片示例1&#xff1a;使用 .urlretrieve() 函数2、爬取图片示例2 - 使用 open/write 函数3、爬取图片示例33.1 使用 open/write 下载3.2 使用 urlretrieve下载 爬虫的本质&#xff1a;模拟对应的App&#xff0c;浏览器访问对应的地址获取到数据 1、爬取图片示…

【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_9.6p1(亲测无问题,建议收藏)

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

centos 6设置yum源遇到的问题

由于centos6已经不被支持了&#xff0c;直接抄人家的命令是不行的 比如执行这些&#xff08;是wget或者是curl按照自己的改&#xff09; wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo yum makecache会报错 需要到对应的镜像源网…

Base64编码方式简介

从二进制转为字符的一种编码。每个base64字符表示长度为6个比特的二进制数据&#xff0c;因此可以推得每3个字节&#xff08;24比特&#xff09;可以由4个base64字符组成。base64字符编码表如下&#xff1a; 因此需要注意的是&#xff0c;当二进制文件长度不是3的倍数的时候&a…

OSCP靶场--RPC1

OSCP靶场–RPC1 考点 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC 192.168.227.236 -p- -Pn --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-14 22:21 EDT Nmap scan report for 192.168.227.236 Host is up (0.14s latency). …

20V/200mA高PSRR低噪声高性能车规级稳压器

概述 PCD3900 是一款高性能低压差线性稳压电源&#xff0c;其采用的超低噪声和超高电源抑制比&#xff08;PSRR&#xff09;架构对噪声敏感的信号采集和无线通信应用供电。 PCD3900 被设计为一个高性能电流基准后跟随一个高性能电压缓冲器&#xff0c;其可容易地通过并联以进一…

MySQL之锁详细总结

介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用外&#xff0c;数据也是一种供多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题&…

如何在Windows使用固定公网地址SSH远程访问本地Archcraft系统

文章目录 1. 本地SSH连接测试2. Archcraft安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接小结 5. 固定SSH公网地址6. SSH固定地址连接 Archcraft是一个基于Arch Linux的Linux发行版&#xff0c;它使用最简主义的窗口管理器而不是功能齐全的桌面环境来提供图形化用户界面。 C…

MOM系统:制造企业的“神级助手“!

一、大环境下的智能化改造 嘿&#xff0c;亲爱的制造企业老板们&#xff0c;你们是否曾经为生产计划混乱、物料和设备管理无序、产品质量不稳定等等问题而头疼不已&#xff1f;现在&#xff0c;有一个超级助手可以帮助你们解决这些问题&#xff0c;那就是MOM系统&#xff01;什…

QT、ffmpeg视频监控分屏

1、支持分屏&#xff08;4&#xff0c;6&#xff0c;8&#xff0c;9&#xff0c;13&#xff0c;16&#xff0c;25&#xff0c;32&#xff0c;64&#xff09;切换 2、支持拖拽效果 3、支持播放mp4&#xff0c;rtmp等 4、本人亲测支持播放32路&#xff0c;64路没做测试 5、支持读…

中职大数据技术应用就业方向解读

在信息化时代&#xff0c;各个行业都或多或少会需要运用到数据分析&#xff0c;因此大数据技术应用专业毕业生有着比较广泛的就业选择。 ●大数据技术应用● 主干课程 计算机网络基础、C语言程序设计、常用软件应用、计算机编程基础、数据库基础应用、计算机网络基础…

Upload-labs(Pass-14 - Pass-16)

Pass-14 &#xff08;图片马&#xff0c;判断文件类型&#xff09; 图片的格式在防护中通常是不会使用后缀进行判断的依据&#xff0c;文件头是文件开头的一段二进制码&#xff0c;不同类型的图片也就会有不同的二进制头。   JPEG (jpg)&#xff0c;文件头&#xff1a;FF D…

The 0-1 Knapsack Problem KNAPSACK

Problem Let U {u1, u2, . . . , un} be a set of n items to be packed in a knapsack of size C. For 1 ≤ j ≤ n, let sj and vj be the size and value of the jth item, respectively. Here C and sj, vj , 1 ≤ j ≤ n, are all positive integers. Each item should e…

ELK日志收集和备份填坑实战 (滞后8个小时等时区问题)

ES的备份&#xff1a;ES快照备份 根据时间&#xff0c;每天零点在Linux机器crontab来调用api接口实现快照备份&#xff0c;通过快照备份&#xff0c;可以定准恢复到某一天的日志。 现象&#xff1a;&#xff08;坑&#xff1a;但是恢复某一天日志&#xff0c;发现会少8小时的日…

P2P通信基本原理

在数字世界的脉络中&#xff0c;点对点&#xff08;P2P&#xff09;技术如同一条悄无声息的河流&#xff0c;流经信息的每个角落&#xff0c;连接着世界各地的计算机和设备。这种去中心化的网络模型&#xff0c;不仅打破了传统的客户端-服务器架构的界限&#xff0c;还赋予了数…

BCLinux8U6系统准备oceanbase开源数据库的 OBD 中控机

本文记录了在BCLinux8U6操作系统的虚拟服务器准备oceanbase开源数据库的 OBD 中控机的过程。 一、中控机环境 1、虚拟服务器硬件配置 2、操作系统版本信息 [rootlocalhost ~]# cat /etc/os-release NAME"BigCloud Enterprise Linux" VERSION"8.6 (Core)&qu…

Golang | Leetcode Golang题解之第29题两数相除

题目&#xff1a; 题解&#xff1a; func divide(dividend, divisor int) int {if dividend math.MinInt32 { // 考虑被除数为最小值的情况if divisor 1 {return math.MinInt32}if divisor -1 {return math.MaxInt32}}if divisor math.MinInt32 { // 考虑除数为最小值的情…

C语言单链表详解

链表和顺序表的区别 顺序表的底层存储空间是连续的&#xff0c;链表的底层存储空间是不连续的&#xff0c;链表的每个节点需要额外的指针来指向下一个节点&#xff0c;占用更多的存储空间。 顺序表的随机访问性能好&#xff0c;时间复杂度为O(1)&#xff0c;链表的随机访问性能…

谷歌最强大模型Gemini 1.5 Pro免费开放了,附详细流程!

Gemini 1.5 Pro可以免费使用了。打开试了下。 下面分享一下,实际体验已经登录流程。 打开 网址,点击上方红色箭头所指的蓝色框。 https://ai.google.devhttps://ai.google.dev登录Gmail账号 输入谷歌邮箱账号,然后点击下一步。 输入密码,然