Vue 渲染树状图

 改变数据布局

子节点的pid 等于父节点的id

用element组件库实现

原数据:

{
  id: '1',
  name: '张三',
  pid: '0'
},
{
  id: '2',
  name: ' 李四',
  pid: '0'
},
{
  id: 'a1',
  name: '王五',
  pid: '1'
},
{
  id: 'a2',
  name: '王小五',
  pid: '1'
}

转换后:

{
  id: '1',
  name: '张三',
  pid: '0',
  children: [
    {
      id: 'a1',
      name: '王五',
      pid: '1'
    },
    {
      id: 'a2',
      name: '王小五',
      pid: '1'
    }
  ]
},
{
  id: '2',
  name: ' 李四',
  pid: '0'
}

展示

封装一个方法 utils/terrData.js

export const getDepartmentsData = (list, parentId) => {
  const result = []
  list.forEach(item => {
    if (item.pid === parentId) {
      const children = getDepartmentsData(list, item.id)
      if (children) {
        item.children = children
      }
      result.push(item)
    }
  })
  return result
}

导入 方法,用getDepartmentsData()过滤获取的数据

得到tableData 数组

import { getDepartmentsData } from '@/utils/terrData'

export default {
  data () {
    return {
      tableData: []
    }
  },

  methods: {
    async getPermissionListApi () {
      // 获取数据
      const res = await getPermissionList()
      console.log(res)
      // 过滤获取的数据
      const tableData = getDepartmentsData(res, '0')
      this.tableData = tableData
      console.log(this.tableData)
    },
  }
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒员员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值