实现仅同一个组织下不同部门排序拖拽,是判断当前拖拽的节点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;
}
}