首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >vue+Element实现Tree树形(是否默认展开所有节点属性: default-expand-all)

vue+Element实现Tree树形(是否默认展开所有节点属性: default-expand-all)

作者头像
王小婷
发布于 2025-05-20 02:47:36
发布于 2025-05-20 02:47:36
27400
代码可运行
举报
文章被收录于专栏:编程微刊编程微刊
运行总次数:0
代码可运行

vue-element-admin一个基于 vue2.0 和 Eelement 的控制面板 UI 框架,这是使用vue技术栈开发的前端程序员的首选管理系统模板,模板以及非常的成熟了,并且有相关的社区和维护人员,开发时候遇到问题也不要慌。

推荐指数:star:62.1k Github 地址:https://github.com/PanJiaChen/vue-element-admin Demo体验:https://panjiachen.github.io/vue-element-admin/#/dashboard 官方文档:https://panjiachen.github.io/vue-element-admin-site/zh/

今天就来说一下,怎么使用Tree Table 树形表格。废话不多说,首先看一下官方文档吧,看看官方文档是怎么给到的例子吧: 组件:https://element.eleme.cn/#/zh-CN/component/tree

分别通过default-expanded-keys和default-checked-keys设置默认展开和默认选中的节点。需要注意的是,此时必须设置node-key,其值为节点数据中的一个字段名,该字段在整棵树中是唯一的。

静态 在文档上选一颗自己想要的树的demo

代码语言:javascript
代码运行次数:0
运行
复制
<template>
  <div class="grid-content bg-purple">
    <el-tree
      :data="data"
      show-checkbox
      node-key="id"
      :default-expanded-keys="[2, 3]"
      :default-checked-keys="[5]"
    >
    </el-tree>
  </div>
</template>
<script>
export default {
  data() {
    return {
      data: [
        {
          id: 1,
          label: "一级 2",
          children: [
            {
              id: 3,
              label: "二级 2-1",
              children: [
                {
                  id: 4,
                  label: "三级 3-1-1",
                },
                {
                  id: 5,
                  label: "三级 3-1-2",
                  disabled: true,
                },
              ],
            },
            {
              id: 2,
              label: "二级 2-2",
              disabled: true,
              children: [
                {
                  id: 6,
                  label: "三级 3-2-1",
                },
                {
                  id: 7,
                  label: "三级 3-2-2",
                  disabled: true,
                },
              ],
            },
          ],
        },
      ],
      defaultProps: {
        children: "children",
        label: "label",
      },
    };
  },
};
</script>

效果是这个样子的

在实际应用之中,需要从后端请求过来json数据,然后再对json数据进行一些处理,渲染在界面。 我这里有一些json数据,但是并不是我想要的格式,并不是以上代码中的格式,需要做一些处理,对json的格式的转化。

json数据

代码语言:javascript
代码运行次数:0
运行
复制
{
    "msg": "success",
    "code": 1,
    "data": [{
        "id": 1,
        "organName": "住部门",
        "parentId": null,
        "manager": "zs",
        "phone": null,
        "companyId": 1,
        "address": null
    }, {
        "id": 19,
        "organName": "uiui",
        "parentId": 1,
        "manager": "iuui",
        "phone": "ui",
        "companyId": 1,
        "address": null
    }, {
        "id": 20,
        "organName": "3223",
        "parentId": 19,
        "manager": "32",
        "phone": "3232",
        "companyId": 1,
        "address": null
    },  {
        "id": 22,
        "organName": "测试部",
        "parentId": 1,
        "manager": "李云泥",
        "phone": "18117166505",
        "companyId": 1,
        "address": null
    }, {
        "id": 23,
        "organName": "123",
        "parentId": 19,
        "manager": "1",
        "phone": "12",
        "companyId": 1,
        "address": null
    }, {
        "id": 24,
        "organName": "www",
        "parentId": 19,
        "manager": "",
        "phone": "",
        "companyId": 1,
        "address": null
    }]
}

动态demo如下:

代码语言:javascript
代码运行次数:0
运行
复制
<template>
  <div class="grid-content bg-purple">
    <el-tree
      :data="treeData"
      show-checkbox
      default-expand-all
      node-key="id"
      ref="tree"
      highlight-current
      :props="defaultProps"
     
    >
    </el-tree>
  </div>
