我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Element树形控件整合带图标的下拉菜单(tree+dropdown+input)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Element树形控件整合带图标的下拉菜单(tree+dropdown+input)

本文主要讲述:自定义树形控件<el-tree>

需求说明:

Element UI 官网提供的树形控件包含基础的、可选择的、自定义节点内容的、带节点过滤的以及可拖拽节点的树形结构 如下:

在这里插入图片描述

我想要的效果是支持搜索效果的树,将鼠标悬浮后显示添加修改图标,点击图标后弹出对应页面;并且在每个文件夹前添加自定义图标。

实现效果:

在这里插入图片描述

实现步骤:

1、使用插槽(slot)


<el-col :span="4" :xs="24">
   <!--目录搜索功能-->
  <div class="head-container">
    <el-input
      v-model="dirNameCn"
      placeholder="请输入目录名称"
      clearable
      size="small"
      prefix-icon="el-icon-search"
      style="margin-bottom: 20px"
    />
  </div>
  <!--树的展示-->
  <div class="head-container">
    <el-tree
      :data="dirTreeOptions"
      :props="defaultProps"
      :expand-on-click-node="false"
      :filter-node-method="filterNode"
      ref="tree"
      default-expand-all
      @node-click="handleNodeClick"
      icon-class="el-icon-folder-opened"
      node-key="id"
      :check-on-click-node="true"
    >
      <!--隐藏的新增等图标-->
      <span class="custom-tree-node" slot-scope="{ node, data }" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
        <span>{{ node.label }}</span>
        <div>
          <i v-show="data.show" class="el-icon-circle-plus" style="color: #00afff" @click="addDial(node, data)"/>
          <!--隐藏的下拉选-->
          <el-dropdown trigger="click" placement="right" @command="(command) => {handleCommand(command)}">
            <i v-show="data.show" class="el-icon-more" style="color: #D3D3D3"/>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item command="a">重命名</el-dropdown-item>
              <el-dropdown-item command="b">删除</el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
        </div>
      </span>
    </el-tree>
  </div>
</el-col>

2、组件对应的JS

注意:树的数据是从后端查询回来的,保存在dirTreeOptions里面


<script>
  export default {
    name: 'reqmdoctree',
    data() {
      return {
        // 左侧搜索框内容
        dirNameCn: '',
       	// 目录树选项
        dirTreeOptions: undefined,
        defaultProps: {
          children: "children",
          label: "label"
        },
        // 树形菜单中有无子节点
        yesChild: undefined,
        // 控制左侧新增提示信息框
        show: 0,
        // 查询需求文档信息参数
        queryParams: {
          docNo: undefined, // 文档编号
          docNameEn: undefined, // 文档英文名称
          dirNo: undefined,// 目录编号
          current: 1, // 当前页数
          size: 20 // 每页显示多少条
        },
        treeId: undefined,
      }
    },
    methods: {
      
      getTreeselect() {
        treeselect().then(response => {
          this.dirTreeOptions = response.data
        })
      },
      // 搜索值为过滤函数
      filterNode(value, data) {
        if (!value) return true
        return data.label.indexOf(value) !== -1
      },
      // 节点被点击时的回调函数
      handleNodeClick(data) {
        // console.log(data)
        this.treeId = data.id
        this.yesChild = data.children
        this.queryParams.dirNo = data.id
        this.getList()
      },
      // 树中三个点的事件
      handleCommand(command) {
        if (command == 'a') {
          selectReqNo(this.treeId).then(response => {
            this.uuid = response.msg
            getObjTree(response.msg).then(response => {
              this.form = response.data
              this.open = true
              this.title = '修改需求文档目录配置表'
            })
          })
        }
        if (command == 'b') {
          if (this.yesChild != undefined) {
            this.$notify.error({
              title: '警告',
              message: '此目录下还有别的文件夹'
            })
          } else {
            selectReqNo(this.treeId).then(response => {
              this.uuid = response.msg
              this.$confirm('是否确认删除ID为' + this.uuid + '的数据项?', '警告', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
              }).then(()=>{
                return delObjTree(this.uuid)
              }).then(data => {
                this.getTreeselect()
                this.msgSuccess('删除成功')
              }).catch(function() {
              })
            })
          }
        }
      },
      // 左侧新建目录/文件
      addDial(node, data) {
        // console.log(node, '---', data)
        this.reset()
        this.form.dirParentId = data.id
        this.open = true
        this.title = '添加需求文档目录配置表'
      },
      // 左侧鼠标悬浮展示图标
      mouseenter(data){
        this.$set(data, 'show', true)
      },
      // 左侧鼠标离开不展示图标
      mouseleave(data){
        this.$set(data, 'show', false)
      },
      //打开新增资源弹窗 这里略......
    }
  }
</script>

说明:

参考文档:element UI、树形控件整合下拉选

到此这篇关于Element树形控件整合带图标的下拉菜单(tree+dropdown+input)的文章就介绍到这了,更多相关Element带图标的下拉菜单内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Element树形控件整合带图标的下拉菜单(tree+dropdown+input)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

目录