使用gojs画出拓扑图,清晰的看出组织人员关系

请添加图片描述

拓扑图的实现gojs
通过 递归数据,找到父级的id,进行展示数据
记得使用gojs把水印去掉
这个组件架构图可以看清楚公司的组织部门架构

后端返回的数据格式进行处理如下
<script>
        let treeData = [
            {
                //展示的名字
                id: 'team1',
                //专属的值
                value: '1',
                //树的子集
                children: [
                    {
                        id: 'team1-1',
                        value: '1-1',
                        children: [
                            {
                                id: 'team1-1-2',
                                value: '1-1-2'
                            }
                        ]
                    }, {
                        id: 'team1-2',
                        value: '1-2',
                        children: []
                    }
                ]
            },
            {
                id: 'team2',
                value: '2',
                children: [
                    {
                        id: 'team2-1',
                        value: '2-1',
                        children: [
                            {
                                id: 'team2-2',
                                value: '2-2'
                            }
                        ]
                    }
                ]
            }
        ];

        function recursionMenus(tree) {
            const menus = []
            tree.forEach((item) => {
                let childMenus = []
                if (item.children && item.children.length) {
                    item.children.forEach(row => {
                        row.parentId = item.id;
                    })
                    childMenus = this.recursionMenus(item.children)
                }
                menus.push({
                    ...item,
                    children: childMenus
                })
            })
            return menus
        }

        const newTree = recursionMenus(treeData)
        console.log(newTree, 99);
        let newList = []
        // 数组的怕平
        function flatArr(newTree) {
            (newTree || []).forEach((item) => {
                let cItem = JSON.parse(JSON.stringify(item || {}))
                delete cItem.children
                newList.push(cItem)
                if(item?.children && item?.children.length){
                    flatArr(item?.children)
                }
            })
            return newList
        }
        console.log( flatArr(newTree), ' flatArr(newTree) flatArr(newTree)')
    </script>

根据id 返回所有的父级id
const findAllFather = (tree, id, parentIds = []) =`在这里插入代码片`> {
  if (!tree || !tree.length) {
    return null
  }
  for (const node of tree) {
    if (node.id === id) {
      return parentIds
    }
    const find = findAllFather(node.children, id, [...parentIds, node.id])
    if (find) {
      return find
    }
  }
  return null
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值