当前位置:   article > 正文

Vue 小结 --- 树形结构_vue实现树形结构

vue实现树形结构

组织架构----树形结构布局

一个企业的组织架构是这个企业的灵魂, 组织架构常采用树形金字塔式结构来构建

采用 element 中的 tree组件 可以实现树形结构, 用清晰的层级结构展示信息

<el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
  1. <script>
  2. export default {
  3. data() {
  4. return {
  5. data: [{
  6. label: '一级 1',
  7. children: [{
  8. label: '二级 1-1'
  9. }]
  10. }, {
  11. label: '一级 2',
  12. children: [{
  13. label: '二级 2-1',
  14. }, {
  15. label: '二级 2-2',
  16. children: [{
  17. label: '三级 2-2-1'
  18. }]
  19. }]
  20. }],
  21. defaultProps: {
  22. children: 'children',
  23. label: 'label'
  24. }
  25. };
  26. },
  27. methods: {
  28. handleNodeClick(data) {
  29. console.log(data);
  30. }
  31. }
  32. };
  33. </script>

树形组件属性

default-expand-all    // 是否默认展开所有节点  ---- Boolean

data    //  展示数据  ---- Array

node-key    //  每个树节点用来作为唯一标识的属性,整棵树应该是唯一的  ----  String

props    //  配置如下 ----  Object

  • label    //  指定节点标签为节点对象的某个属性值   --- String/函数
  • children    //  指定子树为节点对象的某个属性值   --- String
  • disabled    //  指定节点选择框是否禁用为节点对象的某个属性值   --- Boolean/函数
  • isLeaf    //  指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效   --- Boolean/函数

获取组织结构数据并处理

先封装一个获取获取组织结构数据的请求, 然后封装一个方法调用该请求, 再在 created() 函数中调用这个方法,从后台获取数据的数据是数组的形式,需要转化为树形结构 

通过对后台数据的分析, 可以看出每个数据对象都有两个id值, 一个id值表示自身,  另一个id值表示自身的父节点, 当表示自身父节点的这个值为空时, 说明这个数据对象是一级结构, 那么就可以通过递归算法来将数据转化为树形结构

  1. function tranListToTreeData(list,pid){
  2. var arr = [];
  3. list.forEach(item => {
  4. // 进到 if 里的都是一级数据(pid:'')
  5. if(item.pid === pid) {
  6. // 判断一级数据的id有没有其他人作为pid, 如果有就说明这个一级是有二级目录的
  7. const children = tranListToTreeData(list,item.id);
  8. if(children.length>0) {
  9. item.children = children
  10. }
  11. arr.push(item)
  12. }
  13. })
  14. return arr
  15. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/231591
推荐阅读
相关标签
  

闽ICP备14008679号