当前位置: 首页 > article >正文

Ant Design Vue Select 选择器 全选 功能

Vue.js的组件库Ant Design Vue Select 选择器没有全选功能,如下图所示:

在项目中,我们自己实现了全选清空功能,如下所示:

代码如下所示:

<!--
=========================================================
* 参数配置 - 风力发电 - 曲线图
* 猴王软件学院 - 大强
* 2025-3-23
=========================================================
-->
<template><div><div class="flex-container"><div class="flex-item"><a-selectid="a-select-scene":options="options_scene"mode="combobox"style="width: 200px; height:50px;"@change="proChange_scene"showArrow="true"placeholder="请选择场景"v-model="selected_scene"></a-select></div><div class="flex-item"><a-selectid="a-select-node":options="options_node"mode="multiple"style="width: 200px; height:50px;"@change="proChange_node"showArrow="true"v-model:value="selected_node"><template #dropdownRender="{ menuNode: menu }"><div><a-button @click="allSelectedFun" type="primary" style="margin-right: 10px;">全选</a-button><a-button @click="clearFun">清空</a-button><a-divider style="margin: 5px 0;" /><v-nodes :vnodes="menu" /></div></template></a-select><div class="my-ant-select-selection-placeholder">请选择节点</div></div><div class="flex-item"><a-selectid="a-select-power":options="options_power"mode="combobox"style="width: 200px; height:50px;"@change="proChange_power"showArrow="true"placeholder="请选择功率"v-model="selected_power"></a-select></div><div class="flex-item"><a-button type="primary" preIcon="ant-design:search-outlined" @click="searchChart">查看</a-button></div></div><div ref="chartRef" :style="{ height, width }"></div></div>
</template>
<script lang="ts">
import {defineComponent, PropType, ref, Ref, reactive, watchEffect, unref, onMounted} from 'vue';
import {useECharts} from '/@/hooks/web/useECharts';
import {cloneDeep} from 'lodash-es';
import {Select} from "ant-design-vue";
import {initDictOptions} from "@/utils/dict";export default defineComponent({name: 'LineMulti',components: {Select,VNodes: (_, { attrs }) => {return attrs.vnodes;},},props: {chartData: {type: Array,default: () => [],required: true,},option: {type: Object,default: () => ({}),},type: {type: String as PropType<string>,default: 'line',},width: {type: String as PropType<string>,default: '100%',},height: {type: String as PropType<string>,default: 'calc(100vh - 78px)',},},emits: ['click'],setup(props, {emit}) {const chartRef = ref<HTMLDivElement | null>(null);const {setOptions, getInstance} = useECharts(chartRef as Ref<HTMLDivElement>);const option = reactive({tooltip: {trigger: 'axis',axisPointer: {type: 'shadow',label: {show: true,backgroundColor: '#333',},},},legend: {top: 30,},grid: {top: 60,},xAxis: {name: '时间(小时)',type: 'category',data: [],},yAxis: {name: '功率(万千瓦)',type: 'value',},series: [],});// 功率let options_power = ref<any>([]);let selected_power = ref('');// 场景let options_scene = ref<any>([]);let selected_scene = ref('');// 节点let options_node = ref<any>([]);// let selected_node = ref('');let selected_node = ref([]);/*** 功率改变函数* @param val*/function proChange_power(val) {selected_power.value = val;}/*** 场景改变函数* @param val*/function proChange_scene(val) {selected_scene.value = val;}/*** 节点改变函数* @param val*/function proChange_node(val) {selected_node.value = val;}// 全选函数function allSelectedFun() {options_node.value.forEach((item) => {let index = selected_node.value.indexOf(item.value);if (index == -1) {selected_node.value.push(item.value);}});};// 清空函数function clearFun() {selected_node.value.splice(0, selected_node.value.length);};/*** 查看图表*/function searchChart() {if (selected_scene.value == '') {alert("请选择场景!")return}if (selected_node.value == '') {alert("请选择节点!")return}if (selected_power.value == '') {alert("请选择功率!")return}if (props.option) {Object.assign(option, cloneDeep(props.option));}//节点let nodeArr = Array.from(new Set(props.chartData.map((item) => item.nodeName)));//轴数据let xAxisData = Array.from(new Set(props.chartData.map((item) => item.index)));let seriesData = [];nodeArr.forEach((node) => {selected_node.value.forEach((value) => {if (node === value) {let obj: any = {name: node, type: props.type};// update-begin-author:liusq date:2023-7-12 for: [issues/613] LineMulti 在数据不对齐时,横坐标计算错误let data = [];xAxisData.forEach((x) => {let dataArr = props.chartData.filter((item) =>x == item.index &&  // 索引selected_power.value == item.power &&  // 功率selected_scene.value == item.scene &&  // 场景node == item.nodeName // 节点);if (dataArr && dataArr.length > 0) {data.push(dataArr[0].value);} else {data.push(null);}});// update-end-author:liusq date:2023-7-12 for: [issues/613] LineMulti 在数据不对齐时,横坐标计算错误//data数据obj['data'] = data;seriesData.push(obj);}});});option.series = seriesData;option.xAxis.data = xAxisData;// option.legend.show = false;option.legend.selector = [{// 全选type: 'all',// 可以是任意你喜欢的标题title: '全选'},{// 反选type: 'inverse',// 可以是任意你喜欢的标题title: '反选'}];option.legend.selectedMode = false;option.legend.orient = 'vertical';option.legend.right = '0px';// option.legend.top = '-50px';console.log('option', option);setOptions(option);getInstance()?.off('click', onClick);getInstance()?.on('click', onClick);}function onClick(params) {emit('click', params);}/*** 初始化字典选项*/async function initDictConfig() {options_power.value = await initDictOptions('power');options_scene.value = await initDictOptions('scene');options_node.value = await initDictOptions('node');}onMounted(() => {//初始化字典选项initDictConfig();});return {options_power, options_scene, options_node,selected_power, selected_scene, selected_node,proChange_power, proChange_scene, proChange_node, chartRef, searchChart,allSelectedFun, clearFun};},
});
</script><style>
.flex-container {display: -webkit-flex;display: flex;
}.flex-item {width: 210px;
}.ant-select-multiple .ant-select-selection-overflow-item {flex: none;align-self: center;max-width: 100%;display: none;
}.my-ant-select-selection-placeholder {overflow: hidden;white-space: nowrap;text-overflow: ellipsis;flex: 1;color: rgba(0, 0, 0, 0.65);pointer-events: none;margin-top: -45px;margin-left: 20px;position: relative;
}
</style>

相关文章:

Ant Design Vue Select 选择器 全选 功能

Vue.js的组件库Ant Design Vue Select 选择器没有全选功能&#xff0c;如下图所示&#xff1a; 在项目中&#xff0c;我们自己实现了全选和清空功能&#xff0c;如下所示&#xff1a; 代码如下所示&#xff1a; <!--* 参数配置 - 风力发电 - 曲线图 * 猴王软件学院 - 大强 …...

系统与网络安全------网络应用基础(1)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 TCP/IP协议及配置 概述 TCP/IP协议族 计算机之间进行通信时必须共同遵循的一种通信规定 最广泛使用的通信协议的集合 包括大量Internet应用中的标准协议 支持跨网络架构、跨操作系统平台的数据通信 主机…...

ZIP_STORED和ZIP_LZMA没有compresslevel参数!

在使用py的zipfile库进行压缩的时候&#xff0c;有这么一个函数&#xff1a; def write(self, filename, arcnameNone,compress_typeNone, compresslevelNone): 一般我们在压缩文件进去的时候都是用这个函数的&#xff1b; 对于compresslevel这个函数&#xff0c;它是用来指…...

坦克大战(c++)

今天我给大家分享一个c游戏。 废话不多说&#xff0c;作品展示&#xff1a; #include <stdio.h> #include <windows.h> #include <time.h> //里规格&#xff1a;长39*278 &#xff08;真坐标&#xff09;(假坐标宽为39) 高39 //外规格&#xff1a;长…...

论文阅读:2023 EMNLP SeqXGPT: Sentence-level AI-generated text detection

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 SeqXGPT: Sentence-level AI-generated text detection https://aclanthology.org/2023.emnlp-main.73/ https://github.com/Jihuai-wpy/SeqXGPT https://www.doubao.com/chat/21003…...

JDK 24 发布,新特性解读!

一、版本演进与技术格局新动向 北京时间3月20日&#xff0c;Oracle正式发布Java SE 24。作为继Java 21之后的第三个非LTS版本&#xff0c;其技术革新力度远超预期——共集成24项JEP提案&#xff0c;相当于Java 22&#xff08;12项&#xff09;与Java 23&#xff08;12项&#…...

k8s中service概述(二)NodePort

NodePort 是 Kubernetes 中一种用于对外暴露服务的 Service 类型。它通过在集群的每个节点上开放一个静态端口&#xff08;NodePort&#xff09;&#xff0c;使得外部用户可以通过节点的 IP 地址和该端口访问集群内部的服务。以下是关于 NodePort Service 的详细说明&#xff1…...

Oracle归档配置及检查

配置归档位置到 USE_DB_RECOVERY_FILE_DEST&#xff0c;并设置存储大小 startup mount; !mkdir /db/archivelog ALTER SYSTEM SET db_recovery_file_dest_size100G SCOPEBOTH; ALTER SYSTEM SET db_recovery_file_dest/db/archivelog SCOPEBOTH; ALTER SYSTEM SET log_archive…...

计算机二级:函数基础题

函数基础题 第一题 rinput("请输入半径&#xff1a;") c3.1415926*r*2 print("{:.0f}".format(c))输出&#xff1a; Type Error第二题 a7 b2 print(a%2)输出 1第三题 ab4 def my_ab(ab,xy):abpow(ab,xy)print(ab,end"\n") my_ab(ab,2)prin…...

Python爬虫-爬取AliExpress商品搜索词排名数据

前言 本文是该专栏的第49篇,后面会持续分享python爬虫干货知识,记得关注。 本文,笔者以AliExpress平台为例。基于Python爬虫,通过某个指定的“搜索关键词”,批量获取该“搜索关键词”的商品排名数据。 具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。废…...

AI 时代,我们需要什么样的数据库?

AI 时代&#xff0c;我们需要什么样的数据库&#xff1f; 人工智能正在悄然改变软件开发的方式。过去一年间&#xff0c;诸如 GitHub Spark、Replit 和 Bolt 等新兴 AI 工具层出不穷&#xff0c;能够快速生成简单的前端应用&#xff0c;甚至无需传统意义上的后端服务就能部署上…...

刷机维修进阶教程-----adb禁用错了系统app导致无法开机 如何保数据无损恢复机型

在刷机维修过程中 。我们会遇到一些由于客户使用adb指令来禁用手机app而导致手机无法开机进入系统的故障机型。通常此类问题机型有好几种解决方法。但如果客户需要保数据来恢复机型。其实操作也是很简单的.还有类似误删除应用导致不开机等等如何保数据。 通过博文了解💝💝�…...

Vue3 实战:基于 mxGraph 与 WebSocket 的动态流程图构建

本文将详细介绍如何在 Vue3 项目中集成 mxGraph 可视化库&#xff0c;并通过 WebSocket 实现画布元素的实时更新。适合有 Vue 基础的前端开发者学习参考。 一、技术栈准备 Vue3&#xff1a;采用 Composition API 开发mxGraph&#xff1a;JavaScript 流程图库&#xff08;版本 …...

Ubuntu AX200 iwlwifi-cc-46.3cfab8da.0.tgz无法下载的解决办法

文章目录 前言一、检查网卡是否被识别二、确认内核模块是否可用1.AX200 wifi 要求内核5.12.检查 iwlwifi.ko 是否存在&#xff1a;3.如果未找到&#xff0c;可能是内核模块未正确生成。尝试安装 linux-modules-extra&#xff1a;4.再次检查 iwlwifi.ko 是否存在&#xff1a;5.确…...

蓝桥杯,利用 Vue.js 构建简易任务管理器

在日常开发中&#xff0c;我们经常需要处理各种任务和计划。一个简单且高效的任务管理器可以帮助我们更好地组织和安排时间。今天&#xff0c;我将向大家展示如何使用 Vue.js 构建一个简易的任务管理器。这个项目不仅能够帮助我们更好地理解 Vue.js 的基本语法和功能&#xff0…...

国际机构Gartner发布2025年网络安全趋势

转自&#xff1a;中国新闻网 中新网北京3月14日电 国际机构高德纳(Gartner)14日发布的消息称&#xff0c;网络安全和风险管理在2025年“面临挑战与机遇并存的局面”&#xff0c;“实现转型和提高弹性”对确保企业在快速变化的数字世界中&#xff0c;实现安全且可持续的创新至关…...

【设计模式】单件模式

七、单件模式 单件(Singleton) 模式也称单例模式/单态模式&#xff0c;是一种创建型模式&#xff0c;用于创建只能产生 一个对象实例 的类。该模式比较特殊&#xff0c;其实现代码中没有用到设计模式中经常提起的抽象概念&#xff0c;而是使用了一种比较特殊的语法结构&#x…...

Elasticsearch + Docker:实现容器化部署指南

Elasticsearch是一款强大的分布式搜索和分析引擎&#xff0c;广泛应用于日志分析、全文检索、实时数据分析等场景。而Docker作为一种轻量级的容器化技术&#xff0c;能够帮助开发者快速部署和管理应用。将Elasticsearch与Docker结合&#xff0c;不仅可以简化部署流程&#xff0…...

win32汇编环境,网络编程入门之十一

;win32汇编环境,网络编程入门之十一 ;在上一教程里&#xff0c;我们学习了如何读取大容量的网页内容&#xff0c;在这一教程里&#xff0c;我们学习一下如何在wininet或winhttp机制中提取网页中的超链接 ;>>>>>>>>>>>>>>>>>…...

穿越之程序员周树人的狂人日记Part3__人机共生纪元

穿越之程序员周树人的狂人日记Part3__人机共生纪元 代码知识点&#xff1a;协程、内存管理、版本控制 故事一【协程陷阱】择偶标准的多核运算 故事二【内存泄漏】中产幻觉的垃圾回收 故事三【版本控制】人设仓库的强制推送 故事四【容器化生存】&#xff1a;员工生存之现状 静夜…...

后端——AOP异步日志

需求分析 在SpringBoot系统中&#xff0c;一般会对访问系统的请求做日志记录的需求&#xff0c;确保系统的安全维护以及查看接口的调用情况&#xff0c;可以使用AOP对controller层的接口进行增强&#xff0c;作日志记录。日志保存在数据库当中&#xff0c;为了避免影响接口的响…...

【C#语言】深入理解C#多线程编程:从基础到高性能实践

文章目录 ⭐前言⭐一、多线程的本质价值&#x1f31f;1、现代计算需求&#x1f31f;2、C#线程演进史 ⭐二、线程实现方案对比&#x1f31f;1、传统线程模型&#x1f31f;2、现代任务模型&#xff08;推荐&#xff09;&#x1f31f;3、异步编程范式 ⭐三、线程安全深度解析&…...

第十四章:模板实例化_《C++ Templates》notes

模板实例化 核心知识点解析多选题设计题关键点总结 核心知识点解析 两阶段查找&#xff08;Two-Phase Lookup&#xff09; 原理&#xff1a; 模板在编译时分两个阶段处理&#xff1a; 第一阶段&#xff08;定义时&#xff09;&#xff1a;检查模板语法和非依赖名称&#xff0…...

循环查询指定服务器开放端口(Python)

循环查询指定服务器开放端口列表 # Time : 2025/3/22 # Author : cookie # Desc :import socket import concurrent.futures from datetime import datetime# 设置目标IP和端口范围 target_ip input("请输入目标IP地址: ") start_port int(input("请输入…...

算法 | 蜣螂优化算法原理,引言,公式,算法改进综述,应用场景及matlab完整代码

蜣螂优化算法(Dung Beetle Optimizer, DBO)详解 1. 算法原理 蜣螂优化算法(DBO)是一种基于自然界蜣螂行为的元启发式优化算法,灵感来源于蜣螂的滚球、繁殖、觅食和偷窃行为。其核心思想是通过模拟蜣螂在复杂环境中的协作与竞争机制,解决全局优化问题。关键行为模拟: 滚球…...

排序复习_代码纯享

头文件 #pragma once #include<iostream> #include<vector> #include<utility> using std::vector; using std::cout; using std::cin; using std::endl; using std::swap;//插入排序 //1、直接插入排序&#xff08;稳定&#xff09; void InsertSort(vecto…...

【STM32】第一个工程的创建

目录 1、获取 KEIL5 安装包2、开始安装 KEIL52.1、 激活2.2、安装DFP库 3、工程创建4、搭建框架5、开始编写代码 1、获取 KEIL5 安装包 要想获得 KEIL5 的安装包&#xff0c;在百度里面搜索“KEIL5 下载”即可找到很多网友提供的下载文件&#xff0c;或者到 KEIL 的官网下载&a…...

SpringBoot+策略模式+枚举类,优雅消除if-else

需求分析 公司做物联网系统的&#xff0c;使用nettry进行设备连接&#xff0c;对设备进行数据采集&#xff0c;根据设备的协议对数据进行解析&#xff0c;解析完成之后存放数据库&#xff0c;但是不同厂家的设备协议不同。公司系统使用了使用了函数式编程的去写了一个解析类&am…...

前端框架学习路径与注意事项

学习前端框架是一个系统化的过程&#xff0c;需要结合理论、实践和工具链的综合掌握。以下是学习路径的关键方面和注意事项&#xff1a; 一、学习路径的核心方面 1. 基础概念与核心思想 组件化开发&#xff1a;理解组件的作用&#xff08;复用性、隔离性&#xff09;、组件通信…...

kubeval结合kube-score实现k8s yaml文件校验

一、工具定位与互补性 工具核心能力检查范围kubeval校验 YAML 语法和 API 版本兼容性确保资源配置符合 Kubernetes 版本规范kube-score检查安全配置与最佳实践识别资源限制缺失、权限过高等问题 协同作用&#xff1a; kubeval 确保配置文件的语法正确性&#xff0c;避免低级错…...