</template>
<script>
//调用接口
import { getQuerycheckList } from "@/api/data/organ";
export default {
  data() {
    return {
      setTree: [],
      defaultProps: {
        children: "children",
        label: "organName",
      },

      treeData: [],
      organList: [],
    };
  },

  created() {
    //加载部门管理节点接口定义
    this.getQuerycheckList();
  },

  methods: {
    //部门管理节点接口定义
    getQuerycheckList() {
      const params = {};
      this.dataLoading = true;
      getQuerycheckList(params).then((res) => {
        this.setTree = res.data;
        this.organList = res.data.map((a) => ({
          label: a.organName,
          value: a.id,
        }));
        //debugger;
        this.getListData();
        this.dataLoading = false;
      });
    },

    //对json的格式的转化
    getListData() {
      let dataArray = [];
      this.setTree.forEach(function (data) {
        //  debugger;
        let parentId = data.parentId;
        if (parentId === null) {
          let objTemp = {
            id: data.id,
            organName: data.organName,
            manager: data.manager,
            phone: data.manager,
            parentId: parentId,
          };
          dataArray.push(objTemp);
        }
      });
      this.treeData = this.data2treeDG(this.setTree, dataArray);
    },
    data2treeDG(datas, dataArray) {
      for (let j = 0; j < dataArray.length; j++) {
        let dataArrayIndex = dataArray[j];
        let childrenArray = [];
        let Id = dataArrayIndex.id;
        for (let i = 0; i < datas.length; i++) {
          let data = datas[i];
          let parentId = data.parentId;
          if (parentId == Id) {
            //判断是否为儿子节点
            let objTemp = {
              id: data.id,
              organName: data.organName,
              manager: data.manager,
              phone: data.phone,
              parentId: parentId,
            };
            childrenArray.push(objTemp);
          }
        }
        dataArrayIndex.children = childrenArray;
        if (childrenArray.length > 0) {
          this.data2treeDG(datas, childrenArray);
        }
      }
      return dataArray;
    },
  },
};
</script>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Elementui Tree 树形控件删除功能
vue-element-admin一个基于 vue2.0 和 Eelement 的控制面板 UI 框架,这是使用vue技术栈开发的前端程序员的首选管理系统模板,模板以及非常的成熟了,并且有相关的社区和维护人员,开发时候遇到问题也不要慌。
王小婷
2021/07/29
1.3K0
Elementui  Tree 树形控件删除功能
Vue+ElementUI 搭建后台管理系统(实战系列五)
使用ElementUI已经有一段时间了,在一边上手开发后台管理系统的同事,也记录了一些笔记,一直都没有时间将这些零零散散的笔记总结起来,整理成一个比较系统详细一点的教程,可以留着以后来看。
王小婷
2021/11/24
5110
Vue+ElementUI 搭建后台管理系统(实战系列五)
Elementui Tree 树形控件删除子节点
要求: Elementui Tree 树形控件,将勾选选中的值放在list集合里面提交
王小婷
2021/11/24
2.1K0
Elementui Tree 树形控件删除子节点
Elementui Tree 树形控件,将勾选选中的值放在list集合里面提交
要求: Elementui Tree 树形控件,将勾选选中的值放在list集合里面提交
王小婷
2021/11/24
1.3K0
Elementui Tree 树形控件,将勾选选中的值放在list集合里面提交
element的select和tree树形组件组合
<body> <div id="app"> <el-select v-model="mineStatus" placeholder="请选择" multiple @change="selectChange"> <el-option :value="mineStatusValue" style="height: auto">//option展开高度太小,把height设置为auto就好啦 <el-tree :data="data" show-checkbox node-
用户1349575
2022/02/22
1.6K0
element-plus tree组件使用
粒子,修改自cascader: <html> <head> <!-- Import style --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-plus/dist/index.css" /> <!-- Import Vue 3 --> <script src="https://cdn.jsdelivr.net/npm/vue@next"></script> <!--
周星星9527
2021/09/29
2.2K0
vue如何获取Elementui Tree 树形控件当前选中的节点
vue-element-admin一个基于 vue2.0 和 Eelement 的控制面板 UI 框架,这是使用vue技术栈开发的前端程序员的首选管理系统模板,模板以及非常的成熟了,并且有相关的社区和维护人员,开发时候遇到问题也不要慌。
王小婷
2021/11/24
3.5K0
vue如何获取Elementui Tree 树形控件当前选中的节点
java最优化的方法递归构造树形结构
    el-tree是element uI的中树形结构的写法,主要使用的场景是在需要父级和子级的情况下使用,下面看一下前台的写法。
