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'), 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','core.button.Freeze', 'core.button.CancelFreeze' ], refs : [ { ref : 'grid', selector : 'gridpanel' }], init:function(){ var me = this; this.control({ 'erpSyncButton': { afterrender: function(btn){ btn.autoClearCache = true; } }, 'erpSaveButton': { click: function(btn){ this.FormUtil.beforeSave(this); } }, 'erpCloseButton': { click: function(btn){ this.FormUtil.beforeClose(this); } }, 'erpUpdateButton': { click: function(btn){ this.FormUtil.onUpdate(this, true, { dirtyOnly: true }); } }, '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); if(s) { var rs = Ext.decode(r.responseText); if(rs.data) { showMessage('提示', rs.data); } else { 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); } } }, 'gridpanel': { itemclick: this.onGridItemClick }, 'erpCancelFreezeButton':{ afterrender:function(btn){ var status=Ext.getCmp('em_statuscode'); if(status && status.value !='FREEZE'){ btn.hide(); } }, click:function(btn){ Ext.Ajax.request({ url : basePath + "hr/employee/resFreezeEmployee.action", params:{ id:Ext.getCmp('em_id').value }, method : 'post', callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ showError(res.exceptionInfo); return; } if(res.success){ showMessage("提示","取消冻结成功!",1000); window.location.reload(); } } }); } }, 'erpFreezeButton':{ click:function(btn){ var holidaydate=Ext.getCmp('em_holidaydate'),params=new Object(); params.id=Ext.getCmp('em_id').value; if(holidaydate.value) params.date=Ext.Date.format(holidaydate.value,'Y-m-d'); Ext.Ajax.request({ url : basePath + "hr/employee/freezeEmployee.action", params:params, method : 'post', callback : function(options,success,response){ var res = new Ext.decode(response.responseText); if(res.exceptionInfo != null){ showError(res.exceptionInfo); return; } if(res.success){ showMessage("提示","冻结成功!",1000); window.location.reload(); } } }); }, afterrender:function(btn){ var f=Ext.getCmp('em_holidaydate'); if(f) f.setReadOnly(false); var status=Ext.getCmp('em_statuscode'); if(status && status.value =='FREEZE'){ btn.hide(); } } } }); }, getForm: function(btn){ return btn.ownerCt.ownerCt; }, getJobs: function(empId) { var me = this; me.FormUtil.getFieldsValues("job left join empsjobs on job_id=jo_id", 'jo_orgname,jo_name,jo_description,jo_id', '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(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; }); }); }, onGridItemClick: function(selModel, record) { this.GridUtil.onGridItemClick(selModel, record); } });