element-ui树形结构转换

1.首先搞懂什么是树形结构,以及树形结构的基本用法

树是n(n>=0)个结点的有限集。当n = 0时,称为空树。
在任意一棵非空树中应满足:
有且仅有一个特定的称为根的结点。
当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每个集合本身又是一棵树,并且称为根的子树。
在这里插入图片描述

2.树形结构的基本使用

讲一下element-ui里的Tree 树形控件用法
举了一个小例子,看这张图,就大概能理解了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ITGj1R0r-1679277241972)(C:\Users\13193\AppData\Roaming\Typora\typora-user-images\image-20230319102152444.png)]
模板代码

          <el-tree :data="newList">
            <template v-slot="{ data }">
              <div class="top ">
                <div class="name">{{ data.name }}</div>
                <div class="manger">{{ data.manger }}</div>
                <el-dropdown>
                  <span class="el-dropdown-link">
                    操作<i class="el-icon-arrow-down"></i>
                  </span>
                  <el-dropdown-menu slot="dropdown">
                    <el-dropdown-item>增加子部门</el-dropdown-item>
                  </el-dropdown-menu>
                </el-dropdown>
              </div>
            </template>
          </el-tree>

data里的数据

  data () {
    return {
      list: [
        {
          name: '总裁办',
          manger: '大小林',
          children: [
            {
              name: '深圳分公司',
              manger: '管理员'
            }
          ]
        }
      ],
      newList: []
    }
  },

3.树形结构转换

步骤

# 1.只取到第一层数据
# 2.将pid写成变量形参
# 3.给找出来的项加一个children:[]
# 4.使用递归找出子集,子集的pid是自己的id

在这里插入图片描述
完整代码

<template>
  <div>
    <el-tree :data="newList" :props="{ label: 'name' }" />
  </div>
</template>

<script>
export default {
  data () {
    return {
      list: [
        { name: '广东', id: 1, pid: '' },
        { name: '广州', id: 2, pid: 1 },
        { name: '深圳', id: 3, pid: 1 },
        { name: '宝安', id: 4, pid: 3 },
        { name: '广西', id: 5, pid: '' },
        { name: '石岩', id: 6, pid: 4 },
      ],
      newList: []
    }
  },
  created () {
    // 只收第一层数据
    // console.log(this.changeChannel(this.list));
    this.newList = this.changeData(this.list, '')
    console.log(this.newList);
  },
  methods: {
    // 树形数据转换
    changeData (arr, pid) {
      return arr.filter(item => {
        if (item.pid === pid) {
          // 这个地方的item
          item.children = this.changeData(arr, item.id)
          return true
        }
      })
    }
  }

}
</script>

<style></style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值