您当前的位置:首页 > 网站建设 > javascript
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax |

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

51自学网 2022-05-02 21:35:55
  javascript

本文主要讲述:自定义树形控件<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带图标的下拉菜单内容请搜索wanshiok.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持wanshiok.com!


js判断移动端横竖屏视口检测实现的几种方法
最全的package.json解析
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1