前端根据json数据,递归解析数据,生成树形组织图


接收的json数据结构

test.json(文件示例):

[
  {
    "children": [
      {
        "children": [],
        "id": "3",
        "orgName": "汽车营销业",
        "pid": "root"
      },
      {
        "children": [
          {
            "children": [],
            "id": "12",
            "orgName": "公司名称12",
            "pid": "2"
          },
          {
            "children": [],
            "id": "11",
            "orgName": "公司名称11",
            "pid": "2"
          }
        ],
        "id": "2",
        "orgName": "物流业",
        "pid": "root"
      },
      {
        "children": [
          {
            "children": [],
            "id": "123",
            "orgName": "公司名称1",
            "pid": "1"
          }
        ],
        "id": "1",
        "orgName": "客运业",
        "pid": "root"
      }
    ],
    "id": "root",
    "orgName": "总体",
    "pid": ""
  }
]

前端处理

1.引入js文件及css样式

前端生成树形结构需要的所有js文件总结:

	<link rel="stylesheet" href="css/jquery.jOrgChart.css"/>
    <script src="layui/layui.js"
            charset="utf-8"></script>
    <script src="js/jquery-3.2.1.min.js"></script>
    <script src="js/aboutLayui.js"></script>
    <script  src="js/html2canvas.js"></script>
    <script  src="js/html2canvas.min.js"></script>
    <script type='text/javascript' src="js/jquery.jOrgChart.js"></script>
 	 	

2.html结构

html代码结构部分,装载树形组织结构图的容器。

<!-- 树状组织结构图 -->
<div id='jOrgChart' class='test'></div>

3. js代码渲染画面

使用ajax获取json文件的内容,递归解析json数据,使用前端自带的框架生成组织结构图

	$.ajax({
        url: "test.json",
        type: 'GET',
        dataType: 'json',
        success: function(result){
            var showlist = $("<ul id='org' style='display:none'></ul>");
            showall(JSON.parse(result.data), showlist);
            $("#jOrgChart").append(showlist);
            $("#org").jOrgChart( {
                chartElement : '#jOrgChart',//指定在某个dom生成jorgchart
                dragAndDrop : false //设置是否可拖动 
            });
        }
    });

//递归生成树形组织结构图
function showall(menu_list, parent) {
    $.each(menu_list, function(index, val) {
        if( val.children.length > 0){
            var li = $("<li></li>");
            li.append("<a href='javascript:void(0)' οnclick=getOrgId("+val+");>"+val.orgName+"</a>").append("<ul></ul>").appendTo(parent);
            //递归显示
            showall(val.children, $(li).children().eq(1));
        }else{
            $("<li></li>").append("<a href='javascript:void(0)' οnclick=getOrgId("+val+");>"+val.orgName+"</a>").appendTo(parent);
        }
    });

}

效果图

展示效果:
在这里插入图片描述

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值