/**
* 选择员工TreeGrid
*
* FormDetail表fd_dbfind配置ET
* DetailGrid表dg_dbbutton配置-4
*/
Ext.define('erp.view.core.trigger.EmpTrigger', {
extend : 'Ext.form.field.Trigger',
alias : 'widget.emptrigger',
triggerCls : 'x-form-search-trigger',
initComponent : function() {
this.addEvents({
aftertrigger : true,
beforetrigger : true
});
this.callParent(arguments);
},
listeners : {
focus : function(f) {
if (!f.readOnly) {
var trigger = this;
trigger.lastTriggerId = trigger.id;
if (!trigger.ownerCt && !trigger.owner) {
var grid = Ext.ComponentQuery.query('gridpanel');
Ext.Array.each(grid, function(g, index) {
Ext.Array.each(g.columns, function(column, index1) {
if (column.dataIndex == trigger.name) {
dbfind = column.dbfind;
trigger.owner = g;
}
});
});
}
}
}
},
onTriggerClick : function() {
var trigger = this;
if (!trigger.ownerCt) {
if (trigger.owner.selModel) {
trigger.record = trigger.owner.selModel.selected.items[0];
}
}
this.showWin();
},
showWin : function() {
this.fireEvent('beforetrigger', this);
var win = Ext.getCmp('tri-emp-win');
if (!win) {
var me = this, url = basePath + 'jsps/common/empdbfind.jsp?tid=' + this.id;
win = Ext.create('Ext.Window', {
id : 'tri-emp-win',
title : '员工资料',
height : "100%",
width : "80%",
maximizable : true,
buttonAlign : 'center',
layout : 'anchor',
modal : true,
closeAction: 'hide',
items: [{
tag : 'iframe',
frame : true,
anchor : '100% 100%',
layout : 'fit',
html : ''
}],
buttons : [{
text : $I18N.common.button.erpConfirmButton,
iconCls: 'x-button-icon-save',
cls: 'x-btn-gray',
handler: function(btn) {
me.onConfirm();
}
},{
text : $I18N.common.button.erpCloseButton,
iconCls: 'x-button-icon-close',
cls: 'x-btn-gray',
handler : function(btn){
btn.ownerCt.ownerCt.hide();
}
}]
});
}
win.show();
},
onConfirm: function() {
var me = this, contentwindow = Ext.getCmp('tri-emp-win').body.dom.getElementsByTagName('iframe')[0].contentWindow;
var tree = contentwindow.Ext.getCmp('emptreegrid');
var datas = tree.getChecked(), record = this.record, trigger = this, grid = this.owner;
if(this.ownerCt) {
me.fireEvent('aftertrigger', me, datas);
this.fireEvent('aftertrigger',this,datas);
} else {
var dbfinds = this.owner.dbfinds;
if(dbfinds != null){
var keys = Ext.Object.getKeys(datas[0].raw.data);
Ext.each(datas, function(d, i){
if(i > 0){
record = trigger.next(grid, record);
}
if(record && d && d.raw) {
Ext.each(dbfinds, function(dbfind, index){
if(Ext.isEmpty(dbfind.trigger) || dbfind.trigger == trigger.name) {
var ss = dbfind.dbGridField.split(';');
for(var i in ss) {
if(Ext.Array.contains(keys, ss[i])) {
record.set(dbfind.field, d.raw.data[ss[i]]);
}
}
}
});
}
});
}
}
Ext.getCmp('tri-emp-win').hide();
},
/**
* 递归grid的下一条
*/
next: function(grid, record){
record = record || grid.selModel.lastSelected;
if(record){
//递归查找下一条,并取到数据
var d = grid.store.getAt(record.index + 1);
if(d){
return d;
} else {
if(record.index + 1 < grid.store.data.items.length){
this.next(grid, d);
}
}
}
}
});