el-select + el-tree选择(包含模糊查询功能)
本文内容是我自己写的简单封装,如需功能齐全的可以自己补充或者使用其它现有的组件库:vue-treeselect
<div class="menuSearch"> <el-select class="el-select-menu" ref="selectTree" v-model="filterMenuText" placeholder="请输入菜单名称" filterable :filter-method="filterMenu" @clear="filterMenu" clearable > <el-option style="height: auto;background-color: white;min-width: 270px;font-weight: normal" :label="defaultOption.menuName" :value="defaultOption.path" > <el-tree ref="tree" v-if="showTree" :data="menu" :props="defaultProps" node-key="menuId" @node-click="nodeClick" :filter-node-method="filterNode" /> </el-option> </el-select> </div>
filterMenuText: '', // 查询菜单 showTree: true, defaultProps: { children: 'children', label: 'menuName' }, defaultOption: { path: '', menuName: '' }
nodeClick(item) { const { path, menuName } = item this.defaultOption.path = path this.defaultOption.menuName = menuName this.filterMenuText = menuName this.$refs.selectTree.blur() if (!item.children) { this.$router.push(path) } }, filterMenu(val) { if (!val) {//清空时重置树 this.showTree = false this.$nextTick(() => { this.showTree = true }) } this.$refs.tree.filter(val) }, filterNode(value, data) { if (!value) return true return data.menuName.indexOf(value) !== -1 }
// 修改el-select的icon
/deep/.el-select-menu .el-input .el-input__suffix .el-input__suffix-inner { .el-icon-arrow-up:before{ content: "\e778"; } .el-select__caret{ transform: rotateZ(0deg); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通