Vue3+elementPlus中 树形控件封装

1.组件

<template><div class="selection"><el-select placeholder="请选择" v-model="nameList" clearable @clear="handleClear" ref="selectUpResId" style="width: 100%"><el-option hidden :key="1" :value="1"></el-option><!--这个必不可少否则显示不出来下拉数据--><!-- check-strictly :父子是否联动,根据业务修改 --><el-tree:data="options"node-key="id":props="defaultProps":default-checked-keys="huixianarr"@check="handleNodeClick"show-checkboxref="treeRef":check-strictly="true"></el-tree></el-select></div>
</template>
<script setup name="selects">
import { ref, reactive } from "vue";
//接受父组件传来的数据
const props = defineProps({treeFilterData: {type: Array,default: () => [] //树形控件数据源},treeHxlist: {type: Array,default: () => [] //回显ID集合,根据业务修改},dfProps: {type: Object,default: () => {} //树形控件配置项,根据业务修改}
});
const treeRef = ref();
let nameList = ref("");
let huixianarr = ref([]);
let idList = ref();
let options = ref([]);
let defaultProps = ref({});
defaultProps.value = props.dfProps;
let hxlist = ref([]);
let treeForm = ref();
let list = ref();
var propertyName = props.dfProps.label;
init();
function init() {options.value = props.treeFilterData;huixianarr.value = props.treeHxlist;let hxlist = findPathsByIds(options.value, huixianarr.value);nameList.value = hxlist.join(","); //显示内容
}
const emit = defineEmits(["checKedId"]);
function handleNodeClick(data, lst) {let arr = [],name = [];lst.checkedNodes.forEach(item => {//过滤拿到选中的idarr.push(item.id);});lst.checkedNodes.forEach(item => {//过滤拿到选中的namename.push(item[propertyName]);});nameList.value = name.join(","); //显示内容idList.value = arr; //后台传参需要的id//传给父组件emit("checKedId", idList.value);
}
function handleClear() {hxlist.value = [];idList.value = []; //id集合nameList.value = ""; //input显示内容huixianarr.value = []; //回显ID集合treeRef.value.setCheckedKeys([]); //清空
}
function findPathsByIds(data, targetIds) {const resultPaths = []; // 存储匹配的 title// 辅助函数:递归查找单个 id 的 titlefunction findPathRecursive(items, targetId) {for (const item of items) {// 如果当前项的 id 匹配,添加其 title 到结果数组if (item.id === targetId) {resultPaths.push(item[propertyName]);return; // 找到后直接返回}// 如果有 children,递归查找if (item.children && item.children.length > 0) {findPathRecursive(item.children, targetId);}}}// 遍历目标 id 数组,逐一查找for (const id of targetIds) {findPathRecursive(data, id);}return resultPaths;
}
</script>
<style scoped>
.selection {width: 300px;
}
</style>

2.使用

 <Selectoption :treeFilterData="treeFilterData" :treeHxlist="treeHxlist" :dfProps="dfProps" @checKedId="gettreelist" />
//回显
const treeFilterData = ref([1]); 
//格式
let dfProps = ref({children: "children",label: "title"
});  
//数据
const treeFilterData = ref([{"id": 1,"path": "/home/index","name": "home","component": "/home/index","title": "首页","meta": {"icon": "HomeFilled","title": "首页","isLink": "","isHide": false,"isFull": false,"isAffix": true,"isKeepAlive": true}},{"id": 6,"path": "/system","name": "system","redirect": "/system/accountManage","title": "系统管理","meta": {"icon": "Tools","title": "系统管理","isLink": "","isHide": false,"isFull": false,"isAffix": false,"isKeepAlive": true},"children": [{"id": 61,"father": 6,"path": "/system/accountManage","name": "accountManage","component": "/system/accountManage/index","title": "账号管理","meta": {"icon": "Menu","title": "账号管理","isLink": "","isHide": false,"isFull": false,"isAffix": false,"isKeepAlive": true}},]}]);

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

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

相关文章

辉视监狱广播对讲系统:SIP协议赋能智慧监管新生态

一、全域互联&#xff1a;构建监狱安防设备协同生态 基于SIP协议的辉视广播对讲系统&#xff0c;以"通信中枢"角色打破设备壁垒。其强大的兼容性可无缝对接监狱现有监控、门禁、报警等异构设备&#xff0c;支持GB/T 28181国标协议&#xff0c;实现跨品牌、跨系统的数…

信息系统项目管理师-工具名词解释(上)

本文章记录学习过程中,重要的知识点,是否为重点的依据,来源于官方教材和历年考题,持续更新共勉 本文章记录学习过程中,重要的知识点,是否为重点的依据,来源于官方教材和历年考题,持续更新共勉 数据收集 头脑风暴 在短时间内获得大量创意,适用于团队环境,需要引导者…

C++之二叉搜索树

目录 ⼆叉搜索树的概念 二叉搜索数的性能分析 二叉搜索树的模拟实现 定义二叉树节点结构 二叉搜索树的插入 二叉搜索树的查找 二叉搜索树的删除 中序遍历 全部代码 二叉搜索树key和key/value使用场景 key搜索场景&#xff1a; key/value搜索场景&#xff1a; key/value…

数据结构——哈希详解

数据结构——哈希详解 目录 一、哈希的定义 二、六种哈希函数的构造方法 2.1 除留取余法 2.2 平方取中法 2.3 随机数法 2.4 折叠法 2.5 数字分析法 2.6 直接定值法 三、四种解决哈希冲突的方法 3.1 开放地址法 3.1.1 线性探测法 3.1.2 二次探测法 3.2 链地址法 3…

使用U盘安装 ubuntu 系统

1. 准备U 盘制作镜像 1.1 下载 ubuntu iso https://ubuntu.com/download/ 这里有多个版本以供下载&#xff0c;本文选择桌面版。 1.2 下载rufus https://rufus.ie/downloads/ 1.3 以管理员身份运行 rufus 设备选择你用来制作启动项的U盘&#xff0c;不能选错了&#xff1b;点…

RadioMaster POCKET遥控器进入ExpressLRS界面一直显示Loading的问题解决方法

RadioMaster POCKET遥控器进入ExpressLRS界面一直显示Loading的问题解决方法 问题描述解决方法 问题描述 有一天我发现我的 RadioMaster POCKET 遥控器进入 ExpressLRS 设置界面时&#xff0c;界面却一直停留在 “Loading” 状态&#xff0c;完全无法进入设置界面。 我并没有…

计算机网络 - 三次握手相关问题

通过一些问题来讨论 TCP 协议中的三次握手机制 说一下三次握手的大致过程&#xff1f;为什么需要三次握手&#xff1f;2 次不可以吗&#xff1f;第三次握手&#xff0c;可以携带数据吗&#xff1f;第二次呢&#xff1f;三次握手连接阶段&#xff0c;最后一次ACK包丢失&#xf…

【RabbitMQ】核心概念和工作流程

文章目录 RabbitMQ 工作流程流程图 Producer 和 ConsumerConnecting 和 ChannelVirtual hostQueueExchangeRabbitMQ 工作流程 RabbitMQ 工作流程 流程图 RabbitMQ 就是一个生产者/消费者模型 Producer 就是生产者、Consumer 就是消费者Broker 是 RabbitMQ 服务器生产者和消费…

龙虎榜——20250414

今天缩量上涨有些乏力&#xff0c;压力位还在~ 2025年4月14日龙虎榜行业方向分析 一、核心主线方向 黄金与贵金属&#xff08;避险逻辑强化&#xff09; • 驱动逻辑&#xff1a;国际地缘冲突持续升温&#xff08;如中东局势、台海动态&#xff09;&#xff0c;叠加美国特朗普…

蔚来汽车智能座舱接入通义大模型,并使用通义灵码全面提效

为加速AI应用在企业市场落地&#xff0c;4月9日&#xff0c;阿里云在北京召开AI势能大会。阿里云智能集团资深副总裁、公共云事业部总裁刘伟光发表主题演讲&#xff0c;大模型的社会价值正在企业市场释放&#xff0c;阿里云将坚定投入&#xff0c;打造全栈领先的技术&#xff0…

探索 Go 与 Python:性能、适用场景与开发效率对比

1 性能对比&#xff1a;执行速度与资源占用 1.1 Go 的性能优势 Go 语言被设计为具有高效的执行速度和低资源占用。它编译后生成的是机器码&#xff0c;能够直接在硬件上运行&#xff0c;避免了 Python 解释执行的开销。 以下是一个用 Go 实现的简单循环计算代码&#xff1a; …

虚幻引擎 Anim To Tex| RVT | RT

本文上篇分为4个部分&#xff1a;动画驱动材质&#xff0c;虚拟纹理&#xff0c;Rendertarget&#xff0c;以及其他杂项的地编ta干货整理。&#xff08;其中RT部分基本为UOD重要截图摘录&#xff09; 本文下篇为&#xff1a;skylight和directional light的区别&#xff0c;未完…

kingbase权限管理

1. kingbase模式权限管理 1.1授予用户对模式的权限 以具有足够权限的用户登录后&#xff0c;执行以下 SQL 语句来授予用户对模式的相应权限。假设你要授予用户 your_user 对模式 your_schema 的使用权限&#xff1a; sql -- 授予用户使用模式的权限 GRANT USAGE ON SCHEMA …

9.thinkphp的请求

请求对象 当前的请求对象由think\Request类负责&#xff0c;该类不需要单独实例化调用&#xff0c;通常使用依赖注入即可。在其它场合则可以使用think\facade\Request静态类操作。 项目里面应该使用app\Request对象&#xff0c;该对象继承了系统的think\Request对象&#xff…

Java从入门到“放弃”(精通)之旅——方法的使用⑤

Java从入门到“放弃”&#xff08;精通&#xff09;之旅&#x1f680;——方法的使用⑤ &#x1f4d6;引言&#xff1a; 在编程领域&#xff0c;代码如同精密的齿轮相互咬合驱动程序运转。随着项目规模渐长&#xff0c;重复的代码片段如同冗余的齿轮&#xff0c;不仅增加负重…

鸿蒙NEXT开发格式化工具类(ArkTs)

import { i18n } from kit.LocalizationKit;/*** 格式化工具类* 提供电话号码格式化、归属地查询、字符转换等功能。* author: 鸿蒙布道师* since: 2025/04/14*/ export class FormatUtil {/*** 判断传入的电话号码格式是否正确。* param phone - 待验证的电话号码* param coun…

[Python基础速成]2-模块与包与OOP

上篇➡️[Python基础速成]1-Python规范与核心语法 目录 Python模块创建模块与导入属性__name__dir()函数标准模块 Python包类类的专有方法 对象继承多态 Python模块 Python 中的模块&#xff08;Module&#xff09;是一个包含 Python 定义和语句的文件&#xff0c;文件名就是模…

OSI参考模型和TCP/IP模型

1.OSI参考模型 OSI模型&#xff1a; OSI参考模型有7层&#xff0c;自下而上依次为物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;会话层&#xff0c;表示层&#xff0c;应用层。&#xff08;记忆口诀&#xff1a;物联网叔会用&#xff09;。低…

linux Shell编程之循环语句(三)

目录 一. for 循环语句 1. for语句的结构 2. for 语句应用示例 (1) 根据姓名列表批量添加用户 (2) 根据 IP 地址列表检查主机状态 二. 使用 while 循环语句 1. while 语句的结构 2. while 语句应用示例 (1) 批量添加规律编号的用户 (2) 猜价格游戏 三. until 循环语…

最新扣子实战教程,利用扣子平台通过在线表格记录,批量生图,再也不要一条条的粘贴提示词了

1、功能描述 大家好&#xff0c;我是涛涛。今天我要给大家讲解如何在扣子平台上对接飞书电子表格。由于多维表格相对复杂&#xff0c;而很多业务场景其实只需要电子表格就能满足&#xff0c;因此今天我们将演示如何在扣子平台上读取飞书电子表格并批量生成图片。 先看效果&am…