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

news2024/12/23 11:12:43

参考文章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>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于 AssertionError: Torch not compiled with CUDA enabled 问题

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

安全开发实战(4)--whois与子域名爆破

目录 安全开发专栏 前言 whois查询 子域名 子域名爆破 1.4 whois查询 方式1: 方式2: 1.5 子域名查询 方式1:子域名爆破 1.5.1 One 1.5.2 Two 方式2:其他方式 总结 安全开发专栏 安全开发实战​​http://t.csdnimg.cn/25N7H 前言 whois查询 Whois 查询是一种用…

《四月女友》定档5月18日 佐藤健、长泽雅美演绎唯美爱情

由川村元气担任编剧&#xff0c;山田智和导演&#xff0c;佐藤健、长泽雅美、森七菜主演的唯美爱情电影《四月女友》今日正式宣布定档5月18日&#xff0c;并发布了“相恋”版预告和“相拥”版海报。预告中&#xff0c;优美宁静的风景令人心生向往&#xff0c;藤代俊&#xff08…

LeetCode701:二叉搜索树中的插入操作

题目描述 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 代码 递归法 class Solution { public…

【网络编程】Web服务器shttpd源码剖析——线程池调度

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的网络编程系列之web服务器shttpd源码剖析——线程池调度&#xff0c;在这篇文章中&#xff0c;你将会学习到在Linux内核中如何创建一个自己的并发服务器shttpd&#xff0c;并且我会给出源码进行剖析&#xff0c;以及手绘…

Nodejs 第六十四章(SSO单点登录)

单点登录 单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;是一种身份认证和访问控制的机制&#xff0c;允许用户使用一组凭据&#xff08;如用户名和密码&#xff09;登录到多个应用程序或系统&#xff0c;而无需为每个应用程序单独提供凭据 SSO的主要优…

EI、Scopus检索 | 2024年第四届机械、航空航天与汽车工程国际会议

会议简介 Brief Introduction 2024年第四届机械、航空航天与汽车工程国际会议&#xff08;CMAAE 2024&#xff09; 会议时间&#xff1a;2024年11月8 -10日 召开地点&#xff1a;中国北京 大会官网&#xff1a;www.cmaae.org 航空航天是当今世界最具挑战性和广泛带动性的高技术…

HCIP的学习(10)

OSPF不规则区域划分 区域划分 非骨干与骨干区域直接相连骨干区域唯一 限制规则&#xff1a; 非骨干区域之间不允许直接相互发布区域间路由信息OSPF区域水平分割&#xff1a;从非骨干区域收到的路由信息&#xff0c;ABR设备能接收到不能使用&#xff08;从某区域传出的路由&…

Tomcat漏洞利用工具-TomcatVuln

检测漏洞清单 CVE-2017-12615 PUT文件上传漏洞 tomcat-pass-getshell 弱认证部署war包 弱口令爆破 CVE-2020-1938 Tomcat 文件读取/包含项目地址 https://github.com/errors11/TomcatVuln TomcatVuln put文件上传 ajp协议漏洞 默认读取web.xml文件&#xff0c;漏洞利用…

使用yolov5训练自己的目标检测模型

使用yolov5训练自己的目标检测模型 使用yolov5训练自己的目标检测模型1. 项目的克隆2. 项目代码结构3. 环境的安装和依赖的安装4. 数据集和预训练权重的准备4.1利用labelimg标注数据和数据的准备4.1.1 **labelimg介绍:**4.1. 2 labelimg的安装 4.2 使用labelimg4.2.1 数据准备4…

【EI、CPCI稳定检索】2024年现代化教育、知识和信息管理国际学术会议(ICMEKIM 2024)

2024 International Conference on Modern Education, Knowledge and Information Management (ICMEKIM 2024) ●会议简介 2024年现代教育、知识与信息管理国际学术会议将聚焦于教育的最新趋势和信息管理技术的创新发展。本次会议将汇集全球教育专家、学者及行业领袖&#xf…

Vue2 基础学习-案例实践

数据管理信息的增删改查的实践 主要应用&#xff1a; 数据插值&#xff1a; {{xxx}}双向绑定&#xff1a;v-model点击事件函数&#xff1a;click列表xxx的增删改实现 xxx.push(row) 增加xxx.splice(id,1) 删除 一行{x,y} xxx[id]; 编辑 <!DOCTYPE html> <html la…

4月18日N皇后+解数独

51.N皇后 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案…

LangChain入门:18.使用ReAct 框架进行生成推理痕迹和任务特定行动来实现更大的协同作用

在这篇技术博文中&#xff0c;我们将深入探讨LangChain框架中的ReAct对话模型&#xff0c;以及如何利用它构建高效的智能对话系统。ReAct模型通过反应堆&#xff08;Reactor&#xff09;处理对话中的各种情况&#xff0c;实现了对复杂对话场景的有效解构。结合思维链&#xff0…

基于Java+Vue的校园交友系统(源码+文档+包运行)

一.系统概述 选题背景&#xff1a; 在大学校园中&#xff0c;学生们面临着新的环境和人际关系的挑战。有些学生可能感到孤独或者希望扩展自己的社交圈子&#xff0c;寻找志同道合的朋友或者潜在的伴侣。因此&#xff0c;设计一款校园交友平台具有重要意义。 研究意义&#xff1…

「51媒体」权重高新闻源央级媒体邀约资料有哪些?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 权重高的央级媒体邀约资源包括了中国一些最具影响力和权威性的新闻机构。具体如下&#xff1a; 人民日报&#xff1a;作为中国共产党中央委员会的机关报&#xff0c;人民日报具有极高的权…

Spring学习(三)——AOP

AOP是在不改原有代码的前提下对其进行增强 AOP(Aspect Oriented Programming)面向切面编程&#xff0c;在不惊动原始设计的基础上为其进行功能增强&#xff0c;前面咱们有技术就可以实现这样的功能即代理模式。Java设计模式——代理模式-CSDN博客 基础概念 连接点&#xff08…

SAM5716B 法国追梦DREAM 音频DSP芯片

法国追梦/DERAM SAM5504/5704/5716/5808音频DSP芯片,开发板&#xff0c;方案 可用于电子鼓、电子琴、电吉他、效果器、均衡器、啸叫抑制器等电声产品领域 全系列芯片&#xff1a; SAM2634 SAM2695 SAM5504B SAM5704B SAM5708B SAM5808B SAM5716B SAM5916B... 原厂开发…

【Qt】Qt Hello World 程序

文章目录 1、Qt Hello World 程序1.1 使用按钮实现1.1.1 使用可视化方式实现 1.1.2 纯代码方式实现 label创建堆&#xff08;内存泄漏&#xff09;或者栈问题Qt基础类&#xff08;Qstring、Qvector、Qlist&#xff09;乱码问题零散知识 1、Qt Hello World 程序 1.1 使用按钮实…

算法学习笔记:Bi-LSTM和Bi-GRU

这篇文章的作为前几篇RNN\LSTM\RNN的后续之作&#xff0c;主要就是补充一个这两个哥的变体&#xff0c;想详细了解RNN\LSTM\GRU的详细理论和公式推导以及代码的请前往下面链接&#xff1a; 算法学习笔记&#xff1a;循环神经网络&#xff08;Recurrent Neural Network)-CSDN博…