ExtJs TreePanel

 

//行政机构管理、事业机构管理
Ext.BLANK_IMAGE_URL = '../extjs/resources/images/default/s.gif';
Ext.SSL_SECURE_URL = '../extjs/resources/images/default/s.gif';
var pageSize1 = 14;
var resultStore;
var querFormPanel;
var xtlb;
var jbgg;
var bzlx;
var currentNode;
var parentNode; 
var parentNodeid;
var formpanel;
var currentOrgId;
var currentOrgName;
//设置默认qhdm和xltb
var store;
var qhlbn=session.qhdm;
var xtlbn=1;
Ext.onReady(function() {
	checkSession();
	bzlx = document.getElementById('bzlx').value;
	
/**
 * 创建树
 */
	//	var treePanel=createTree();
	//------------------------------------------------------------------------------------------------------------------------------------------
	//	alert(Ext.getCmp('qhlbcomb').getValue());
	// 动态根节点
	var root = new Ext.tree.TreeNode({
		id : "-1",
		text : "组织机构"
	});
	var root1= new Ext.tree.AsyncTreeNode({
		id:'0',
		text:'行政机构'
	});
	root.appendChild(root1);
	
	var root2= new Ext.tree.AsyncTreeNode({
		id:'1',
		text:'事业机构'
	});
	root.appendChild(root2);
	
	
	// 机构树
	var treePanel = new Ext.tree.TreePanel({
		root : root,
		animate : true, // 动画效果
		border : false, // 边框
		rootVisible : false, // 隐藏根节点
		//autoScroll : false, // 自动滚动
		enableDD : false, // 拖拽节点
		containerScroll : true,
		width : '100%'
		,
		loader : new Ext.tree.TreeLoader({
			//url : 'showJigouTree.action'
		})
	});
	//页面加载自动刷新
	//11.3.24修改添加bzlx
	treePanel.on('beforeload', function(node) {
			treePanel.loader.dataUrl = 'showJigouTree.action?orgid=' + node.id+'&qhdm='+qhlbn+'&xtlb='+xtlbn+'&bzlx='+bzlx; // 定义子节点的Loader
});
	//展开节点事件
//	treePanel.on('expand',function (node){
//			currentNode = node;
//			parentNode = node.parentNode;
//			currentOrgId = node.attributes.id;
//			currentOrgName = node.attributes.text;
//			currentType=currentNode.attributes.type;
//		var params = resultStore.baseParams;
//	 	     Ext.apply(params,{"orgid":currentOrgId},{'type':'1'},{'bzlx':bzlx}); 
//	 	     resultStore.reload();
//	});
	//点击节点事件
	treePanel.on('click', function(node,event) {
		currentNode = node;
		parentNode = node.parentNode;
		currentOrgId = node.attributes.id;
		currentOrgName = node.attributes.text;
		currentType=currentNode.attributes.type;
         // 做两件事情,一件事情是设置重载参数
	  	    var params = resultStore.baseParams;
	 	     Ext.apply(params,{"orgid":currentOrgId},{'type':currentType},{'bzlx':bzlx},{'name':currentOrgName}); 
	 	     resultStore.reload();

	});
	//当页面node的text改变之后执行*无效(11.3.26)
//	treePanel.on('textchange',function( node,text,oldText){
//			node.parentNode.reload();
//	});

	//插入事件
	treePanel.on('insert',function(tree,parent,node,refNode){
		
	});
	
	treePanel.on('expandnode',function(node){
		if (node.attributes.id != "0")	treePanel.fireEvent("click",node);
	});
	
	
	
	var qhlb = new Ext.data.JsonStore({
		url : '../showDict.action?xmlDict=qhdm&type=1&loginUserQhdm='+session.qhdm,
		autoLoad : true,// 自动载入
		autoDestroy : true,
		fields : ["value", "text"],
		idIndex : 0,
		listeners:{'load':function(){
			xtlb.load();
			
		}}
			// id for each record will be the first element
	});
	xtlb = new Ext.data.JsonStore({
		url : '../showDict.action?xmlDict=class',
		autoLoad : false,// 自动载入
		autoDestroy : true,
		fields : ["value", "text"],
		idIndex : 0,
	    	listeners:{'load':function(){
       				//系统列表加载的时候自动加载树的默认值
	  					treePanel.loader = new Ext.tree.TreeLoader({   
			    		dataUrl: 'showJigouTree.action?qhdm=' +qhlbn+'&xtlb='+xtlbn+'&bzlx='+bzlx
			    	//dataUrl: 'showJigouTree.action?qhdm=220221&xtlb=1&bzlx='+bzlx
						});
					//treePanel.getRootNode().reload(); 刷新树根
		}}
	});
	//机构级别规格
	jbgg = new Ext.data.Store({
		url : '../showDict.action?xmlDict=grade',
		reader : new Ext.data.JsonReader({
			fields : ["value", "text"]
		})
	});
	jbgg.load();
	//区划列表栏
	var qhlbcomb = new Ext.form.ComboBox({
		id : 'qhlbcomb',
		store : qhlb,
		valueField : "value",
		inputValue : "value",
		displayField : "text",
		forceSelection : true,
		mode : "local",
		editable : false,
		triggerAction : 'all',
		allowBlank : true,
		fieldLabel : '区划',
		width : 180,
		hiddenName : 'qhlb',
		//选择事件
		listeners:{
                "select":function(){
                	qhlbn=Ext.get("qhlb").dom.value;
                	treePanel.loader = new Ext.tree.TreeLoader({   
			    	dataUrl: 'showJigouTree.action?qhdm=' +qhlbn+'&xtlb='+xtlbn+'&bzlx='+bzlx
					});
    			
                	treePanel.getNodeById('0').reload();
                	treePanel.getNodeById('1').reload();
                	//根据选择 显示部门信息(11年3月24 暂时没用上)
                	//注意加上 bzlx 也就是数据库里的 qfbs
                	var params = resultStore.baseParams;
	 	     		Ext.apply(params,{"qhdm":qhlbn},{'xtlbn':xtlbn},{'bzlx':bzlx}); 
	 	    		resultStore.reload();
                
                }
            }
		
	});

	var xtlbcomb = new Ext.form.ComboBox({
		id : 'xtlbcomb',
		store : xtlb,
		valueField : "value",
		inputValue : "value",
		displayField : "text",
		forceSelection : true,
		mode : "local",
		editable : false,
		triggerAction : 'all',
		allowBlank : true,
		fieldLabel : '系统类别',
		width : 80,
		hiddenName : 'xtlb',
		//选择事件
		listeners:{
                "select":function(){
                		xtlbn=Ext.get("xtlb").dom.value;
                		treePanel.loader = new Ext.tree.TreeLoader({   
			    		dataUrl: 'showJigouTree.action?qhdm=' +qhlbn+'&xtlb='+xtlbn+'&bzlx='+bzlx
						});
						
						treePanel.getNodeById('0').reload();
                		treePanel.getNodeById('1').reload();
                		
                		//根据选择 显示部门信息(11年3月24 暂时没用上)
                		//注意加上 bzlx 也就是数据库里的 qfbs
                		var params = resultStore.baseParams;
	 	     			Ext.apply(params,{"qhdm":qhlbn},{'xtlbn':xtlbn},{'bzlx':bzlx}); 
	 	    			 resultStore.reload();
                 }
            }
	});			
	// 获取区划列表
	qhlb.on("load", function() {
		qhlbcomb.setValue(qhlb.getAt(0).data.value);
	});
	// 获取系统列表
	xtlb.on("load", function() {
		xtlbcomb.setValue(xtlb.getAt(0).data.value);
	});

	// 查询结果面板
	var resultRecord = new Ext.data.Record.create([{
		name : 'orgid'
	}, {
		name : 'orgname'
	}, {
		name : 'jbgg'
	}, {
		name : 'wh'
	}, {
		name : 'lds'
	}, {
		name : 'jgs'
	}, {
		name : 'zjgdm'
	}, {
		name : 'qfbs'
	}, {
		name : 'xtlb'
	}, {
		name : 'qhdm'
	}]);
	
	// create the data store
	var colsM = new Ext.grid.ColumnModel([ 
	new Ext.grid.RowNumberer(),
	{
		header : "机构名称",
		dataIndex : "orgname",
		sortable: true,
		width : .30
	}, {
		header : "机构级别规格",
		dataIndex : "jbgg",
		sortable: true,
		width : .20,
		renderer : function(value, p, record) {
			
			var jbggcode = record.data.jbgg;
		
			var index = jbgg.find("value",jbggcode);
			return jbgg.getAt(index).data.text;
		}
	},{
		header : "批准文号",
		dataIndex : "wh",
		sortable: true,
		width : .20
	},{
		header : "领导职数",
		dataIndex : "lds",
		sortable: true,
		width : .10
	}, {
		header : "内设机构数",
		dataIndex : "jgs",
		sortable: true,
		width : .15
	},   {
		header : "操作",
		dataIndex : "caozuo",
		width : .10,
		renderer : function(value, p, record) {
			var orgid = record.data.orgid;
			var orgname = record.data.orgname;
			var qfbs = record.data.qfbs;
			
			var xtlb = record.data.xtlb;
			var qhdm = record.data.qhdm;

			var returnstr='    '
			returnstr +='<a href="javascript:void(0)" onclick="editOrg(\''+orgid+'\',\''+orgname+'\',\''+qfbs+'\',\''+xtlb+'\',\''+qhdm+'\')"><img src="../images/edit.gif" alt="查看编辑机构信息"/></a>';
			returnstr +='&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
			returnstr +='<a href="javascript:void(0)" ><img src="../images/delete.gif" onclick="deleteOrg(\''+orgid+'\',\''+orgname+'\')" alt="撤销机构信息"/></a>';
			
			return returnstr;
		}

	}]);
	colsM.defaultSortable = true;
	
		resultStore = new Ext.data.Store({
		//url : 'searchOrg.action',
		url :'getSubOrganizationAction.action',
		remoteSort : true,
		listeners : {
			beforeload : {
				fn : function(thiz, options) {
					Ext.apply(thiz.baseParams, Ext.getCmp('in-query-form').form
							.getValues());
				}
			}
		},
		reader : new Ext.data.JsonReader({
			root : 'list',
			totalProperty : 'total'
		}, resultRecord)

	});

	
	var resultGridPane = new Ext.grid.GridPanel({
		// enableDragDrop : false,
		autoWidth : true,
//		doLayout : function() {
//			this.setSize(Ext.get(this.getEl().dom.parentNode).getSize(true));
//			Ext.grid.GridPanel.prototype.doLayout.call(this);
//		},
		 enableColumnHide : true,// 是否显示列选择菜单
		tbar : [{
			text : '机构查询',
			icon : "../images/insp_sbook.gif",
			handler : function() {
				doSubmit();
			}
		},{
			text : '重置',
			icon : "../images/reload.png",
			handler : function() {
				var orgnameid = Ext.getCmp('orgnameid');
				orgnameid.setValue("");
			}
		},'-',{
			text : '增加机构',
			icon : "../images/create.gif",
			handler : function() {
				//parent.show("tab ", "测试Tab窗口", "");
				if(currentOrgId=='1'||parentNode.id=='1'){
					//显示添加事业单位窗口
					showAddShiyeWindow(qhlbn,xtlbn,currentOrgId,currentOrgName);
				}else if(currentOrgId=='0'||parentNode.id=='0'){
					//判断是否选择子节点,未选择 设置默认值
					//显示添加行政单位窗口
					showAddXingzhenWindow(qhlbn,xtlbn,currentOrgId,currentOrgName);
					
				}
				
				//显示机添加机构面板
				//showAddJigouWindow();
				
			}
		}],
		cm : colsM,
		store : resultStore,
		iconCls : 'icon-grid',
		stripeRows : true,
		loadMask : {
			msg : '正在加载数据,请稍侯……'
		},
		viewConfig : {
			sortAscText : '升序',
			sortDescText : '降序',
			columnsText : '显示列',
			forceFit : true
		},

		bbar : new Ext.PagingToolbar({
			pageSize : pageSize1,
			store : resultStore,
			displayInfo : true,
			displayMsg : '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
			plugins : new Ext.ux.ProgressBarPager(),
			emptyMsg : "没有记录"
		}),
		layout : 'fit'// 表格内列内容填充满,按列头比例填充

	});
	
	
	resultGridPane.on('dblclick', function(object) {
		var record = this.getSelectionModel().getSelected()
//	showLiucheng(record.get('piid'))
	});
		// 搜索条件面板
	querFormPanel = new Ext.form.FormPanel({
		id : "in-query-form",
		frame : true,
		layout : "fit",
		labelWidth : 55,
		autoWidth : true,
		height : 50,
		keys : [{
			key : Ext.EventObject.ENTER,
			fn : doSubmit,
			
			scope : this
		}],
		items : [{
			layout : 'column',
			items : [{
				name:'bzlx',
				xtype : 'hidden',
				value:bzlx
			}, {
				columnWidth : .30,
				layout : 'form',
				labelWidth : 40,
				items : [qhlbcomb]
			}, {
				columnWidth : .3,
				layout : 'form',
				labelWidth : 60,
				items : [xtlbcomb]
			}, {
				columnWidth : .30,
				layout : 'form',
				labelWidth : 60,
				items : [{
					fieldLabel : "机构名称",
					xtype : "textfield",
					name : "orgname",
					id:"orgnameid",
					anchor : "95%"
				}]
			}]
		}]

	});	

	 var panel = new Ext.Viewport({
		id : 'queryView',
		renderTo : document.body,
		frame : true,
		header : false,
		border : true,
		layout : 'border',
		items : [{
			id : 'QueryPanel',
			region : 'north',
			height : 40,
			
			items : [querFormPanel]
		},{
			region : "west",
//			title : "机构部门",
			width : 300,
			split : true,
			autoScroll:true,
			collapsible : true,
			titleCollapse : true,
			items : [treePanel]
		}, {
			id : 'resultPanel1',
			region : 'center',

			collapsible : false,
			margins : '5 0 5 5',
			cmargins : '5 5 5 5',
			bodyStyle : 'padding:1px;',
			split : false,
			resizeTabs:true,
			layout : 'fit',
			items : [resultGridPane]
		}]
	});

});

