jquery.Ztree

 /*   ztree的右键功能 */
     div#rMenu {
         position:absolute; 
         visibility:hidden;
         top:0; 
         background-color: #555;
         text-align: left;
         padding: 2px;
         }
    div#rMenu a{
        cursor: pointer;
        list-style: none outside none;
    }
<div id="rMenu">
       <a  href="#" class="list-group-item"  id="expand">生成</a>
     <!--  <a href="#" class="list-group-item" οnclick="expandSon();">编辑表结构</a> -->
</div>
//获得数的所有底层节点
function getZtreeNodes(nodes,flag){
    var result=true;
    while(result){
        $(nodes).each(function (i, node) {
            var childrens=node.children;
            if(childrens==null||childrens==undefined){
                result=false;
                return;
            }
            $(childrens).each(function (j, children) {
                if(flag!=null&&flag==1){
                    children={
                               "tableEnName":children.name,
                               'tableId':children.id,
                               'tableZhName':children.tableCnName,
                               'updateStatus':children.updateStatus,
                               'orgCode':children.orgCode};
                }
                nodes.push(children);
            });
            nodes.shift();
        })
    }
}
//生成树的层级结构,此为生深度生成,还有广度生成
function genZtree(nodess,row,clomns,cengJi1,cengJi2){
    var nodes=nodess;
    while(true){
        if(nodes==undefined||nodes==null){
            nodes=[];
        }
        var clomn=clomns[cengJi1];
        var clomnName=row[clomn];
        var children;
        var nodeName;
        var datastatus=0;
        var node;
        if(nodes!=undefined&&nodes.length>0){
            for(var i=0;i<nodes.length;i++){
                node=nodes[i];
                nodeName=node.name;
                children=node.children;
                if(nodeName!=undefined&&nodeName!=null&&nodeName!=''&&nodeName==clomnName){
                    datastatus=1;
                    break;
                }
            }
        }
        if(datastatus==0){
            node={};
            node.name=clomnName;
            children=[];
            node.children=children;
            nodes.push(node);
        }
        if(cengJi1<cengJi2){
             cengJi1++;
             nodes=children;
            //genZtree(children,row,clomns,cengJi1+1,cengJi2);
        }else{
            var cashDataBase = {
                    'icon':'../images/rmanage/file.png',
                    'name':row.tableEnName,
                    'id':row.tableId,
                    'tableCnName':row.tableZhName,
                    'updateStatus':row.updateStatus,
                    'orgCode':row.orgCode};
            children.push(cashDataBase);
            node.children=children;
            return;
        }
    }
};

var ztreeNodes;
function initTree1(ztreeNodes){
     var setting = {
                view: {
                    selectedMulti: false ,//是否允许多选
                    addDiyDom: addDiyDom
                   },
               data: {
                      simpleData: {
                                  enable: true
                                   }
                           },
            callback:{
                     onClick : zTreeOnClick,
                     //onRightClick: onRightClick,
                },
     };
     $.fn.zTree.init($("#ztree2"), setting, ztreeNodes);  
};

function initTree(){ 
              $.ajax({
                  type: "GET",
                  url: jQuery.WEBROOT +'/tableManager/list?',
                 // async:false,
                  dataType:"json",
                  success:function (data){
                      var rows = data.rows;
                      var clomns=['orgCode','businessType'];                  
                        ztreeNodes=[];
                       for(var j = 0;j< rows.length;j++){
                          genZtree(ztreeNodes,rows[j],clomns,0,clomns.length-1);
                      }
                       initTree1(ztreeNodes);
                  }
                  });
}

function onRightClick(event, treeId, treeNode){
    if (!treeNode && event.target.tagName.toLowerCase() != "button" && $(event.target).parents("a").length == 0) {
        showRMenu("root", event.clientX, event.clientY);
    } else if (treeNode && !treeNode.noR) {
        showRMenu("node", event.clientX, event.clientY);
    }
}

var rMenu=$("#rMenu");
//显示右键菜单
function showRMenu(type, x, y) {
  $("#rMenu ul").show();
  rMenu.css({"top":y+"px", "left":x+"px", "visibility":"visible"}); //设置右键菜单的位置、可见
  $("body").bind("mousedown", onBodyMouseDown);
}
//隐藏右键菜单
function hideRMenu() {
  if (rMenu) rMenu.css({"visibility": "hidden"}); //设置右键菜单不可见
  $("body").unbind("mousedown", onBodyMouseDown);
}
//鼠标按下事件
function onBodyMouseDown(event){
  if (!(event.target.id == "rMenu" || $(event.target).parents("#rMenu").length>0)) {
      rMenu.css({"visibility" : "hidden"});
  }
}
function zTreeOnClick(event, treeId, treeNode){
    tableId=treeNode.id;
    updateStatus=treeNode.updateStatus;
    tableCnName=treeNode.treeNode;
    tableEnName=treeNode.name;
    $("#tableEnName").html(treeNode.name);
    $("#tableCnName").html(treeNode.tableCnName);
    $('#tableInfo').bsGrid('refresh',
            {url:jQuery.WEBROOT+'/api/tempTableColumn/list?tempTableColumn.tableId='+tableId});
}
function AutoMatch(txtObj) {
    initTree1(ztreeNodes);
    if (txtObj.value.length > 0) {
        var zTree = $.fn.zTree.getZTreeObj("ztree2");
        var nodeList = zTree.getNodesByParamFuzzy("name", txtObj.value);
        //将找到的nodelist节点更新至Ztree内
        initTree1(nodeList);
       //$.fn.zTree.init($("#ztree2"), setting, nodeList);
    }         
}

//显示树
function showMenu() {
  var cityObj = $("#citySel");
  var cityOffset = $("#citySel").offset();
  $("#menuContent").slideDown("fast");
}
     
//隐藏树
function hideMenu() {
  $("#menuContent").fadeOut("fast");
}

function onClick(e, treeId, treeNode) {
    var zTree = $.fn.zTree.getZTreeObj("ztree2");
    //获得选中的节点
    var nodes = zTree.getSelectedNodes(),
    v = "";
    //根据id排序
    nodes.sort(function compare(a, b) { return a.id - b.id; });
    for (var i = 0, l = nodes.length; i < l; i++) {
        if(i!==0){
            v +=","+nodes[i].name ;
        }    
        v +=nodes[i].name;
    }
    //将选中节点的名称显示在文本框内
    var cityObj = $("#citySel");
    cityObj.attr("value", v);
    //隐藏zTree
  //  hideMenu();
    return false;
}
   //计算树节点超长隐藏
   function addDiyDom(treeId, treeNode) {
       var spaceWidth = 5;
       var switchObj = $("#" + treeNode.tId + "_switch"),
       icoObj = $("#" + treeNode.tId + "_ico");
       switchObj.remove();
       icoObj.parent().before(switchObj);
       var spantxt = $("#" + treeNode.tId + "_span").html();
       var ztreewidth=$("#ztree2").width();
       if (spantxt.length > ztreewidth/12) {
           spantxt = spantxt.substring(0,ztreewidth/12) + "...";
           $("#" + treeNode.tId + "_span").html(spantxt);
       }
   }

 

posted @ 2020-09-27 14:52  sunjinwei123  阅读(311)  评论(0)    收藏  举报