www.gusucode.com > EXTJS界面的JSP人事管理系统源码程序 > EXTJS界面的JSP人事管理系统/WebRoot/WebRoot/workSystem.js

    //职务体系
var PlantGlobal = Ext.data.Record.create([
           {name: 'workno', type: 'string'},
           {name: 'workname', type: 'string'},
           {name: 'worktype',type:'string'},
           {name: 'workdj', type: 'string'}
      	]);	
WorkSystem = Ext.extend(Ext.Panel,{
	layout:'fit',
	autoScroll : false,
	closable:true,
	gridViewConfig:{},
	id : "workSystem",
	listeners:{'beforeclose':function(){}},
	title : "职务体系",
	margins : '1 2 2 0',
	renderTo : Ext.getBody(),
	createPanel:function(){
		var panel = new Ext.Panel({
			layout:"border",
			width:1035,
			height:570,
			items:[this.tree,this.displaypanel]
		});
		return panel;
	},
	initComponent:function(){
		this.tree = new Ext.tree.TreePanel({
				id:'treeWorkSys',
				title:'职务体系',
                animate:true,
                region:'west',
                autoScroll:true,
                collapsible:true,
                margins : '1 2 2 0',
                animCollapse:true,
                collapsible:true,
                width:200,
                height:570,
                rootVisible: false,
                root: new Ext.tree.AsyncTreeNode(),
                loader: new Ext.app.BookLoader({
	            	dataUrl:'worksysmenu.xml'
	        	}),
                containerScroll: true,
                enableDD:true,
                dropConfig: {appendOnly:true},
                listeners:{
                	'click':function(e){
                				if(e.leaf){
                					var sm = new Ext.grid.CheckboxSelectionModel();
                					var cm = new Ext.grid.ColumnModel([sm,{
												id:'workno',
												header : 'workno',
												width:75,
												dataIndex:'workno',
												editor: new Ext.form.TextField({
									               allowBlank: false
									           })
											}, {
												header:'workname',
												width:100,
												dataIndex:'workname',
												editor: new Ext.form.TextField({
									               allowBlank: false
									           })
											}, {
												header:'worktype',
												width:100,
												dataIndex:'worktype',
												editor: new Ext.form.TextField({
									               allowBlank: false
									           })
											}, {
												header:'workdj',
												width:145,
												dataIndex:'workdj',
												editor: new Ext.form.TextField({
									               allowBlank: false
									           })
											}]);
//											this.Plant = Ext.data.Record.create([
//									           {name: 'workno', type: 'string'},
//									           {name: 'workname', type: 'string'},
//									           {name: 'worktype',type:'string'},
//									           {name: 'workdj', type: 'string'}
//									      	]);	
                					if(e.id=="dev"){
                						var storedev = new Ext.data.Store({
											        url: 'devwork.xml',
											        reader: new Ext.data.XmlReader({
											               record: 'plant'
											           },PlantGlobal),
											        sortInfo:{field:'workno', direction:'ASC'}
								    	});
                						Ext.getCmp('pan').reconfigure(storedev,cm);
                						Ext.getCmp('pan').getStore().load();
                					}else if(e.id=="cus"){
                						var storecus = new Ext.data.Store({
											        url: 'cuswork.xml',
											        reader: new Ext.data.XmlReader({
											               record: 'plant'
											           },PlantGlobal),
											        sortInfo:{field:'workno', direction:'ASC'}
								    	});
                						Ext.getCmp('pan').reconfigure(storecus,cm);
                						Ext.getCmp('pan').getStore().load();
                					}else if(e.id=='man'){
                						var storeman = new Ext.data.Store({
											        url: 'managerwork.xml',
											        reader: new Ext.data.XmlReader({
											               record: 'plant'
											           },PlantGlobal),
											        sortInfo:{field:'workno', direction:'ASC'}
								    	});
                						Ext.getCmp('pan').reconfigure(storeman,cm);
                						Ext.getCmp('pan').getStore().load();
                					}else if(e.id=='mon'){
                						var storemon = new Ext.data.Store({
											        url: 'monwork.xml',
											        reader: new Ext.data.XmlReader({
											               record: 'plant'
											           },PlantGlobal),
											        sortInfo:{field:'workno', direction:'ASC'}
								    	});
                						Ext.getCmp('pan').reconfigure(storemon,cm);
                						Ext.getCmp('pan').getStore().load();
                					}
                				}
                			}
                }

		});
		this.tree.expandAll();
		var tr = this.tree;
		var treeEditer = new Ext.tree.TreeEditor(Ext.getCmp('treeWorkSys'), {
								  id : 'tree-Manage',
								  allowBlank : false
  						});
  		var rightClick = new Ext.menu.Menu({
					    id : 'rightClickCont',
					    items : [{
							       id : 'addNode',
							       text : '添加',
								   menu : [{
									          id : 'insertNode',
									          text : '添加兄弟节点',
									          handler : function(tree) {
									           insertNode();
									          }
									         }, {
									          id : 'appendNode',
									          text : '添加儿子节点',
									          handler : function(tree) {
									           
									           appendNodeAction();
									          }
									         }]
									      }, '-', {
									       id : 'delNode',
									       text : '删除',
									       handler : function(tree) {
									
									        delNodeAction();
									       }
									      }, {
									       id : 'modifNode',
									       text : '修改',
									       handler : function() {
									
									        modifNodeAction()
									       }
									      }]
   										});
   					this.tree.on('contextmenu', function(node, event) {// 声明菜单类型
    																	event.preventDefault();// 这行是必须的,使用preventDefault方法可防止浏览器的默认事件操作发生。
   																		node.select();
   					 													rightClick.showAt(event.getXY());// 取得鼠标点击坐标,展示菜单
   								});
   					function insertNode(str) {
							  var selectedNode = tr.getSelectionModel().getSelectedNode();
							
							  var selectedParentNode = selectedNode.parentNode;
							 
							  var newNode = new Ext.tree.TreeNode({
							     text : str!=null?str:'新建节点'
							    });
							  if (selectedParentNode == null) {
							   selectedNode.appendChild(newNode);
							  } else {
							   selectedParentNode.insertBefore(newNode, selectedNode);
							  }
							
							  setTimeout(function() {
							     treeEditer.editNode = newNode;
							     treeEditer.startEdit(newNode.ui.textNode);
							    }, 10);
 					}
 				
 				 // 添加子节点事件实现
				 function appendNodeAction() {
				  
						  var selectedNode = tr.getSelectionModel().getSelectedNode();
						  if (selectedNode.isLeaf()) {
						   selectedNode.leaf = false;
						  }
						  var newNode = selectedNode.appendChild(new Ext.tree.TreeNode({
						     text : '新建节点'
						    }));
						  newNode.parentNode.expand(true, true, function() {
						     tr.getSelectionModel().select(newNode);
						     setTimeout(function() {
						        treeEditer.editNode = newNode;
						        treeEditer.startEdit(newNode.ui.textNode);
						       }, 10);
						    });// 将上级树形展开
				 }
				 
				 // 删除节点事件实现
				 function delNodeAction() {
				  
					  var selectedNode = tr.getSelectionModel().getSelectedNode();
					  // 得到选中的节点
					  selectedNode.remove();
				 };
				 
				  // 修改节点事件实现
				 function modifNodeAction() {
							
							  var selectedNode = tr.getSelectionModel().getSelectedNode();// 得到选中的节点
							  treeEditer.editNode = selectedNode;
							  treeEditer.startEdit(selectedNode.ui.textNode);
				 };
				 
				 //弹出窗口
				 var win = new Ext.Window({
						    maskDisabled : false,
						    id : 'tree-window-worksys',
						    title:'添加职务',
						    modal : true,// 是否为模式窗口
						    constrain : true,// 窗口只能在viewport指定的范围
						    closable : true,// 窗口是否可以关闭
						    closeAction : 'hide',
						    buttonAlign:'center',
						    layout : 'fit',
						    width : 300,
						    height : 200,
						    plain : true,
						    buttons:[new Ext.Button({text:'提交',
						    						iconCls:'submit',
						    						handler:function(){
						    								var str = document.getElementById('newdeptname').value;
						    								insertNode(str);
						    								win.close();
						    								win.destroy();
						    						}})],
						    items : [new Ext.FormPanel({
						    				layout:'form',
						    				width:100,
						    				labelAlign:'right',
						    				height:100,
						    				
						    				frame: true,
						    				items:[{
						    						xtype:'textfield',
						    						fieldLabel:'职务编号',
						    						id:'newdeptno'
						    				},{
						    						xtype:'textfield',
						    						fieldLabel:'职务名称',
						    						id:'newdeptname'
						    				}]
						    	})]
  				 });

		//WorkSystem.superclass.initComponent.call(this);
  		var sm = new Ext.grid.CheckboxSelectionModel();
		this.cm = new Ext.grid.ColumnModel([sm,{
			id:'workno',
			header : 'workno',
			width:75,
			dataIndex:'workno',
			editor: new Ext.form.TextField({
               allowBlank: false
           })
		}, {
			header:'workname',
			width:100,
			dataIndex:'workname',
			editor: new Ext.form.TextField({
               allowBlank: false
           })
		}, {
			header:'worktype',
			width:100,
			dataIndex:'worktype',
			editor: new Ext.form.TextField({
               allowBlank: false
           })
		}, {
			header:'workdj',
			width:145,
			dataIndex:'workdj',
			editor: new Ext.form.TextField({
               allowBlank: false
           })
		}]);
		this.Plant = Ext.data.Record.create([
           {name: 'workno', type: 'string'},
           {name: 'workname', type: 'string'},
           {name: 'worktype',type:'string'},
           {name: 'workdj', type: 'string'}
      	]);	
      	
      	this.store = new Ext.data.Store({
			        url: 'managerwork.xml',
			        reader: new Ext.data.XmlReader({
			               record: 'plant'
			           }, this.Plant),
			        sortInfo:{field:'workno', direction:'ASC'}
    	});
    	this.storedev = new Ext.data.Store({
			        url: 'devwork.xml',
			        reader: new Ext.data.XmlReader({
			               record: 'plant'
			           }, this.Plant),
			        sortInfo:{field:'workno', direction:'ASC'}
    	});
//		this.store = new Ext.data.JsonStore({
//			autoLoad : false,
//			root : "rows",
//			// totalProperty : "rows",
//			url : 'searchEmployeeBycondition.action',
//			fields : ["id","employeeNo","chineseName","englishName","position","department","employeeType","Detail"]
//		});
       
		var viewConfig = Ext.apply({
			forceFit : true
		}, this.gridViewConfig);
		this.pan = new Ext.grid.EditorGridPanel({
			store: this.store,
			region:'center',
			id:'pan',
			ddGroup: 'gridDDGroup',
			enableDragDrop   : true,
        	stripeRows : true,
			sm:sm,
	        cm: this.cm,
	        width:420,
	        iconCls:'icon-grid',
	        title:'职务体系',
	        //autoExpandColumn:'workno',
	        frame:true,
	        clicksToEdit:2,
			//viewConfig : viewConfig  
	        tbar : ['', {
								text : '新增',
								pressed : true,
								iconCls:'add',
								handler : function(){
													var selectedNode = tr.getSelectionModel().getSelectedNode();
													if(selectedNode==null){
															Ext.Msg.alert('提示','请选择一个父节点!');
													}else{
            											win.show();
													}
								}
						},'','',{
								text : '修改',
								pressed : true,
								iconCls:'edit',
								handler : function() {
								}
								
						},'',{
							text:'删除',
							pressed:true,
							iconCls:'delete',
							handler:function(){
								var selmode = Ext.getCmp('pan').getSelectionModel().getSelections();
								if(selmode.length==0){
									Ext.Msg.alert('提示','请选择你要删除的行!');
								}else{
									Ext.Msg.confirm('提示','您确定删除吗?',function(button){
											if(button=='yes'){
												for(var i=0;i<selmode.length;i++){
													Ext.getCmp('pan').getStore().remove(selmode[i]);
												}
											}	
									});
									
								}
							}
						}]
		});
		
		var fields = [
	   {name: 'workno', mapping : 'workno'},
	   {name: 'workname', mapping : 'workname'},
	   {name: 'worktype', mapping : 'worktype'},
	   {name: 'workdj', mapping : 'workdj'}
	];
	var formPanel = new Ext.form.FormPanel({
		region     : 'east',
		title      : '详细',
		bodyStyle  : 'padding: 10px; background-color: #DFE8F6',
		labelWidth :100,
		id:'form',
		iconCls:'form',
		frame:true,
		buttons:[{text:'提交',iconCls:'submit',handler:function(){
				var workno = Ext.get('workno').dom.value;
				var workname = Ext.get('workname').dom.value;
				var worktype = Ext.get('worktype').dom.value;
				var workdj = Ext.get('workdj').dom.value;
				var store = Ext.getCmp('pan').getStore();
				var record = Ext.data.Record.create(fields);
				store.add(new record({workno:workno,workname:workname,worktype:worktype,workdj:workdj}));
		}},{text:'重置',iconCls:'reset'}],
		width:420,
		items      : [{},{},
					new Ext.form.TextField({
						fieldLabel : '职务编号',
						name: 'workno'
						}),
					new Ext.form.TextField({
						fieldLabel : '职务名称',
						name       : 'workname'
					}),
					new Ext.form.TextField({
						fieldLabel : '职务类型',
						name       : 'worktype'
					}),
					new Ext.form.TextField({
						fieldLabel : '职务等级',
						name       : 'workdj'})
						]
	});
	this.displaypanel = new Ext.Panel({
		region:'center',
		layout:'border',
		width:820,
		height:570,
		items:[this.pan,formPanel]
	});
	var fields = [
	   {name: 'workno', mapping : 'workno'},
	   {name: 'workname', mapping : 'workname'},
	   {name: 'worktype', mapping : 'worktype'},
	   {name: 'workdj', mapping : 'workdj'}
	];
	//var blankRecord =  Ext.data.Record.create(fields);
	//var formPanelDropTargetEl =  formPanel.getEl();
	setTimeout(function(){
		var blankRecord =  Ext.data.Record.create(fields);
		var formPanelDropTargetEl =  formPanel.getEl().dom;
		var formPanelDropTarget = new Ext.dd.DropTarget(formPanelDropTargetEl, {
		ddGroup:'gridDDGroup',
		notifyEnter : function(ddSource, e, data) {
			
			//Add some flare to invite drop.
			formPanel.body.stopFx();
			formPanel.body.highlight();
		},
		notifyDrop  : function(ddSource, e, data){
			
			// Reference the record (single selection) for readability
			var selectedRecord = ddSource.dragData.selections[0];						
			
			
			// Load the record into the form
			formPanel.getForm().loadRecord(selectedRecord);	
			
			
			// Delete record from the grid.  not really required.
			ddSource.grid.store.remove(selectedRecord);	

			return(true);
		}
	}); 	
	},1000);
	Ext.getCmp('form').buttons[1].on('click',function(){
		Ext.getCmp('form').getForm().reset();
		
	})
		if (!this.fp) {
			this.fp = this.createPanel();
		}
		this.add(this.fp);
	}
})