先给树结构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;
}
}