ztree拖拽排序

先给树结构newList排序:

zNodes= newList.sort(compare('sort'));

ztree的拖拽函数beforeDrop ,根据拖拽的类型,inner,prev,next分别处理

    function beforeDrop(treeId, treeNodes, targetNode, moveType) {
        var treeObj=$.fn.zTree.init($("#treeDemo"), setting, zNodes);
        var params ={};
        var newArr = [];
        if(moveType == 'inner'){
            if(targetNode.children){
                params = {
                    id:treeNodes[0].id,
                    pid:targetNode.id,
                    level:0
                }
                newArr.push(params)
                for(var i = 0;i<targetNode.children.length;i++){
                    if(treeNodes[0].id != targetNode.children[i].id){
                        params = {
                            id:targetNode.children[i].id,
                            pid:targetNode.children[i].pid,
                            level:i+1
                        }
                        newArr.push(params)
                    }
                }
            }else{
                params = {
                    id:treeNodes[0].id,
                    pid:targetNode.id,
                    level:0
                }
                newArr.push(params)
            }
        }else if(moveType == 'next'){
            var nodes = treeObj.getNodeByParam("id",targetNode.pid,null).children;
            var count = nodes.length +1;
            for(var i = 0;i<nodes.length;i++){
                if(targetNode.id == nodes[i].id){
                    count = i;
                    params = {
                        id:treeNodes[0].id,
                        pid:targetNode.pid,
                        level:nodes[i].sort + 1
                    }
                    newArr.push(params)
                }
            }
            for(var i = 0;i<nodes.length;i++){
                if(count < i){
                    params = {
                        id:nodes[i].id,
                        pid:nodes[i].pid,
                        level:nodes[i].sort + 1
                    }
                    if(nodes[i].id != treeNodes[0].id){
                        newArr.push(params)
                    }
                }
            }
        }else if(moveType == 'prev'){
            var nodes = treeObj.getNodeByParam("id",targetNode.pid,null).children;
            var count = nodes.length +1;
            for(var i = 0;i<nodes.length;i++){
                if(targetNode.id == nodes[i].id){
                    count = i;
                    if(i == 0){
                        params = {
                            id:treeNodes[0].id,
                            pid:targetNode.pid,
                            level:0
                        }
                    }else{
                        params = {
                            id:treeNodes[0].id,
                            pid:targetNode.pid,
                            level:nodes[i-1].sort + 1
                        }
                    }
                    newArr.push(params)
                }
            }
            for(var i = 0;i<nodes.length;i++){
                if(count-1 < i){
                    params = {
                        id:nodes[i].id,
                        pid:nodes[i].pid,
                        level:nodes[i].sort + 1
                    }
                    if(nodes[i].id != treeNodes[0].id){
                        newArr.push(params)
                    }
                }
            }
        }
        console.log(newArr)
        $.ajax({ });//掉后台接口,把排序完成的参数传给后台参数值
        return true;
    }

//排序
function compare(property){
    return function(a,b){
        var value1 = a[property];
        var value2 = b[property];
        return value1 - value2;
    }
}

猜你喜欢

转载自blog.csdn.net/luckysyy/article/details/80856120
今日推荐