Ext.define('erp.controller.sys.step.HrController', { extend: 'Ext.app.Controller', id:'HrController', views:['sys.hr.HrPortal','sys.plugin.Spotlight','sys.hr.OrgTreePanel','sys.hr.EmployeeGrid','sys.hr.JprocessGrid','sys.hr.StandardJobGrid','sys.hr.PowerJobGrid'], init:function(){ var me=this; this.control({ 'button[id=change]':{ 'click':function(btn){ var tabp=Ext.getCmp('hrgrouptabpanel'); spot.show(tabp.down('treepanel').getView().getNodes()[2].id); var win= Ext.create('widget.window', { title: 'Layout Window with title after tools', header: { titlePosition: 2, titleAlign: 'center' }, closable: true, closeAction: 'hide', width: 600, minWidth: 350, height: 350, modal:true, tools: [{type: 'pin'}], layout: { type: 'border', padding: 5 }, items: [{ region: 'west', title: 'Navigation', width: 200, split: true, collapsible: true, floatable: false }, { region: 'center', xtype: 'tabpanel', items: [{ // LTR even when example is RTL so that the code can be read rtl: false, title: 'Bogus Tab', html: '

Window configured with:

header: {\n    titlePosition: 2,\n    titleAlign: "center"\n},\ntools: [{type: "pin"}],\nclosable: true
' }, { title: 'Another Tab', html: 'Hello world 2' }, { title: 'Closable Tab', html: 'Hello world 3', closable: true }] }] }); win.show(); } }, 'button[itemId=adddepart]':{ click:function(btn){ var departgrid=Ext.getCmp('departgrid'); var win = Ext.widget('detailwindow',{ title:'核算部门', items:[Ext.widget('formportal',{ region:'center', caller:'Department', saveUrl: 'hr/employee/saveDepartment.action', deleteUrl: 'hr/employee/deleteDepartment.action', updateUrl: 'hr/employee/updateDepartment.action', getIdUrl: 'common/getId.action?seq=Department_SEQ', saveSuccess:me.addDepartSuccess, keyField: 'dp_id', currentTab:departgrid })] }); win.showRelyBtn(win,btn); } }, 'grouptabpanel>treepanel':{ itemmousedown:function(selModel,record){ if(record.get('id')=='powerinfo'){ Ext.getCmp('powerjobgrid').getStore().load(); }else if(record.get('id')=='jobdetail'){ Ext.getCmp('jobdetail').getStore().load(); } } }, 'button[itemId=loadStandardData]':{ click:function(){ Ext.Msg.confirm('确认载入?', '载入标准人事数据将清除掉现有的数据包括(核算部门,组织,岗位)?', function(choice) { if(choice === 'yes') { Ext.Ajax.request({//拿到tree数据 url : basePath + 'ma/sysinit/InitHrDataFromStandard.action', method:'post', callback : function(options,success,response){ showResult('提示','载入成功!'); Ext.getCmp('departgrid').store.load(); Ext.getCmp('orgtree').getTreeGridNode({parentId: 0}); Ext.getCmp('jobgrid').store.load(); } }); } }); } }, 'button[itemId=loadprocess]':{ click:function(){ Ext.Msg.confirm('确认载入?', '载入标准流程数据将清除掉现有的数据包括(已定义流程以及流程设置)?', function(choice) { if(choice === 'yes') { Ext.Ajax.request({//拿到tree数据 url : basePath + 'ma/sysinit/InitProcessDataFromStandard.action', method:'post', callback : function(options,success,response){ showResult('提示','载入成功!'); Ext.getCmp('jprocessgrid').store.load(); } }); } }); } }, 'menuitem[itemId=addOrg]':{ click:me.handleAddOrgClick }, 'menuitem[itemId=topOrg]':{ click:me.handleAddTopOrgClick }, 'button[itemId=addjob]':{ click:me.handleAddJobClick }, 'button[itemId=savejob]':{ click:me.handleSaveJobClick }, 'button[itemId=canceljob]':{ click:me.handCancelJobclick }, 'button[itemId=saveemployee]':{ click:me.handleSaveEmployeeClick }, 'button[itemId=addemployee]':{ click:me.handleaddEmployeeClick }, 'button[itemId=deleteemployee]':{ click:me.handleDeleteEmployeeClick }, 'button[itemId=copypower]':{ click:me.handCopyPowerClick }, 'orgtreepanel': { itemmousedown:function(selModel, record){ me.reloadJob(record); }, itemmouseenter: me.showActions, itemmouseleave: me.hideActions, beforeitemmouseenter:me.showActions, removeclick:me.handleRemoveClick, speexpandclick:me.handleSpeExpandClick }, 'jprocessgrid':{ itemmousedown:function(selModel,record){ me.loadJprocessSet(record.get('jd_caller')); } } }); var app=erp.getApplication(); var hrportal = activeItem.child('hrportal'); if(!hrportal){ var hrportal = Ext.widget('hrportal',{desc:'组织人员'}); activeItem.add(hrportal); } /* var spot = Ext.create('erp.view.sys.plugin.Spotlight', { easing: 'easeOut', duration: 300 });*/ }, loadNode: function(record){ var me = this; if (record.data['or_id']) { if(record.isExpanded() && record.childNodes.length > 0){ me.flag = true; } else { if(record.childNodes.length == 0){ Ext.Ajax.request({//拿到tree数据 url : basePath + 'hr/getTreeNode.action', params: { parentId: record.data['id'] }, callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.result && res.result.length>0){ var tree = res.result; Ext.each(tree, function(t){ t.or_id = t.id; t.or_code=t.data.or_code; t.or_name=t.data.or_name; t.or_department=t.data.or_department; t.or_departmentcode=t.data.or_departmentcode; //t.leaf=t.data.or_isleaf==-1; t.leaf=false; t.data = null; }); record.appendChild(tree); Ext.each(record.childNodes, function(){ this.dirty = false; }); } else if(res.exceptionInfo){ showError(res.exceptionInfo); } } }); } } } }, reloadJob:function(record){ if(!record){ var orgTree = Ext.getCmp('orgtree'), selectionModel = orgTree.getSelectionModel(), record = selectionModel.getSelection()[0]; } var jobgrid=Ext.getCmp('jobgrid'); jobgrid.setTitle('岗位资料 ('+record.get('or_name')+')'); jobgrid.getStore().load({params:{ orgid:record.get('or_id') }}); }, handleSpeExpandClick:function(record){ this.loadNode(record); var treegrid = Ext.getCmp('orgtree'); treegrid.selModel.select(record); this.reloadJob(record); }, handleAddOrgClick: function(component, e) { this.addOrg(true,component); }, handleAddTopOrgClick: function(component, e) { this.addOrg(true,component,'top'); }, handleAddJobClick:function(component,e){ this.addJob(); }, handleaddEmployeeClick:function(component,e){ this.addEmployee(); }, handleSaveJobClick:function(component,e){ this.saveJob(); }, handCancelJobclick:function(btn,e){ var me=this; Ext.Msg.confirm('取消保存?', '确定要取消保存已修改的数据?',function(btn){ if(btn=='yes'){ me.reloadJob(); } }); }, handleSaveEmployeeClick:function(component,e){ this.saveEmployee(); }, handleDeleteEmployeeClick:function(component,e){ this.deleteEmployee(); }, handCopyPowerClick:function(btn,e){ var grid=Ext.getCmp('powerjobgrid'),updateRecords=grid.getStore().getUpdatedRecords(),updateArr=new Array(),o; if(updateRecords.length>0){ Ext.Array.each(updateRecords,function(item){ o=new Object(); o.cp_tocode=item.get('jo_code'); o.cp_toname=item.get('jo_name'); o.cp_toid=item.get('jo_id'); o.cp_toorname=item.get('jo_orgName'); o.cp_fromcode=item.get('fromcode'); o.cp_fromname=item.get('fromname'); o.cp_fromid=item.get('fromid'); o.cp_haschange='1'; updateArr.push(Ext.JSON.encode(o)); }); grid.setLoading(true); Ext.Ajax.request({ url : basePath + 'ma/power/copypowerFromStandard.action', params : { param:unescape(updateArr.toString()) }, method : 'post', callback : function(options,success,response){ grid.setLoading(false); var res = new Ext.decode(response.responseText); if(res.success){ showResult('提示','复制成功!'); grid.getStore().load(); } } }); }else showResult('提示','请先选择需要复制权限标准岗位!'); }, addOrg:function(leaf,btn,type){ var me = this, orgTree = Ext.getCmp('orgtree'), cellEditingPlugin = orgTree.cellEditingPlugin, selectionModel = orgTree.getSelectionModel(), selectedList = selectionModel.getSelection()[0]; var parentId=selectedList && !type?selectedList.get('or_id'):0; parentList=parentId==0?orgTree.getRootNode():selectedList; newOrg =this.getNewOrg(parentId,btn); expandAndEdit = function() { if(parentList.isExpanded()) { selectionModel.select(newOrg); me.addedNode = newOrg; cellEditingPlugin.startEdit(newOrg, 0); } else { orgTree.on('afteritemexpand', function startEdit(list) { if(list === parentList) { selectionModel.select(newList); me.addedNode = newList; cellEditingPlugin.startEdit(newOrg, 0); orgTree.un('afteritemexpand', startEdit); } }); parentList.expand(); } }; parentList.appendChild(newOrg); orgTree.getStore().sync(); if(orgTree.getView().isVisible(true)) { expandAndEdit(); } else { orgTree.on('expand', function onExpand() { expandAndEdit(); listTree.un('expand', onExpand); }); orgTree.expand(); } }, addJob:function(){ var me = this, orgTree = Ext.getCmp('orgtree'), cellEditingPlugin = orgTree.cellEditingPlugin, selectionModel = orgTree.getSelectionModel(), selectedList = selectionModel.getSelection()[0]; if(!selectedList) { showResult('提示','请选选择需要添加岗位的所属组织!'); return; } var rec ={ jo_id: '', jo_code: '', jo_name: '', jo_orgcode:selectedList.get('or_code'), jo_orgName:selectedList.get('or_name'), jo_orgId :selectedList.get('or_id') }, jobgrid=Ext.getCmp('jobgrid'); edit = jobgrid.cellEditingPlugin; edit.cancelEdit(); jobgrid.store.insert(0, rec); edit.startEditByPosition({ row: 0, column: 1 }); }, addEmployee:function(){ var me = this, employeegrid=Ext.getCmp('employeegrid'); edit = employeegrid.cellEditingPlugin; edit.cancelEdit(); employeegrid.store.insert(0, {}); edit.startEditByPosition({ row: 0, column: 1 }); }, saveJob:function(){ var jobgrid=Ext.getCmp('jobgrid'),me=this; if(jobgrid.isVal()){ jobgrid.store.sync({ failure:function(){ showResult('提示','保存失败,请检查岗位编号是否重复!'); }, success:function(){ showResult('提示','保存成功!'); me.reloadJob(); } }); }else showResult('提示','有必填项未填写无法保存!'); }, saveEmployee:function(){ var employeegrid=Ext.getCmp('employeegrid'); employeegrid.store.sync({ failure:function(){ showResult('提示','保存失败,请检查数据是否异常'); }, success:function(){ showResult('提示','保存成功!'); employeegrid.getStore().load(); } }); }, deleteEmployee:function(){ var employeegrid=Ext.getCmp('employeegrid'); selectionModel=employeegrid.getSelectionModel(), selecteds = selectionModel.getSelection(),datas=new Array(); Ext.Array.each(selecteds,function(item){ if(item.get('em_id')) datas.push(Ext.JSON.encode(item.data)); }); Ext.Ajax.request({ url : basePath + 'hr/employee/deleteEmployees.action', params: { jsonData:unescape(datas.toString()) }, callback : function(options,success,response){ var res = new Ext.decode(response.responseText); showResult('提示','删除成功!'); employeegrid.getStore().load(); } }); }, getNewOrg:function(parentId,btn){ var org=new Object(); parentId=parentId?parentId:0; Ext.Ajax.request({//拿到tree数据 url : basePath + 'hr/addOrgByParent.action', params: { parentId: parentId }, async:false, callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.org){ org=res.org; org.loaded=true; org.id=org.or_id; } btn.setDisabled(false); } }); return org; }, showActions: function(view, list, node, rowIndex, e) { var icons = Ext.DomQuery.select('.x-action-col-icon', node),record=view.getRecord(node); Ext.each(icons, function(icon){ Ext.get(icon).removeCls('x-hidden'); }); }, hideActions: function(view, list, node, rowIndex, e) { var icons = Ext.DomQuery.select('.x-action-col-icon', node),record=view.getRecord(node); Ext.each(icons, function(icon){ if(icon.getAttribute('src')==basePath+'jsps/sys/images/deletetree.png') Ext.get(icon).addCls('x-hidden'); }); }, handleRemoveClick: function(view, rowIndex, colIndex, column, e) { var record=view.getRecord(view.findTargetByEvent(e)),title=record.get('or_name'), orgTree = Ext.getCmp('orgtree'), selModel = orgTree.getSelectionModel(); Ext.Msg.confirm('删除数据?', '确定要删除当前选中组织 ('+title+')?', function(choice) { if(choice === 'yes') { Ext.Ajax.request({//拿到tree数据 url : basePath + 'hr/employee/deleteHrOrg.action', params: { id: record.get('id') }, async:false, callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.success){ showResult('提示','删除组织('+title+') 成功!'); record.parentNode.removeChild(record); if (!selModel.hasSelection()) { selModel.select(0); } } } }); } }); }, loadJprocessSet:function(caller){ Ext.Ajax.request({//拿到tree数据 url : basePath + 'common/getJprocessSet.action', params: { caller:caller }, callback : function(options,success,response){ var res = new Ext.decode(response.responseText); var jprocessset=res.data; delete jprocessset['js_id']; delete jprocessset['js_bean']; delete jprocessset['js_serviceclass']; delete jprocessset['js_codefield']; Ext.getCmp('jprocesssetgrid').setSource(jprocessset); } }); }, addDepartSuccess:function(panel,btn){ Ext.getCmp('departgrid').getStore().load(); var win=btn.up('window'); if(win) win.close(); } });