elemenu-plus vue3如何下拉带树形结构,setup方式

1、效果图

在这里插入图片描述
2、封装组件SelectTree

<!--* @Author: zhangming zhangming@sinoma-tianjin.cn* @Date: 2024-03-14 10:45:54* @LastEditors: zhangming zhangming@sinoma-tianjin.cn* @LastEditTime: 2024-03-14 11:25:51* @FilePath: \Frontend\src\common\components\selectTree.vue* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template><el-select ref="mySelect" v-bind="$attrs" v-model="optionValue" :multiple="false" :disabled="disabled"><el-option :value="optionValue" :label="optionValue" class="options"><el-tree id="tree-option" ref="selectTree" default-expand-all :data="options" @node-click="handleNodeClick" /></el-option></el-select>
</template><script setup>
import { defineComponent, ref, watch, onMounted } from 'vue';
const props = defineProps({modelValue: { type: String, default: '' },disabled: {type: Boolean,default: false,},options: {type: Array,default: () => [],},
});
const mySelect = ref();
const optionValue = ref('');
const emit = defineEmits(['nodeclick', 'update:modelValue']);watch(() => {return props.modelValue;},() => {optionValue.value = getLable(props.options, props.modelValue);}
);const getLable = (arr, value) => {let res = '';function find(arr, value) {for (let i = 0; i < arr.length; i++) {if (arr[i].value === value) {res = arr[i].label;}if (arr[i].children && arr[i].children.length) {find(arr[i].children, value);}}}find(arr, value);return res;
};const handleNodeClick = (node) => {optionValue.value = node.label;mySelect.value.blur();emit('nodeclick', node);emit('update:modelValue', node.value);
};
</script><style scoped>
.el-scrollbar .el-scrollbar__view .el-select-dropdown__item {height: auto;max-height: 274px;padding: 0;overflow: hidden;overflow-y: auto;
}
.el-select-dropdown__item.selected {font-weight: normal;
}
ul li :deep(.el-tree .el-tree-node__content) {height: auto;padding: 0 20px;
}
.el-tree-node__label {font-weight: normal;
}
.el-tree :deep(.is-current .el-tree-node__label) {color: #409eff;font-weight: 700;
}
.el-tree :deep(.is-current .el-tree-node__children .el-tree-node__label) {color: #606266;font-weight: normal;
}
.selectInput {padding: 0 5px;box-sizing: border-box;
}
</style>

3、使用

<SelectTree v-model="form.elName" :options="treeList" @nodeclick="handleSelect" />const handleSelect = (data) => {//下拉树形选择console.log('下拉树形选择');console.log(data);
};

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

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

相关文章

[MYSQL数据库]- 索引

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、认识索…

goctl-swagger 生成json接口文件

参考&#xff1a; GitHub - dyntrait/goctl-swagger: 通过 api 文件生成 swagger 文档 GitHub - Bluettipower/goctl-swagger 一:编译 执行go install 前一般需要设置环境&#xff0c;不然资源经常会下载不下载 go env -w GOPROXYhttps://goproxy.cn,direct 执行完 go in…

算法-双指针、BFS与图论-1113. 红与黑

题目 思路 本题相当于问BFS中的当前点所在的区域连通块有多少个 Flood Fill算法 &#xff08;可参考以下链接&#xff1a;洪水覆盖算法(Flood Fill)&#xff1a;颜色填充-CSDN博客&#xff09;本题用DFS实现Flood Fill算法DFS是否需要恢复现场&#xff1a;&#xff08;重要&am…

mac电脑解决无法打开软件

文章目录 报错内容解决方法一方法二方法三 报错内容 macOS无法验证此App是否包含恶意软件。 解决方法一 打开系统偏好设置>安全性与隐私>通用&#xff0c;这个时候有个按钮&#xff0c;“仍然允许”点击即可。 方法二 按住Control键点按应用, 然后打开&#xff0c…

Xcode15.3 -Library ‘iconv2.4.0‘ not found

今天升级了一下Mac mini 和Xcode15.3&#xff0c;运行项目就报 Library ‘iconv2.4.0’ not found的错误 xcode升级到&#xff1a;15.3(15A240d) 项目在旧版本下&#xff0c;是能通过编译 并且能运行的。 解决方法&#xff1a; 方案1&#xff1a;在Build Phases --> Link…

初识Python语言-课堂练习【pyhton123题库】

初识Python语言-课堂练习【pyhton123题库】 一、单项选择题 1、Guido van Rossum正式对外发布Python版本的年份是&#xff1a; A 2008B 1998C 1991D 2002 【答案】C 【解析】暂无解析2、下面不是Python语言特点的是&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪…

[抽象]工厂模式([Abstract] Factory)——创建型模式

[抽象]工厂模式——创建型模式 什么是抽象工厂&#xff1f; 抽象工厂模式是一种创建型设计模式&#xff0c;让你能够保证在客户端程序中创建一系列有依赖的对象组时&#xff0c;无需关心这些对象的类型。 具体来说&#xff1a; 对象的创建与使用分离&#xff1a; 抽象工厂模…

多线程(线程池)

线程池 池的概念意味着可以复用, 减少创建, 销毁线程的消耗 即事先把需要使用的线程创建好, 放到 “池” 中, 需要的时候从 “池” 里取, 用完再放回 池里取 这样全程只创建和销毁线程一次(之说是一次哦, 没说一次创建和销毁多少个)即可 标准库线程池的使用 public class Main…

《ElementPlus 与 ElementUI 差异集合》el-form-item CSS 属性 display 有变化

差异 element-ui el-form 中&#xff0c;属性display: flex; 导致元素在一排&#xff1b;element-plus el-form 中&#xff0c;属性display: block; 元素按照自己的属性排列&#xff1b; /* element ui */ display: block;/*element plus */ display: flex;如图所示 解决方案…

NacosConfig

NacosConfig是一个重要的服务配置中心&#xff0c;它在微服务架构中起到了关键的作用。以下是NacosConfig的主要作用&#xff1a; 集中管理配置&#xff1a;NacosConfig提供了用于存储配置和其他元数据的key/value存储功能&#xff0c;使得开发者可以在Nacos Server上集中管理…

深度学习训练GPU显卡选型攻略

‍‍&#x1f3e1;博客主页&#xff1a; virobotics(仪酷智能)&#xff1a;LabVIEW深度学习、人工智能博主 &#x1f4d1;上期文章&#xff1a;『仪酷LabVIEW OD实战(5)——Object DetectionTensorRT工具包快速实现yolo目标检测』 &#x1f37b;本文由virobotics(仪酷智能)原创…

3.环境对象this、this指向总结(待完成还有节流防抖待完成)、回调函数、事件

环境对象this 环境对象本质上是一个关键字 this this所在的代码区域不同&#xff0c;代表的含义不同 全局作用域中的this 全局作用域中this代表window对象 局部作用域中的this 在局部作用域中(函数中)this代表window对象 函数直接调用的时候简写了&#xff0c;函数完整写法…