zoukankan      html  css  js  c++  java
  • 使用jOrgChart插件, 异步加载生成组织架构图

    jOrgChart插件是一个用来实现组织结构图的Jquery的插件-

    一、特点

    1.支持拖拽修改子节点;

    2.支持节点缩放展示;

    3.方便修改css定义样式;

    4.超轻量型;

    5.兼容性好,基本支持所有浏览器。

    二、异步加载生成自上而下的组织结构图前期准备

    1.通过后台查询数据库,生成树形数组结构,返回前台;

    2.需要引入js 插件和css 文件

    a.jquery.jOrgChart.css(插件样式自行修改)

    b.jquery.jOrgChart.js

    c. jquery.min.js

    d.jquery-ui.min.js  (想要拖拽布局的结构,需要引入jQuery UI插件)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <link rel="stylesheet" href="css/jquery.jOrgChart.css"  type="text/css"/>
        <script src="js/jquery.min.js"></script>
        <script src="js/jquery.jOrgChart.js"></script>
        <script src="js/jquery-ui.min.js"></script>
    </head>
    <body>
    <ul id="org" style="display:none">
    <li>
      Food
      <ul>
        <li>Beer</li>
        <li>Vegetables
          <ul>
            <li>Pumpkin</li>
            <li><a href="http://tquila.com" target="_blank">Aubergine</a></li>
          </ul>
        </li>
        <li>Bread</li>
        <li>Chocolate
          <ul>
            <li>Topdeck</li>
            <li>Reese's Cups</li>
          </ul>
        </li>
      </ul>
    </li>
    </ul>
        <script type="text/javascript">
        jQuery(document).ready(function() {
        $("#org").jOrgChart();
    });
        
        </script>
    </body>
    </html>
    View Code

    以上代码调用插件,通常但不总是在文件加载。您需要在这个调用中指定列表的标识。例如:

    jQuery(document).ready(function() {
        $("#org").jOrgChart();
    });

    这个调用将追加标记OrgChart默认<body>元,但您可以指定这个选项的一部分。

    配置参数

    只有3个配置选项:

    1. chartElement – 用于指定的HTML元素要添加组织结构图的标记。[default=’body’]
    2. depth – 告诉代码该解析的深度。默认值为“1”,它指示它要解析它的1999。 [default=-1]
    3. chartClass – 分配给生成标记的样式类的名称。[default=’jOrgChart’]
    4. dragAndDrop – 确定是否启用树节点元素的拖放功能。[default=false]

    3.使用jOrgChart插件,根据返回的数据将其子节点加入到相应的<li></li>中。

    三、后台数据数组结构表

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

    /**
     * 将一个有父类id和子类id关联的二维数组转化树状数组
     * @author holly
     * @since 2016/10/23
     * @param array $array          有关联的二维数组
     * @param string $parentId      父类id的名称
     * @param string $sonId         子类id的名称
     * @param number $pid           父类id的值,默认为0
     * @return array $arr           多维数组
     */
    function FormatTree($array,$parentId,$sonId, $pid = 0)
    {
        $arr = array();
        $tem = array();
        foreach ($array as $v) {
            if ($v[$parentId] == $pid) {
                $tem = FormatTree($array,$parentId,$sonId,$v[$sonId]);//递归,调用自身
                // 判断是否存在子数组
                $v['son'] = $tem;
                $arr[] = $v;
            }
        }
        return $arr;
    }
    /**
        public function ajaxOrganize(){
            $JavaApiData = array(
                'SqlCondition' => '',//查询条件
                'pageIndex' => 1,//页数
                'pageSize' => 1000000,//每页纪录数
            );
            $url = C("URL")."deptorganmanage.do";//接口地址
            $result = json_decode(post($url, json_encode($JavaApiData),10),JSON_UNESCAPED_UNICODE);//请求接口,得到结果
            $OrganizeList = FormatTree($result['data'],'pr_deptid','id');
            die(json_encode($OrganizeList));
        }
    }

    通过后台查询数据将数组通过json_encode转化为json格式的字符串返回前端页面。

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>组织架构图</title>
      <link rel="stylesheet" href="__PUBLIC__/Admin/css/jquery.jOrgChart.css"/>
    <style type="text/css">
    /*  .jOrgChart{ calc(100% - 60px);}
      .jOrgChart .node{writing-mode: horizontal-tb;padding: 0 5px; auto;}*/
    </style>
    </head>
    <body  >
    
      <!--显示组织架构图-->  
      <div id='jOrgChart'></div>
    
      <!-- jQuery includes -->
      <script type="text/javascript" src="__PUBLIC__/Admin/js/jquery.min.js"></script>
      <script src="__PUBLIC__/Admin/js/jquery.jOrgChart.js"></script>
      <script src="__PUBLIC__/Admin/js/jquery-ui.min.js"></script>
      <script>
        $(function(){  
          //数据返回  
          $.ajax({  
            url: "__APP__/Data/Dept/ajaxOrganize",  
            type: 'POST',  
            dataType: 'JSON',  
            data: {},  
            success: function(result){
                var showlist = $("<ul id='org' style='display:none'></ul>");  
                showall(result, showlist);  
                $("#jOrgChart").append(showlist);  
                $("#org").jOrgChart( {  
                    chartElement : '#jOrgChart',//指定在某个dom生成jorgchart  
                    dragAndDrop : false //设置是否可拖动  
                });
              }  
            });  
        }); 
      //menu_list为json数据  
      //parent为要组合成html的容器 
      var count = 0;
      function showall(menu_list, parent) { 
        count ++; 
        //最多显示10层
        if (count <= 10) {
          $.each(menu_list, function(index, val) {  
            if(val.son.length > 0){ 
              var li = $("<li></li>");  
              li.append("<a href='javascript:void(0)' onclick=getOrgId("+val.id+");>"+val.deptname+"</a>").append("<ul></ul>").appendTo(parent);  
              //递归显示  
              showall(val.son, $(li).children().eq(1));  
            }else{  
              $("<li></li>").append("<a href='javascript:void(0)' onclick=getOrgId("+val.id+");>"+val.deptname+"</a>").appendTo(parent);  
            }  
          });
        }
    
      }  
    </script>
    </body>
    </html>
    View Code

     

  • 相关阅读:
    java项目中ehcache缓存最简单用法
    最简单的freemarker用法实例
    java从包package中获取所有的Class
    java获取properties配置文件中某个属性最简单方法
    java去除字符串中的空格、回车、换行符、制表符
    java获取中文汉字的所有拼音
    运行时给java对象动态的属性赋值
    java中把文件拷贝到指定目录下最简单几种方法
    在Springmvc普通类@Autowired注入request为null解决方法
    java导入excel很完美的取值的方法
  • 原文地址:https://www.cnblogs.com/smivico/p/6259778.html
Copyright © 2011-2022 走看看