| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510 |
- 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 <em>after</em> 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: '<p>Window configured with:</p><pre style="margin-left:20px"><code>header: {\n titlePosition: 2,\n titleAlign: "center"\n},\ntools: [{type: "pin"}],\nclosable: true</code></pre>'
- }, {
- 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('岗位资料 <span style="color:gray">('+record.get('or_name')+')</span>');
- 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();
- }
- });
|