//编辑机构
function editOrg(orgid,orgname,qfbs,xtlb,qhdm){
	var url='';
	//机构区分标识 0 ,1   xtlb系统列表,qhdm区划代码
	// 这里这俩是 把 修改 url 改成了 showwindows() 原因 parent.show() 不好用..囧 
	//所以showShiyeGrouptabs.js和 showXingzhengGrouptabs.js有所改变
	if(qfbs=='0'){
		//url="showXingzhengGrouptabs.jsp?orgid="+orgid+"&orgname="+orgname+"&xtlb="+xtlb+"&qhdm="+qhdm;
		showXingzhengGrouptabs(orgid,orgname,qhdm);
	}else if(qfbs=='1'){
		//url="showShiyeGrouptabs.jsp?orgid="+orgid+"&orgname="+orgname+"&xtlb="+xtlb+"&qhdm="+qhdm;
		showShiyeGrouptabs(orgid,orgname,xtlb,qhdm);
	}
	//测试window.open(url);
	//parent.show(orgid, orgname, url);
	//测试parent.show('1', orgname, url);

}
function deleteOrg(orgid,orgname){
	
	Ext.MessageBox.show({
		title:'撤销机构提示',
		msg: '你确定要撤销“'+orgname+'”吗?',
		buttons: Ext.MessageBox.YESNO,
		fn: function(btn){
				if(btn=="yes"){
					Ext.Ajax.timeout = 10000; // 10秒
					Ext.Ajax.request({
						url : 'shezhiJigouWuxiao.action',
						params : {
							'orgid' : orgid
						},
						method : 'POST',
						success : function(){
							//doSubmit();
							//成功之后刷新根节点
							refreshCurrentNode(0);
							resultStore.reload();
						},
						failure : function(result, request) {
							Ext.MessageBox.show({
										title : '错误',
										msg : '读取数据发生错误,请重试!',
										buttons : Ext.MessageBox.OK,
										icon : Ext.MessageBox.ERROR
									});
						}
					});
				}
			},
		//animEl: 'elId',
		icon: Ext.MessageBox.QUESTION
	});
	
}

	


