Ext.QuickTips.init(); Ext.define('erp.controller.hr.emplmana.Employee', { extend: 'Ext.app.Controller', FormUtil: Ext.create('erp.util.FormUtil'), GridUtil: Ext.create('erp.util.GridUtil'), BaseUtil: Ext.create('erp.util.BaseUtil'), views:[ 'hr.emplmana.Employee','core.form.Panel','core.button.Add','core.button.Save','core.button.Close', 'core.button.Sync','core.button.ResAudit','core.button.Submit','core.button.Audit','core.button.Update', 'core.button.Delete','core.form.YnField', 'core.trigger.MasterTrigger','core.trigger.TextAreaTrigger', 'core.trigger.DbfindTrigger','core.form.PhotoField','core.button.ResSubmit' ], refs : [ { ref : 'grid', selector : 'gridpanel' },{ ref : 'grid1', selector : 'gridpanel1' }], init:function(){ var me = this; this.control({ /*'erpFormPanel textfield[name=em_code]': { change: function(field){ if(field.value != em_code){//只能看见自己的密码 if(Ext.getCmp('em_type').value != 'admin'){ Ext.getCmp('em_password').hide(); } } } },*/ /*'field[name=em_password]': { afterrender: function(f){ f.hide(); //f.el.dom.getElementsByTagName('input')[0].type = "password"; } },*/ 'field[name=em_mailpassword]': { afterrender: function(f){ f.el.dom.getElementsByTagName('input')[0].type = "password"; } }, 'erpSaveButton': { click: function(btn){ this.beforeSave(); } }, 'erpCloseButton': { click: function(btn){ this.FormUtil.beforeClose(this); } }, 'erpUpdateButton': { click: function(btn){ this.beforeUpdate(); } }, 'erpDeleteButton': { afterrender: function(btn){ var status = Ext.getCmp('em_statuscode'); if(status && status.value == 'AUDITED'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onDelete(Ext.getCmp('em_id').value); } }, 'erpSubmitButton': { afterrender: function(btn){ var status = Ext.getCmp('em_statuscode'); if(status && status.value != 'ENTERING'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onSubmit(Ext.getCmp('em_id').value, true); } }, 'erpResSubmitButton': { afterrender: function(btn){ var status = Ext.getCmp('em_statuscode'); if(status && status.value != 'COMMITED'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onResSubmit(Ext.getCmp('em_id').value); } }, 'erpAuditButton': { afterrender: function(btn){ var status = Ext.getCmp('em_statuscode'); if(status && status.value != 'COMMITED'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onAudit(Ext.getCmp('em_id').value); } }, 'erpResAuditButton': { afterrender: function(btn){ var status = Ext.getCmp('em_statuscode'); if(status && status.value != 'AUDITED'){ btn.hide(); } }, click: function(btn){ me.FormUtil.onResAudit(Ext.getCmp('em_id').value); } }, 'erpAddButton': { click: function(){ me.FormUtil.onAdd('addEmployee', '新增员工', 'jsps/hr/emplmana/employee/employee.jsp'); } }, 'erpSyncButton':{ beforerender:function(btn){ btn.sync=function() { var masters = btn.getCheckData(), form = Ext.getCmp('form'), w = this.win, me = btn, datas = btn.syncdatas, cal; if(!datas && form && form.keyField && Ext.getCmp(form.keyField) && Ext.getCmp(form.keyField).value > 0) { datas = Ext.getCmp(form.keyField).value; } if(cal == null) cal = caller + '!Post'; if (!Ext.isEmpty(masters)) { w.setLoading(true); Ext.Ajax.request({ url: basePath + 'hr/emplmana/vastPost.action', params: { caller: cal, datas: datas, to: masters }, callback: function(opt, s, r) { w.setLoading(false); var rs = new Ext.decode(r.responseText); if(rs.exceptionInfo){ showError(rs.exceptionInfo); } if(rs.success){ alert('同步成功!'); w.hide(); if(me.autoClearCache) { me.clearCache(); } me.fireEvent('aftersync', me, cal, datas, masters); } } }); } }; } }, '#em_id': { afterrender: function(field) { var value = field.getValue(); if(value && value > 0) { Ext.defer(function(){ me.getJobs(value); }, 200); } } }, '#em_code': { afterrender: function(field) { var value = field.getValue(); if(value && value != 0 && value !='') { Ext.defer(function(){ me.getJobs1(value); }, 200); } } }, 'gridpanel': { itemclick: this.onGridItemClick }, 'gridpanel1':{ itemclick: this.onGridItemClick } }); }, getForm: function(btn){ return btn.ownerCt.ownerCt; }, beforeUpdate: function(){ var me = this; var form = Ext.getCmp('form'); var s1 = me.checkFormDirty(form); var s2 = ''; var grids = Ext.ComponentQuery.query('gridpanel'); if(grids.length > 0 && !grids[0].ignore){//check所有grid是否已修改 Ext.each(grids, function(grid, index){ if(grid.GridUtil){ var msg = grid.GridUtil.checkGridDirty(grid); if(msg.length > 0){ s2 = s2 + '
' + msg; } } }); } if(s1 == '' && (s2 == '' || s2 == '
')){ showError('还未添加或修改数据.'); return; } if(! me.FormUtil.checkForm()){ return; } if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){ me.FormUtil.getSeqId(form); } var grid = Ext.getCmp('grid'); var grid1 = Ext.getCmp('grid1'); var param1 = me.GridUtil.getGridStore(grid); var param2 = me.GridUtil.getGridStore(grid1); param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]"; param2 = param2 == null ? [] : "[" + param2.toString().replace(/\\/g,"%") + "]"; if(form.getForm().isValid()){ Ext.each(form.items.items, function(item){ if(item.xtype == 'numberfield'){ if(item.value == null || item.value == ''){ item.setValue(0); } } }); var r = form.getValues(); me.FormUtil.update(r, param1, param2); }else{ me.FormUtil.checkForm(); } }, checkFormDirty: function(){ var form = Ext.getCmp('form'); var s = ''; form.getForm().getFields().each(function (item,index, length){ if(item.logic!='ignore'){ var value = item.value == null ? "" : item.value; if(item.xtype == 'htmleditor') { value = item.getValue(); } item.originalValue = item.originalValue == null ? "" : item.originalValue; if(Ext.typeOf(item.originalValue) != 'object'){ if(item.originalValue.toString() != value.toString()){//isDirty、wasDirty、dirty一直都是true,没办法判断,所以直接用item.originalValue,原理是一样的 var label = item.fieldLabel || item.ownerCt.fieldLabel || item.boxLabel || item.ownerCt.title;//针对fieldContainer、radio、fieldset等 if(label){ s = s + ' ' + label.replace(/ /g,''); } } } } }); return (s == '') ? s : ('表单字段('+s+')已修改'); }, beforeSave: function() { var me = this; var form = Ext.getCmp('form'); if(! me.FormUtil.checkForm()){ return; } if(Ext.getCmp(form.keyField).value == null || Ext.getCmp(form.keyField).value == ''){ me.FormUtil.getSeqId(form); } var grid = Ext.getCmp('grid'); var grid1 = Ext.getCmp('grid1'); var param1 = me.GridUtil.getGridStore(grid); var param2 = me.GridUtil.getGridStore(grid1); //在这里获取的数据为空 param1 = param1 == null ? [] : "[" + param1.toString().replace(/\\/g,"%") + "]"; param2 = param2 == null ? [1] : "[" + param2.toString().replace(/\\/g,"%") + "]"; if(form.getForm().isValid()){ Ext.each(form.items.items, function(item){ if(item.xtype == 'numberfield'){ if(item.value == null || item.value == ''){ item.setValue(0); } } }); var r = form.getValues(); me.FormUtil.save(r, param1, param2); }else{ me.FormUtil.checkForm(); } }, getJobs: function(empId) { var me = this; me.FormUtil.getFieldsValues("job left join empsjobs on job_id=jo_id left join hrorg on org_id=or_id", 'jo_orgname,jo_name,jo_description,jo_id,or_id,or_name', 'emp_id=' +empId, [], function(data){ var grid = me.getGrid(); var datas = Ext.JSON.decode(data), _datas = []; if(datas.length > 0) { var keys = Ext.Object.getKeys(datas[0]); Ext.Array.each(datas, function(data){ var temp = Ext.Object.getKeys(data); if(temp.length > keys.length){ keys = temp; } }); Ext.Array.each(datas, function(d){ var obj = {}; Ext.Array.each(keys, function(key){ obj[key.toLowerCase()] = d[key]; }); _datas.push(obj); }); } _datas.length > 0 && grid.store.loadData(_datas); grid.store.each(function(){ this.dirty = true; }); }); }, getJobs1: function(empCode) { var me = this; me.FormUtil.getFieldsValues("CS$EMPGROUP left join employee on eg_emcode=em_code", 'eg_emcode,eg_id,eg_groupcode,eg_name', 'em_code=' + "'"+empCode+"'", [], function(data){ /*var grid=me.getGrid();*/ var datas = Ext.JSON.decode(data), _datas = []; if(datas.length > 0) { var keys = Ext.Object.getKeys(datas[0]); Ext.Array.each(datas, function(data){ var temp = Ext.Object.getKeys(data); if(temp.length > keys.length){ keys = temp; } }); Ext.Array.each(datas, function(d){ var obj = {}; Ext.Array.each(keys, function(key){ obj[key.toLowerCase()] = d[key]; }); _datas.push(obj); }); } var grid = Ext.getCmp('grid1'); _datas.length > 0 && grid.store.loadData(_datas); grid.store.each(function(){ this.dirty = true; }); }); }, onGridItemClick: function(selModel, record) { this.GridUtil.onGridItemClick(selModel, record); } });