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

el-select+el-tree实现下拉树形选择

主要实现el-select下使用树结构,支持筛选功能

封装的组件 composeTree.vue

<template><el-select :popper-class="popperClass"v-model="selectedList"placeholder="请选择"filterable:filter-method="handleFilter" multiple:collapse-tags="collapseTags"size="mini"@visible-change="handleSelectVisibleChange"@remove-tag="removeTag"><el-tree :filter-node-method="filterNode" show-checkbox ref="tree"@check-change="handleCheckChange":data="treeList" :node-key="nodeKey":props="props"><template slot-scope="{ node, data }"><slot :node="node" :data="data"><span class="custom-tree-node">{{data[props.label]}}</span></slot></template></el-tree><el-option value="" style="display: none;"></el-option></el-select>
</template>
<script>
export default {props: {props: {type: Object,default: () => {return {children: 'children',label: 'label',value: 'value',}}},nodeKey: {type: String,default: 'value'},collapseTags: {type: Boolean,default: false},popperClass: {type: String,default: ''},selectedIdList: {type: Array,default: () => []},treeList: {type: Array,default: () => []}},model: {prop: 'selectedIdList',//选中的数组event: 'updateSelectedIdList'},watch: {selectedIdList: {handler(val) {this.$nextTick(() => {this.$refs['tree'].setCheckedKeys(val, true);})},immediate: true},},data() {return {list: [],searchVal: '',noFilterTreeNode: false,//是否过滤树节点selectedList: [],// checkedNodeList:[],}},created() {},methods: {//筛选handleFilter(val) {if (this.noFilterTreeNode) return;this.searchVal = val;this.$refs['tree']?.filter(val);},filterNode(value, data, node) {if (!value) return truereturn data[this.props.label].toLowerCase().indexOf(value.toLowerCase()) !== -1},removeTag(val) {this.watchCheckChangeRun = false;let obj = this.checkedNodeList.find(item => item[this.props.label] === val);this.$refs.tree.setChecked(obj[this.props.value], false);setTimeout(() => {//由于首次回显不对tree有任何操作的时候,直接移除标签,不能触发tree的change事件,所以添加个手动调用if (!this.watchCheckChangeRun) {this.handleCheckChange();}},1)},handleSelectVisibleChange(val) {this.noFilterTreeNode = false;if (!val) {//select框隐藏时,重置树结构if (this.searchVal) {this.handleFilter('')}}},//树选择变化handleCheckChange() {this.watchCheckChangeRun = true;let checkList=this.$refs['tree'].getCheckedNodes(true);this.selectedList = checkList.map(item => item[this.props.label]);this.$emit('updateSelectedIdList', checkList.map(item => item[this.props.value]));this.checkedNodeList = checkList;this.noFilterTreeNode = true;//避免vl-tree筛选问题},}
}
</script>

页面中引用组件

<template><div><h2>下拉框中树结构及搜索功能</h2><div v-for="(v,i) in list" :key="i" class="box"><composeTree  :props="props":nodeKey="'id'"v-model="v.selectedIdList" :treeList="treeList" :collapseTags="true"><!--  <template #default="{node,data}"><div>{{data.name}}-{{ data.id }}</div></template> --></composeTree><div>selectedIdList:{{ v.selectedIdList }}</div></div></div>
</template>
<script>
import composeTree from './composeTree.vue';
export default {data() {return {props:{children: 'children',label: 'name',value: 'id',},list: [{id: 1,selectedIdList:['Option001']},{id: 2,selectedIdList:['Option111']}],treeList:[]}},components: {composeTree},created() {const initials = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']const options = Array.from({ length: 50 }).map((_, idx) => ({id: `Option${idx + 1}`,name: `${initials[idx % 10]}${idx}`,children: [{id: `Option${'0' + idx + 1}`,name: `${initials[idx % 10]}${'0'+idx}`,},{id: `Option${'1' + idx + 1}`,name: `${initials[idx % 10]}${'1'+idx}`,}]}));this.treeList = options;}
}
</script>
<style lang="less" scoped>
.box {margin-bottom: 20px;
}
</style>

相关文章:

el-select+el-tree实现下拉树形选择

主要实现el-select下使用树结构,支持筛选功能 封装的组件 composeTree.vue <template><el-select :popper-class"popperClass"v-model"selectedList"placeholder"请选择"filterable:filter-method"handleFilter" multiple:c…...

android studio 安装flutter插件

在 Android Studio 中安装 Flutter 插件 Flutter 是 Google 开发的一个开源 UI 软件开发工具包&#xff0c;主要用于构建高质量的跨平台应用。然而&#xff0c;要在 Android Studio 中开发 Flutter 应用&#xff0c;首先需要安装 Flutter 插件。本文将详细介绍安装 Flutter 插…...

利用 Excel 函数随机抽取(附示例)

RANDARRAY 是 Excel 365 和 Excel 2021 引入的一个函数&#xff0c;用于生成一个随机数数组。它的语法如下&#xff1a; RANDARRAY([rows], [columns], [min], [max], [whole_number])参数详解 rows&#xff08;可选&#xff09; 要生成的行数&#xff08;默认值为 1&#xff…...

部分国产服务器CPU及内存性能测试情况

近日对部分国产服务器进行了CPU和内存的性能测试&#xff0c; 服务器包括华锟振宇、新华三和中兴三家&#xff0c;CPU包括鲲鹏、海光和Intel&#xff0c;初步测试结果如下&#xff1a; 服务器厂商四川华锟振宇新华三中兴中兴服务器HuaKun TG225 B1R4930 G5R5930 G2R5300 G4操作…...

DM数据迁移工具

DM数据迁移工具 一、概述二、迁移准备三、启动迁移工具1.Windows 环境启动 DM 数据迁移工具2.Linux 环境启动 DM 数据迁移工具2.1启用图形化安装界面前需要通过如下命令将图形界面权限放开&#xff1a;2.2进入数据库安装路径 /tool 目录下&#xff0c;运行 ./dts 即可启动 DM 数…...

关于React Redux

官网&#xff1a;&#x1f449;详情一 &#x1f449;详情二 &#x1f449;关于redux 使用原因&#xff1a;&#x1f449;详情 /** 2-1、随着javascript单页应用程序的发展&#xff0c;需要在代码中管理更多的状态&#xff08;包括服务器响应数据、缓存数据、本地创建还未发送…...

典范硬币系统(Canonical Coin System)→ 贪心算法

【典范硬币系统】 ● 典范硬币系统&#xff08;Canonical Coin System&#xff09;是指使用贪心算法总能得到最少硬币数量解‌的货币面值组合‌。 ● 给定一个硬币系统 &#xff0c;若使其为典范硬币系统&#xff0c;则要求其各相邻面值比例 &#xff0c;及各开区间 内各金额…...

「HTML5+Canvas实战」星际空战游戏开发 - 纯前端实现 源码即开即用【附演示视频】

纯前端实现星际空战游戏【简易版】 博主上次分享的简易版飞机大战收到了不少建议,今天再给大家来一波福利!带来全新升级的飞机大战进阶版!不仅拥有更丰富的游戏机制和更精美的游戏画面,还加入了超燃的BOSS战斗系统。源码完全免费开放,拿来即用无门槛,欢迎感兴趣的小伙伴…...

【江协科技STM32】PWR电源控制(学习笔记)

PWR简介 PWR&#xff08;Power Control&#xff09;电源控制PWR负责管理STM32内部的电源供电部分&#xff0c;可以实现可编程电压监测器和低功耗模式的功能可编程电压监测器&#xff08;PVD&#xff09;可以监控VDD电源电压&#xff0c;当VDD下降到PVD阀值以下或上升到PVD阀值…...

在 RK3588 多线程推理 YOLO 时,同时开启硬件解码和 RGA 加速的性能分析

一、前言 本文是基于RK3588的YOLO多线程推理多级硬件加速引擎框架设计项目的延申与拓展&#xff0c;单独分析所提出的方案4的性能和加速原理&#xff0c;即同时开启 RKmpp 硬件视频解码和 RGA 硬件图像缩放、旋转。 二、实验结果回顾 在项目的总览篇中&#xff0c;给出了该方案…...

多账号安全登录与浏览器指纹管理的实现方案

随着跨境电商、社交媒体运营等场景的普及&#xff0c;用户对多账号管理与反检测技术的需求日益增长。指纹浏览器作为一款专注于多账号安全登录与浏览器指纹管理的工具&#xff0c;通过虚拟浏览器环境隔离、动态指纹模拟等技术&#xff0c;解决了账号关联封禁的痛点。本文将从技…...

C++ ---- 虚继承

一、什么是虚继承 虚继承就是子类中只有一份间接父类的数据。用于解决多继承中的父类为非虚继承时出现的二义性问题&#xff0c;即菱形继承问题。继承方式需要加上virtual关键字。 二、虚继承的特性 以菱形继承为例&#xff1a; 1.不使用虚继承 根据输出的大小和关系图&…...

Day48 | 657. 机器人能否返回原点、31. 下一个排列、463. 岛屿的周长、1356. 根据数字二进制下 1 的数目排序

657. 机器人能否返回原点 题目链接&#xff1a;657. 机器人能否返回原点 - 力扣&#xff08;LeetCode&#xff09; 题目难度&#xff1a;简单 代码&#xff1a; class Solution {public boolean judgeCircle(String moves) {int x 0;int y 0;for (char c : moves.toCharA…...

启幕数据结构算法雅航新章,穿梭C++梦幻领域的探索之旅——堆的应用之堆排、Top-K问题

人无完人&#xff0c;持之以恒&#xff0c;方能见真我&#xff01;&#xff01;&#xff01; 共同进步&#xff01;&#xff01; 文章目录 一、堆排引入之使用堆排序数组二、真正的堆排1.向上调整算法建堆2.向下调整算法建堆3.向上和向下调整算法建堆时间复杂度比较4.建堆后的排…...

forms实现俄罗斯方块

说明&#xff1a; 我希望用forms实现俄罗斯方块 效果图&#xff1a; step1:C:\Users\wangrusheng\RiderProjects\WinFormsApp2\WinFormsApp2\Form1.cs using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms;namespace WinFor…...

PHP回调后门

1.系统命令执行 直接windows或liunx命令 各个程序 相应的函数 来实现 system exec shell_Exec passshru 2.执行代码 eval assert php代码 系统 <?php eval($_POST) <?php assert($_POST) 简单的测试 回调后门函数call_user_func(1,2) 1是回调的函数 2是回调…...

QwQ-32B-GGUF模型部署

由于硬件只有两张4090卡&#xff0c;但是领导还想要满血版32b的性能&#xff0c;那就只能部署GGUF版。据说QwQ-32B比Deepseek-R1-32b要更牛逼一些&#xff0c;所以就选择部署QwQ-32B-GGUF&#xff0c;根据最终的测试--针对长文本&#xff08;3-5M大小&#xff09;的理解&#x…...

实操自动生成接口自动化测试用例

​这期抽出来的问题是关于如何使用Eolinker自动生成接口自动化测试用例&#xff0c;也就是将API文档变更同步到测试用例&#xff0c;下面是流程的示例解析。 导入并关联API文档和自动化测试用例 首先是登陆Eolinker&#xff0c;可以直接在线使用。 进入流程测试用例详情页&am…...

Python数据类型-dict

Python数据类型-dict 字典是Python中一种非常强大且常用的数据类型&#xff0c;它使用键-值对(key-value)的形式存储数据。 1. 字典的基本特性 无序集合&#xff1a;字典中的元素没有顺序概念可变(mutable)&#xff1a;可以动态添加、修改和删除元素键必须唯一且不可变&…...

0301-组件基础-react-仿低代码平台项目

文章目录 1 组件基础2 组件props3 React开发者工具结语 1 组件基础 React中一切都是组件&#xff0c;组件是React的基础。 组件就是一个UI片段拥有独立的逻辑和显示组件可大可小&#xff0c;可嵌套 组件的价值和意义&#xff1a; 组件嵌套来组织UI结构&#xff0c;和HTML一…...

18-背景渐变与阴影(CSS3)

知识目标 理解背景渐变的概念和作用掌握背景渐变样式属性的语法与使用理解阴影效果的原理和应用场景掌握阴影样式属性的语法与使用 1. 背景渐变 1.1 线性渐变 运用CSS3中的“background-image:linear-gradient&#xff08;参数值&#xff09;;”样式可以实现线性渐变效果。 …...

分享一个Drools规则引擎微服务Docker部署

通常我们都是把Drools作为嵌入式使用&#xff0c;但在微服务泛滥时代&#xff0c;还在老套的嵌入式显然不符合微服务架构要求&#xff0c;本文分享一个把Drools作为微服务独立部署的方案。 本方案基于Drools引擎微服务&#xff0c;提供REST接口。 1、可以动态部署Drools规则2…...

PHP开发者2025生存指南

PHP&#xff0c;这个曾经被戏称为“世界上最好的语言”的脚本语言&#xff0c;依旧在网络世界占据着重要的地位。然而&#xff0c;技术发展日新月异&#xff0c;面向2025年&#xff0c;PHP开发者要想保持竞争力甚至实现职业生涯的飞跃&#xff0c;需要不断学习和提升自身技能。…...

UE5学习记录part12

第15节&#xff1a; treasure 154 treasure: spawn pickups from breakables treasure是items的子类 基于c的treasure生成蓝图类 155 spawning actors: spawning treasure pickups 设置treasure的碰撞 蓝图实现 156 spawning actors from c &#xff1a; spawning our treas…...

鸿蒙开发03样式相关介绍(一)

文章目录 前言一、样式语法1.1 样式属性1.2 枚举值 二、样式单位三、图片资源3.1 本地资源3.2 内置资源3.3 媒体资源3.4 在线资源3.5 字体图标3.6 媒体资源 前言 ArkTS以声明方式组合和扩展组件来描述应用程序的UI&#xff0c;同时还提供了基本的属性、事件和子组件配置方法&a…...

一周掌握Flutter开发--9. 与原生交互(上)

文章目录 9. 与原生交互核心场景9.1 调用平台功能&#xff1a;MethodChannel9.1.1 Flutter 端实现9.1.2 Android 端实现9.1.3 iOS 端实现9.1.4 使用场景 9.2 使用社区插件9.2.1 常用插件9.2.2 插件的优势 总结 9. 与原生交互 Flutter 提供了强大的跨平台开发能力&#xff0c;但…...

鸿蒙阔折叠Pura X外屏开发适配

首先看下鸿蒙中断点分类 内外屏开合规则 Pura X开合连续规则: 外屏切换到内屏,界面可以直接接续。内屏(锁屏或非锁屏状态)切换到外屏,默认都显示为锁屏的亮屏状态。用户解锁后:对于应用已适配外屏的情况下,应用界面可以接续到外屏。折叠外屏显示展开内屏显示折叠状态…...

小程序中跨页面组件共享数据的实现方法与对比

小程序中跨页面/组件共享数据的实现方法与对比 在小程序开发中&#xff0c;实现不同页面或组件之间的数据共享是常见需求。以下是几种主要实现方式的详细总结与对比分析&#xff1a; 一、常用数据共享方法 全局变量&#xff08;getApp()&#xff09;、本地缓存&#xff08;w…...

Java 大视界 -- 基于 Java 的大数据分布式计算在基因测序数据分析中的性能优化(161)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

go游戏后端开发21:处理nats消息

处理 NATS 订阅的消息 在 WebSocket 的管理模块中&#xff0c;我们之前已经处理了一些消息。这些消息通过 NATS 订阅过来&#xff0c;我们需要对这些消息进行进一步的处理。一旦消息到达&#xff0c;我们需要执行相应的操作&#xff0c;并将结果发送回去&#xff0c;包括之前的…...