function doSubmit() {
	
	querFormPanel.getForm().submit({
		url : 'searchOrg.action',
		//传递的参数
		params : 'start=0&limit=' + pageSize1,
		waitTitle : '请等待...',
		waitMsg : '正在查询机构信息信息...',
		success : function(form, action) {
			// resultStore.load();
			// resultStore.reload();
			resultStore.removeAll();
			resultStore.loadData(action.result);
		},
		failure : function(form, action) {
			Ext.Msg.alert('提示', '查询出现错误');
		}

	});
}
//显示添加机构窗口
function showAddJigouWindow(){
	//取出区划代码
	var qhdm=Ext.getCmp('qhlbcomb').getValue();
	//取出系统类别
	var xtlb=Ext.getCmp('xtlbcomb').getValue();
	if(bzlx=='0'){//如果编制类型是“0”,显示添加行政机构窗口
		showAddXingzhenWindow(qhdm,xtlb,-1,-1);
		
		resultStore.reload();
	}else{
		showAddShiyeWindow(qhdm,xtlb,-1,-1);
		resultStore.reload();
	}
}


//************************************************************************************************
function requestDepInfo2(){

	//alert(currentDepId);
	Ext.QuickTips.init();// ֧��tips��ʾ
	Ext.form.Field.prototype.msgTarget = 'side';// ��ʾ�ķ�ʽ��ö��ֵΪ"qtip","title","under","side"
	
	//===Ajaxȡ�����=======================================================================
	Ext.Ajax.timeout = 10000; // 10��
	Ext.Ajax.request({
		url : '../jigouguanli/showDepartmentInfo.action',
		params : {
			'id' : currentDepId
		},
		method : 'POST',
		success : showDepInfo,
		failure : function(result, request) {
			Ext.MessageBox.show({
						title : '����',
						msg : '����������!',
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.ERROR
					});
		}
	});
}

