ceshi

"menuData":[{"activity":"0","code":"01","enName":"System Info","id":1680,"link":"0","name":"系统信息","parentid":"00","photo":"images/miniicons/page_tick.gif","remark":"null"},{"activity":"0","code":"02","enName":null,"id":1707,"link":"0","name":"企业信息管理","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"03","enName":"0","id":1732,"link":"0","name":"企业总览","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"05","enName":"0","id":1763,"link":"0","name":"能源统计与分析","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"07","enName":"0","id":1782,"link":"0","name":"节能目标管理","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"08","enName":"0","id":3771,"link":"0","name":"设备管理与分析","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"10","enName":"0","id":1804,"link":"0","name":"系统建模","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"11","enName":"0","id":1811,"link":"0","name":"文件信息发布","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"12","enName":"0","id":1830,"link":"0","name":"能源GIS监控","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"13","enName":"0","id":3826,"link":"0","name":"能耗报警","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"14","enName":"0","id":3829,"link":"0","name":"能源评价预测","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"15","enName":"0","id":3867,"link":"0","name":"能耗报告","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"17","enName":"0","id":3935,"link":"0","name":"页面","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"18","enName":"0","id":4059,"link":"0","name":"高级分析","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"16","enName":"0","id":4047,"link":"0","name":"环境管理","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"23","enName":"0","id":4016,"link":"0","name":"桥吊分析","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"24","enName":"0","id":4017,"link":"0","name":"龙门吊分析","parentid":"00","photo":"0","remark":"0"},{"activity":"0","code":"25","enName":"0","id":4018,"link":"0","name":"油机分析","parentid":"00","photo":"0","remark":"0"}],"result":null,"text":null}
$(function(){
    var defaultData = [
          {
            text: '系统信息',
            href: '#parent1',
            tags: ['4'],
            nodes: [
              {
                text: '数据字典',
                href: '#child1',
                tags: ['2']
              },
              {
                text: '菜单管理',
                href: '#child2',
                tags: ['0']
              },
              {
                text: '角色管理',
                href: '#child2',
                tags: ['0']
              },
              {
                text: '用户管理',
                href: '#child2',
                tags: ['0']
              },
              {
                text: '权限管理',
                href: '#child2',
                tags: ['0']
              },
              {
                text: '文件管理',
                href: '#child2',
                tags: ['0']
              },
              {
                text: '系统邮箱',
                href: '#child2',
                tags: ['0']
              }

            ]
          }
        //   {
        //     text: '菜单管理',
        //     href: '#parent2',
        //     tags: ['0']
        //   },
        //   {
        //     text: '角色管理',
        //     href: '#parent3',
        //      tags: ['0']
        //   },
        //   {
        //     text: '用户管理',
        //     href: '#parent4',
        //     tags: ['0']
        //   },
        //   {
        //     text: '权限管理',
        //     href: '#parent5'  ,
        //     tags: ['0']
        //   }
        ];
    // $('#treeview').treeview({
    //     data: defaultData
    // });
    initOneLevel();
    //initTwoLevel();
    initEvent();
})
Array.prototype.unique4 = function() {
var arr = [];
var hash = {};
for (var i = 0; i < this.length; i++) {
    var item = this[i];
    var key = typeof(item) + item
    if (hash[key] !== 1) {
        arr.push(item);
        hash[key] = 1;
    }
    } 
    return arr;
}
/**
 * 初始化一级菜单
 */
function initOneLevel(){
    $.post("queryMenuData.action", {}, function (data, textStatus){
        if(textStatus=="success"){
            if(data.result=="noLogin"){window.location.href="login.jsp";}
            var menudata=data.menuData; // 把返回的数据添加到页面上
            var dbName;
            buildOneNavbar(menudata);
        }else{
            alert("获取数据失败:"+textStatus);
            return false;
        }
    },"json" );
}
function buildOneNavbar(data){
    var str='<ul class="nav navbar-nav">';
    $("#h-navbar").html("");//清空
    str+='<li class="cur" data-code="0">  '+
                    '<a href="#" >主页</a>                                                         '+
                    '<div style="display:block;"></div>                                                                    '+
                    '<em class="caret" style="display:block; top: 3px;left: -7px;transform: rotate(-45deg);"></em> '+
                    '<em class="caret" style="display:block;top: 3px;right: -5px;transform: rotate(45deg);"></em> '+
                '</li>';
    for(var i=0;i<data.length;i++){
        var _name=data[i].name;
        var _code=data[i].code;
        str+='<li data-code="'+_code+'">  '+
                '<a href="#">'+_name+'</a>                                                         '+
                '<div></div>                                                                    '+
                '<em class="caret" style="top: 3px;left: -7px;transform: rotate(-45deg);"></em> '+
                '<em class="caret" style="top: 3px;right: -5px;transform: rotate(45deg);"></em> '+
            '</li>';
    }
    $("#h-navbar").html(str+'</ul>');
}
/**
 * 初始化二级菜单
 */
function initTwoLevel(code){
    var paramText="";
    if(code==0){
        //展示主页,左侧的菜单隐藏
        $(".content .slider").hide();
    }else{
        $(".content .slider").show();
        $.post("slMenu_queryMenuDataMs.action", {treeCode:code}, function (data, textStatus){
            if(textStatus=="success"){
                console.log(data);
                var menuList=data.menuList;
                //组件tree的数据格式
                initData(menuList);
            }else{
                alert("获取数据失败:"+textStatus);
                return false;
            }
        },"json" );
    }
}
function initData(data){
    //第一步:构建两个对象 子对象,与父子关系的对象
    console.log(data,'data')
    for(var i=0,childObj={},relatArr=[],relatArr1=[],relatObj={},nodes={nodes:[]};i<data.length;i++){
        var _rowData=data[i];
        childObj[_rowData.treeCode]=_rowData;
        relatObj[_rowData.treePCode]=relatData(_rowData.treePCode);
        relatArr1.push(_rowData.treePCode);
        if(_rowData.treePCode==='00'){
            var _pnode=_rowData.treeCode;
            if(nodes[_rowData.treeCode]===undefined){
                nodes[_rowData.treeCode]={nodes:[]};
            }
            nodes.nodes=nodes[_rowData.treeCode].nodes;
        }else{
            if(nodes[_rowData.treeCode]===undefined){
                nodes[_rowData.treeCode]={text:_rowData.name,nodes:[],obj:_rowData};
            }else{
                nodes[_rowData.treeCode].text=_rowData.name;
                nodes[_rowData.treeCode].obj=_rowData;
            }
            if(nodes[_rowData.treePCode]===undefined){
                nodes[_rowData.treePCode]={text:'',nodes:[],obj:{}};
            }
            nodes[_rowData.treePCode].nodes.push(nodes[_rowData.treeCode]);
        }
    }
    
    console.log(nodes);
    //去除nodes为空的键
    for(var k in nodes){
        if(k=='nodes'){continue;}
        if(nodes[k].nodes.length==0){
            delete nodes[k].nodes;
        }
    }
    $('#treeview').treeview({
        data: nodes.nodes
    });
    relatArr=relatArr1.unique4();//数组进行去重
    console.log(childObj,'childObj');
    console.log(relatObj,'relatObj');
    //第二步:遍历
    var treeArr=[];//最终构建树的数据

    for(var j=0;j<relatArr.length;j++){
        var relat1=relatArr[j];
        //如果relatArr[j]在relatObj里面存在,那么遍历存在键值的数组

        if(relatObj[relat1]!==undefined){
            var relat2=relatObj[relat1];
            for(var k=0;k<relat2.length;k++){
                treeArr[j]={
                    text:childObj[relat2[k]].name
                }
                //如果__relat[k]在父子关系的对象中有
                if(relatObj[relat2[k]]!==undefined){
                    var relat3=relatObj[relat2[k]];
                    treeArr[j].nodes=[]
                    for(var m=0;m<relat3.length;m++){
                        treeArr[j].nodes[m]={
                            text:childObj[relat3[m]].name
                        }
                    }
                }
            }
        }
    }
    console.log(treeArr);

    function relatData(pcode){
        var arr=[];
        for(var m=0;m<data.length;m++){
            if(data[m].treePCode==pcode){
                arr.push(data[m].treeCode);
            }
        }
        return arr;
    }
}
function initEvent(){
    //一级菜单的点击事件
    $("#h-navbar").on("click","li>a",function(){
        //获取到当前点击的文字
        initTwoLevel($(this).parent().attr("data-code"));
        //设置激活
        $(this).parent().attr("class","cur").siblings(".cur").removeAttr("class").children(":not(:first)").css("display","none");
        $(this).parent().children(":not(:first)").css("display","block");
    })
}
原文地址:https://www.cnblogs.com/pengfei25/p/9188893.html