87,910
社区成员
发帖
与我相关
我的任务
分享
// 全局路径
if(typeof(glbRootPath) != "undefined"){
basePath = glbRootPath;
}
function exxxx(tree,id){
tree.getNodeById(id).expandChildNodes(true);//2 是被刷新的结点编号
}
// 导航树
NavTree = function(){
var nav;//EXT 树面板
var navEditor;//EXT树编辑 面板
var rootMenu;//根菜单
var dirMenu;//目录菜单
var loader;//json源数据
var root;//根
var removeFlag = false;//是否可以删除
var titleChangeFlag = false;//标题是否可被修改
var nodeSelected;//当前被选中的节点
var mgr;//dwr函数
return {
//更新当前叶子节点所属父节点数据
reloadNavNode : function() {
var tree=nodeSelected.getOwnerTree();
tree.root.reload();
tree.expandPath(nodeSelected.getPath());
},
init : function(){
//检测dwr函数是否装配到位
if(!mgr){
Ext.Msg.alert("警告提示","请先通过NavTree.setMgr()设置mgr");
return;
}
//初始化json数据源
if(!loader){
loader = new Ext.tree.TreeLoader({
url : showpath
});
loader.on('beforeload', function(treeloader, node) {
treeloader.baseParams = {
id : node.id,
method : 'tree'
};
}, this);
}
//初始化根节点
if(!root){
root = new Ext.tree.AsyncTreeNode({
id : '0',
icon:basePath+'/images/globe.gif',
text : "组织菜单"
});
}
//初始化树面板
if(!nav){
nav = new Ext.tree.TreePanel({
rootVisible : true, //false为隐藏根节点
width : 240,
height : 600,
autoScroll : true, //下拉框自动延伸
containerScroll: true, //拖拽节点时随光标自动延伸
animate : true, //以动画形式伸展
loader : loader, //json数据源
root : root, //根节点
enableDD : true,//可拖拽节点
listeners : {
'click' : function(node, event) {
nodeSelected=node;
if(node.id!=0){
// var number = node.indexOf(node.lastChild)+1;
window.open(nodepath+"?zzId="+node.id,"mainZzFrame");
}
}
}
});
//事件: 添加右键菜单
nav.on("contextmenu", this.showTreeMenu);
//事件: 在拖动的时候,主要通过发送ajax请求,到后台,进行数据的同步修改
nav.on("textchange", function(node, newText, oldText) {
if (!titleChangeFlag && newText != oldText) {
mgr.ajaxUpdateTitle(node.id, newText, function(success) {
if (!success) {
Ext.Msg.show({
title : "操作失败!",
msg : "菜单修改失败!",
buttons : Ext.Msg.OK,
icon : Ext.MessageBox.ERROR
});
titleChangeFlag = true;
node.setText(oldText);
titleChangeFlag = false;
}
});
}
});
//当树节点成为拖动目标时触发
nav.on("nodedragover", function(e){
var node = e.target;
if(node.leaf)
node.leaf=false;
return true;
});
//事件: 当节点移动前触发
nav.on("beforemovenode", function(tree, node, oldParent, newParent, index) {
if (confirm("确定要移动到当前位置吗?")) {
mgr.ajaxMoveNode(node.id, oldParent.id, newParent.id, index);
}else{
return false;
}
});
//事件: 当节点删除时触发
nav.on("remove", function(tree, parentNode, node) {
if (removeFlag) {
mgr.ajaxRemoveNode(node.id);
window.open(basePath+"/jsp/aqadmin/zzempty.jsp","mainZzFrame")
}
});
}
this.setDirMenu();// 设置目录菜单
this.setRootMenu();//设置根菜单
},
//dwr函数填充
setMgr : function(manager){
mgr = manager;
},
getMgr : function(){
return mgr;
},
// 设置子节点菜单
setDirMenu: function(){
if(!dirMenu){
dirMenu = new Ext.menu.Menu({
items : [{
text : "修改标题",
handler : function() {
navEditor = new Ext.tree.TreeEditor(nav, {
allowBlank : false,
ignoreNoChange : true,
completeOnEnter : true,
blankText : '标题不能为空',
selectOnFocus : true
});
navEditor.triggerEdit(nodeSelected);
}
}, "-", {
text : "编辑",
handler : function() {
window.open(nodepath+"?zzId="+nodeSelected.id,"mainZzFrame")
}
}, "-", {
text : "添加组织机构",
handler : function() {
// var number = nodeSelected.indexOf(nodeSelected.lastChild)+1;
var addpage = addnodepath+ "?zzglForm.id="+ nodeSelected.id
+ "&zzglForm.leaf=1&zzglForm.node=1";
window.open(addpage,"mainZzFrame")
}
}, "-", {
text : "删除",
handler : this.delTreeItemComfirm
}]
});
}
},
// 设置根目录菜单
setRootMenu: function(){
if(!rootMenu){
if(fzzid=='0000000001'){//只有admin用户才有添加根组织权限
rootMenu = new Ext.menu.Menu({
items : [{
text : "添加根组织",
handler : function() {
var number = nodeSelected.indexOf(nodeSelected.lastChild) + 1;
var addpage =addnodepath+ "?zzglForm.id="+ nodeSelected.id
+ "&zzglForm.leaf=1&zzglForm.node=0&zzglForm.ordnumber=" + number;
window.open(addpage,"mainZzFrame")
}
}, "-", {
text : "打开所有节点",
handler: function(){
nav.expandAll()
}
}, "-", {
text : "关闭所有节点",
handler: function(){
nav.collapseAll()
}
}]
});
}else{
rootMenu = new Ext.menu.Menu({
items : [{
text : "打开所有节点",
handler: function(){
nav.expandAll()
}
}, "-", {
text : "关闭所有节点",
handler: function(){
nav.collapseAll()
}
}]
});
}
}
},
//显示右键菜单
showTreeMenu : function(node, e){
nodeSelected = node;
nodeSelected.select();
if (node.id==0) {// 如果是根节点
rootMenu.showAt(e.getPoint());
} else {// 如果不是
dirMenu.showAt(e.getPoint());
}
},
//删除操作前提示
delTreeItemComfirm : function(){
dirMenu.hide(true);
if(nodeSelected.text=='公共组织'){
alert('公共组织不可删除');
return false;
}
var message='确实要删除此节点吗?';
DWREngine.setAsync(false);//设置DWR同步调用
//校验是否存在子组织
mgr.hasChildZz(nodeSelected.id, function(flag) {
if(flag){
message='请注意,此组织有下级子组织 \n 如果确实要删除,那么子组织也将会被删除!';
}
});
if(confirm(message)){
//校验该节点下是否有人
mgr.hasChildRen(nodeSelected.id, function(flag) {
if(flag){
alert('删除失败,请先删除完此组织里的人员之后才能删除!');
}else{
removeFlag = true;
nodeSelected.remove();
removeFlag = false;
}
});
}
},
show : function(){
nav.render(Ext.getBody());
nav.getRootNode().toggle();
}
}
}();
// 文档加载完毕执行
Ext.onReady(function(){
Ext.BLANK_IMAGE_URL = basePath+"/js/ext/images/default/s.gif";
if(typeof(NavigateManager)=="undefined"){
Ext.Msg.alert("警告提示","请先设置DWR,并实例化NavigateManager");
}else{
NavTree.setMgr(NavigateManager);
NavTree.init();
NavTree.show();
}
});