树形图插件jOrgChart

本文介绍如何利用jOrgChart插件创建自上而下的组织架构树形图。通过后台查询数据库获取数据,转换为树形结构,并引入必要的js和css文件。数据格式需包含id、pid、name字段,childrens字段用于存放子节点。最终展示的样式可自定义调整。

项目要做组织架构图,要把它做成自上而下的树形结构。
一、说明

(1)通过后台查询数据库,生成树形数组结构,返回到前台。

(2)需要引入的js插件和css文件:

①jquery.jOrgChart.css

②jquery.min.js

③jquery.jOrgChart.js

(3)使用jOrgChart插件,根据返回的数据将其子节点加入到相应的

  • 中。

    首先,我们的数据表应该要有 id(节点),pid(父节点的id),name的字段,

    那么我们要把这个数组转为树形数组结构,即将各个元素放在 pid 父类元素的 childrens字段中,下面就是简单生成树形数组的代码。至于展示出来的样式,可以在html页面中添加自定义样式覆盖它之前的样式。

    注意:

    后台返回的数据格式必须如下,其中id,pid字段为必须要有。childrens字段也为必须的,不过字段名可以自己定义,name字段是根据自己业务需求的字段,在这里以name字段作为要显示的文本内容:

    1、json文件(test.json)(即后台接口返回的json格式的数据)

    code    0
    data    Object
    uid "6294415815978516480"
    score   "90000"
    username    "温延伟"
    tel "13904994549"
    title   "温延伟[900]<br>13904994549"
    children    [2]
    0   Object
    uid "6294683425546698753"
    username    "温延伟"
    tel "18524734549"
    score   "1800000"
    title   "温延伟[18000]<br>18524734549"
    children    [2]
    0   Object
    uid "6294694328581226497"
    username    "张素珍"
    tel "13130743645"
    score   "1800000"
    title   "张素珍[18000]<br>13130743645"
    children    [2]
    0   Object
    1   Object
    1   Object
    uid "6294710632713289729"
    username    "孙国玲"
    tel "13008285871"
    score   "1800000"
    title   "孙国玲[18000]<br>13008285871"
    children    [2]
    0   Object
    uid "6294770372805918721"
    username    "邓双全"
    tel "13512613562"
    score   "1800000"
    title   "邓双全[18000]<br>13512613562"
    children    []
    1   Object
    uid "6294771260823961600"
    username    "朱细兰"
    tel "15845164958"
    score   "1800000"
    title   "朱细兰[18000]<br>15845164958"
    children    [2]
    1   Object
    uid "6295594377238544384"
    username    "甜甜"
    tel "13146095554"
    score   "90000"
    title   "甜甜[900]<br>13146095554"
    children    [2]
    0   Object
    uid "6295597534249222144"
    username    "必胜客"
    tel "13146097777"
    score   "90000"
    title   "必胜客[900]<br>13146097777"
    children    []
    1   Object
    uid "6295597982809063425"
    username    "534534"
    tel "13146096666"
    score   "90000"
    title   "534534[900]<br>13146096666"
    children    []
    

    2、html页面(test.html)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jOrgChart异步加载</title>
        <link rel="stylesheet" href='jquery.jOrgChart.css'/>
        <script type='text/javascript' src='jquery.min.js'></script>
        <script type='text/javascript' src='jquery.jOrgChart.js'></script>
        <style>
            a {
                text-decoration: none;
                color: #fff;
                font-size: 12px;
            }
            .jOrgChart .node {
                width: 120px;
                height: 50px;
                line-height: 50px;
                border-radius: 4px;
                margin: 0 8px;
            }
        </style>
    </head>
    <body>
    
    <div id='jOrgChart'></div>
    
    
    <script type='text/javascript'>
    $(function () {
               get(window.apistore.URL_TREE,{},function (r) {
                    if(r.code == 0){
                      var showlist = $("<ul id='org' style='display:none'></ul>");
                      showall([r.data], showlist);
                      $("#jOrgChart").append(showlist);
                      $("#org").jOrgChart( {
                          chartElement : '#jOrgChart',//指定在某个dom生成jorgchart
    
                         });
                  }
              });
          });
            function showall(menu_list, parent) {
                $.each(menu_list, function(index, val) {
                    if(val.children != undefined && val.children.length > 0){
                        var li = $("<li></li>");
                        li.append("<span οnclick=getOrgId("+val.uid+");>"+val.title+"</span>").append("<ul></ul>").appendTo(parent);
                        //递归显示
                        showall(val.children, $(li).children().eq(1));
                    }else{
                        if (val.title != undefined){
                          $("<li></li>").append("<span οnclick=getOrgId("+val.uid+");>"+val.title+"</span>").appendTo(parent);
                        }
    
                   }
                });
    
            }
    
    </script>
    </body>
    </html>
    

    3、效果图(打开test.html页面后即可看到如下效果)
    效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值