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);
}
});