十分钟空间
2022/08/17
3.3K0
java最优化的方法递归构造树形结构
关于vue中$nextTick的一点使用心得
当下公司在做一个媒体门户网站,后台由另一家公司使用java开发并提供接口,本人负责开发后台页面,使用的是vue-element-admin开发 下面说一下问题场景,在开发过程中有一个后台管理员角色页面,其中包含一个表单dialog,在其中使用了el-tree组件,相关 代码结构如下: <div class="filter-container"> <el-button class="filter-item" style="margin-left: 10px;" v-waves @click="hand
lestat
2018/04/17
2.3K0
el-tree的实现叶子节点单选
思路:三层数据数据,叶子节点实现单选,但是如果点击父节点时,会实现叶子节点的全选,需要进行更多的数据处理。因此为了解决这个麻烦。引入disabled属性,让第一级和第二级为不可选中,只有叶子节点可以点击选中,这样来减少数据的判断。
猫老师的叶同学
2023/03/01
2.3K0
el-tree的实现叶子节点单选
vue渲染select下拉框的值
Element UI手册:https://cloud.tencent.com/developer/doc/1270 github地址:https://github.com/ElemeFE/element
王小婷
2021/03/05
4K0
vue渲染select下拉框的值
element el-tree 默认选中的节点
主要就是这两行代码,需要注意的是setCurrentKey函数必须要放到$nextTick里面,要不然tree还未渲染上,是找不到popularTree的
小蔚
2021/09/14
4.5K0
element el-tree 默认选中的节点
自定义权限功能之角色增删改查及分配路由资源的实现
笔者采用前后端分离项目开发自定义权限功能模块有一段时间了,今天这部分的收尾篇了。在这个系列的文章里笔者后端采用一个开源的springboot项目blog-server,前端采用基于vue和element-ui技术栈的开源项目vue-element-admin先后实现了「根据当前登录用户角色动态加载左侧菜单、用户分页查询和给用户授予角色」等功能的实现。本文则是这个权限功能的扫尾部分,笔者带领大家来继续实现「角色的增删改和给角色分配路由资源」这部分功能,以后有时间的化还会继续补角色-按钮级别的权限控制。为了利于笔者和我的读者朋友往高级开发和架构师方向发展,后面发文的重点将放在redis、rabbitmq、rocketmq和springcloud等分布式技术栈的学习和实践上。
用户3587585
2021/09/29
1.8K0
自定义权限功能之角色增删改查及分配路由资源的实现
elementUI Tree 树形控件单选实现
义了一个currentNodeKey来存储当前选中节点的 key。每次点击节点时,我们首先检查是否已经有一个节点被选中,如果是,则通过this.$refs.tree.setCurrentKey(null)取消选中它。然后,我们更新currentNodeKey为新选中的节点 key。
肥晨
2024/03/22
1.5K0
vue+element|el-tree树设置懒加载和设置默认勾选
在实际开发中,很多数据过于庞大,需要分批请求,使用到懒加载。但是在tree的方法中,使用懒加载后无法直接使用default-checked-keys默认勾选。想要这个效果该如何实现?
肥晨
2025/03/06
4930
vue鼠标移入移出显示和隐藏_labview树形控件卡
我们希望实现鼠标移动至树型结构的结点上就显示按钮,移出就隐藏按钮 实现原理:是通过@mouseenter 和 @mouseleave两个属性来控制鼠标hover的效果,再配合v-show来控制是否展示你需要的控件
全栈程序员站长
2022/09/21
2.8K0
vue鼠标移入移出显示和隐藏_labview树形控件卡
【第三篇】商城系统-基础业务-实现类别管理
JDK8特性:https://blog.csdn.net/qq_38526573/category_11113126.html
用户4919348
2022/09/16
1K0
【第三篇】商城系统-基础业务-实现类别管理
SaaS-系统用户权限设计(组织机构管理)
在 /src/api/base/ 创建departments.js作为组织机构管理的API公共接口方法
cwl_java
2020/01/02
3.1K0
vue-element-admin表格json数据渲染,异常数据一行显示红色
推荐指数: Github 地址:https://github.com/PanJiaChen/vue-element-admin Demo体验:https://panjiachen.github.io/vue-element-admin/#/dashboard 官方文档:https://panjiachen.github.io/vue-element-admin-site/zh/
王小婷
2022/01/09
1.6K0
vue-element-admin表格json数据渲染,异常数据一行显示红色
手把手教学~基于element封装tree树状下拉框
在日常项目开发中,树状下拉框的需求还是比较常见的,但是element并没有这种组件以供使用。在这里,小编就基于element如何封装一个树状下拉框做个详细的介绍。
马克社区
2022/04/20
1.2K0
推荐阅读
相关推荐
Elementui Tree 树形控件删除功能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档