ztree 仅在同级拖动 (亲测实力派)

实现仅同一个组织下不同部门排序拖拽,是判断当前拖拽的节点pId和目标节点的pId是否相等,否则拖拽无效。

  var zNodes =[  
            { id:1, pId:0, name:"总公司", open:true, iconSkin:"pIcon01"},  
            { id:2, pId:1, name:"一分公司", open:true, iconSkin:"pIcon02"},  
            { id:3, pId:2, name:"总经办", open:true, iconSkin:"pIcon02"},  
            { id:4, pId:3, name:"总经理", open:true, iconSkin:"pIcon01"},  
            { id:5, pId:4, name:"研发经理", open:true, iconSkin:"pIcon01"},  
            { id:6, pId:5, name:"研发部", iconSkin:"icon01"},  
            { id:7, pId:3, name:"销售经理"},  
            { id:8, pId:3, name:"售后经理"},  
            { id:9, pId:1, name:"二分公司",open:true, iconSkin:"icon02"}  
        ];  

var dragId; 
        //<!--
        var setting = {
            view: {
                dblClickExpand: false,
                showLine: false,
                selectedMulti: false
            },
            check: {
                enable: false
            },
            data: {
                simpleData: {
                    enable: true,
                    idKey: "id",
                    pIdKey: "pId",
                    rootPId: ""
                }
            }, 
            edit: { //此属性添加后,树才可以被拖拽
                enable: true,
                showRemoveBtn: false,
                showRenameBtn: false,
                drag: {
                    prev: true,
                    next: true,
                    inner: false //拖拽到目标节点时,设置是不允许成为目标节点的子节点  
                }
            },
            callback: {
                beforeClick: beforeClick,
                onClick: onClick,
                beforeDrag: function(treeId, treeNodes){
                    for (var i=0,l=treeNodes.length; i<l; i++) {  
                        dragId = treeNodes[i].pId;  
                        if (treeNodes[i].drag === false) { 
                             return false;  
                       }  
                    }  
                    return true;
                },beforeDrop: function(treeId, treeNodes, targetNode, moveType, isCopy){
                    //console.log("【源节点】节点id:"+treeNodes[0].id+"  父节点id:"+treeNodes[0].pId+"  级层:"+treeNodes[0].level+"  名称:"+treeNodes[0].name);
                    //console.log("【目标节点】 节点id:"+targetNode.id+"  父节点id:"+targetNode.pId+"  级层:"+targetNode.level+"  名称:"+targetNode.name);
                    if(treeNodes[0].level==0){
                        //console.log("不允许拖拽库节点");
                        return false;
                    }                    
                    //if(!targetNode.isParent){
                    //    console.log("不允许拖拽任何节点到表节点下");
                    //    return false;
                    //}   
                    
                    if(targetNode.pId == dragId){  
                        return true;  
                    }else{  
                        return false;  
                    }                 
                },onDrag: function(){
                    //console.log("拖拽中");
                    return true;
                },
                onDrop: function(event, treeId, treeNodes, targetNode, moveType, isCopy){
                    console.log("拖拽完毕");  
                    //console.log("【源节点】节点id:"+treeNodes[0].id+"  父节点id:"+treeNodes[0].pId+"  级层:"+treeNodes[0].level+"  名称:"+treeNodes[0].name);
                    //console.log("【目标节点】 节点id:"+targetNode.id+"  父节点id:"+targetNode.pId+"  级层:"+targetNode.level+"  名称:"+targetNode.name);
                    
                    if(treeNodes[0].pId == dragId && targetNode.pId==dragId){
                        var updateNode = getPeerNodes(targetNode);
                        var persons=[];
                        for(var i=0;i<updateNode.length;i++)
                        {
                            persons.push({id: updateNode[i].id, ordinal: i+1});
                        }
                        var para = {
							"updateJson":JSON.stringify(persons)
						 };
                         $.ajax({
                             type: "POST",
                             url: "DepartmentEdit.aspx/UpdateNode",
                             data: JSON.stringify(para),
                             async: false,  
                             dataType: "json",
							 contentType: "application/json; charset=utf-8",
                             success: function (resultData) {
                                 
                             },
                             error: function (ex, status) {

                             }
                         });
                    }else{  
                       //console.log('只能进行同级排序!');
                       return false;  
                    }             
                    return true;
                },
            }
        };
        function getPeerNodes(targetNode){  
            if(targetNode == null){  
              return null;
            }else{  
                if(targetNode.getParentNode() != null){  
                    return targetNode.getParentNode().children;  
                }  
               return null;  
            }  

        }  
        var zNodes = [];

        function beforeClick(treeId, treeNode, clickFlag) {
            if (treeNode != null && treeNode.permissionClick == "true") {
                return true;
            }
            else {
                return false;
            }
        }


猜你喜欢

转载自blog.csdn.net/ybb350680013/article/details/80648311