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); } }
复制代码

 

posted @   Stitchhhhh  阅读(1261)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示