//增加部门��ŵIJ���
function addDepartment() {
	//alert("���һ��");
	if(validAddForm()){
		submitAddForm();
		
	}else{
		Ext.getCmp("fdepName").focus();
	}
}

// ����ҳ��
function resetAddForm() {
	Ext.getCmp('fdepId').setValue("");
	Ext.getCmp('fdepName').setValue("");
}

//刷新节点
function refreshCurrentNode(optr){
	if (optr == 0 || optr == 2){
		if (currentNode.isExpanded()){
			
			if (optr == 2 && currentNode.childNodes.length == 1) {
				parentNode.reload();
			} 
			else 
				currentNode.reload();
		}
		else{
			parentNode.reload();
		}
	} else
		currentNode.reload();
}
//当点击可展开的条件的时候显示该子节点信息
//function getDepartment(id, name) {
//		 	var params = resultStore.baseParams;
//	     Ext.apply(params,{"orgid":id},{'name':name}); 
 //	     resultStore.reload();	 	    
//}


//******************************************************************************************************
 
ShowJiGouTree.action
package com.euler.services.impls.jigouguanli;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.euler.actions.jigouguanli.StructureTreeModel;
import com.euler.orm.Organization;
import com.euler.services.AbstractService;

public class ShowJigouTreeImpl extends AbstractService {

	@Override
	public Map execute(Map map) throws Exception {
		String orgid = (String) map.get("orgid");
		String qhdm = (String) map.get("qhdm");
		String xtlb = (String) map.get("xtlb");
		String bzlx = (String) map.get("bzlx");

		List resultList = new ArrayList();
		List paraList = new ArrayList();
		String orderby = "  order by jbgg,porgid,orderid ";
		String commonhql = null;
		// 建立子节点
		//0是行政 1是 事业
		//当是 事业的时候封闭 这里&&bzlx.equals("0")
		if (orgid.equals("0")) {
			commonhql = "from Organization where qhdm='" + qhdm
					+ "' and xtlb='" + xtlb
					+ "' and porgid='-1' and youxiao='1' and qfbs='0'";
		//当是行政和事业都执行
		}else if(orgid.equals("1")) {
			commonhql = "from Organization where qhdm='" + qhdm
			+ "' and xtlb='" + xtlb
			+ "' and porgid='-1' and youxiao='1' and qfbs='1'";
			//else 创建 相关子叶
		} else {
			/*
			 * Time:11.3.26 行政单位下设事业单位执行sql 建立叶子节点
			 */
			commonhql = "from Organization where porgid=? and youxiao='1' ";
			paraList.add(orgid);
		}
		List list = dao.query(commonhql + orderby, paraList.toArray());
		for (int i = 0; i < list.size(); i++) {
			Organization org = (Organization) list.get(i);
			// 判断是否有子叶
			String counthql="";
			if(orgid.equals("0")){
				 counthql = "select count(orgid) from Organization where porgid=? and youxiao='1' and qfbs='0'";
			}else{
				 counthql = "select count(orgid) from Organization where porgid=? and youxiao='1' and qfbs='1'";
			}
			
			int count = Integer.parseInt(dao.query(counthql, org.getOrgid())
					.get(0).toString());
			// 创建树模型结构
			StructureTreeModel model = new StructureTreeModel();
			model.setId(org.getOrgid());
			model.setText(org.getOrgname());
			// 如果是叶子都是2
			if (count == 0) {
				model.setLeaf(true);
				model.setType("2");
				model.setHref("");
				// model.setHref("javascript:getDepartment('"+org.getOrgid()+"','"+org.getOrgname()+"')");
				// model.setCls("folder");
				// 如果是子节点都是1
			} else {
				model.setLeaf(false);
				model.setType("1");
				// model.setHref("javascript:getDepartment('"+org.getOrgid()+"','"+org.getOrgname()+"')");
				// model.setCls("file");
			}
			resultList.add(model);

		}
		Map returnMap = new HashMap();
		returnMap.put("list", resultList);
		return returnMap;
	}
}


                            

你可能感兴趣的:(JavaScript,DAO,Ajax,ext,prototype)