',
'',
'' + cols + '',
'',
''
)
};
return cfg;
},
//输入值之后进行模糊查询
doQuery: function (queryString, forceAll, rawQuery) {
if (!this.fireEvent('beforequery', this)) {
return;
};
queryString = queryString || '';
var me = this;
if (me.lastQueryValue != queryString) {
me.judge(me);
me.lastQueryValue = queryString;
if (queryString.trim() == '') {
me.collapse();
} else {
//加载数据
var data, dbfinds = me.dbfinds, dbCondition = [];
if (dbfinds) {
var dbtplcondition = "";
for (let index = 0; index < dbfinds.length; index++) {
var item = dbfinds[index].from;
if (!dbfinds[index].ignore) {
dbtplcondition += "upper(" + item + ") like '%" + queryString.toUpperCase() + "%' or ";
}
}
dbtplcondition = "(" + dbtplcondition.substring(0, dbtplcondition.length - 4) + ")";
if (dbtplcondition.length > 0) {
dbCondition = [{
type: 'condition',
value: dbtplcondition
}];
}
}
//添加默认条件
if (me.defaultCondition) {
dbCondition.push({
type: 'condition',
value: me.defaultCondition
});
}
Ext.Ajax.request({
url: me.dataUrl,
params: {
number: 1,
size: 10,
condition: JSON.stringify(dbCondition),
page: 1,
start: 0,
limit: 10
},
method: 'GET',
success: function (response, opts) {
data = Ext.decode(response.responseText);
data = data.data ? data.data.list : [];
if (data != null && data.length > 0 && me.store) {
me.store.loadData(data, false);
me.expand();
} else {
me.store.removeAll();
me.collapse();
}
},
failure: function (response, opts) {}
});
}
return true;
} else {
return false;
}
},
onTriggerClick: function (f) {
var me = this;
if (!this.fireEvent('beforetriggerclick', this)) {
return;
};
f.blur(f,null,null,true);
//判断dbfindtrigger归属
f.judge(f); //form
var panel = f.up('content-panel') || Ext.getCmp('content-panel'),
panelEl;
if (!f.column && f.ownerCt.ownerCt.id.indexOf('window-') > -1 && f.ownerCt.ownerCt.id.indexOf('document-') <0) {
panelEl = f.ownerCt.ownerCt.getEl()
} else {
panelEl = panel.getEl()
}
var box = panelEl.getBox();
var height = box.height;
var width = box.width;
var dbItem = {
xtype: 'dbfindtriggerpanel',
columns: f.dbColumns,
dataUrl: f.dataUrl,
searchUrl: f.searchUrl,
dbfinds: f.dbfinds,
belong: f.belong,
dbSearchFields: f.dbSearchFields ? f.dbSearchFields : [],
dbfindtrigger: f,
};
if (me.onAddClick) {
dbItem.onAddClick = me.onAddClick;
}
var win = panel.add(Ext.create('Ext.window.Window', {
cls: 'x-window-dbfind',
trigger: f,
belong: f.ownerCt,
modal: true,
height: height * 0.9,
width: width * 0.9,
title: '查找' + f.addTitle,
scrollable: true,
bodyPadding: 10,
constrain: true,
closable: true,
layout: 'fit',
renderTo: panel.getEl(),
items: [dbItem]
}));
win.show();
},
judge: function (f) {
if (f.ownerCt.xtype.trim().toUpperCase().indexOf('QUERYFORMPANEL') > -1 ||
(f.ownerCt.ownerCt && (f.ownerCt.ownerCt.xtype.trim().toUpperCase().indexOf('BASEPANEL') > -1 ||
f.ownerCt.ownerCt.xtype.trim().toUpperCase().indexOf('EDITDATALIST') > -1))) {
f.belong = 'form';
return f.ownerCt.ownerCt
} else if (f.ownerCt.xtype.trim().toUpperCase().indexOf('FORM') > -1) {
f.belong = 'form';
return f.ownerCt
} else if (f.column) {
f.belong = 'grid';
return f.column.ownerCt.ownerCt.ownerCt
}
},
listeners: {
blur: function (f, e, op, isTrigger) {
return true;//先不使用
var me = f;
var dbfinds = me.dbfinds,
data;
if (f.value && f.value != '') {
//添加默认条件
var searchField = null;
var dbCondition = [];
if (me.defaultCondition) {
dbCondition.push({
type: 'condition',
value: me.defaultCondition
});
}
for (let index = 0; index < dbfinds.length; index++) {
var item = dbfinds[index].to;
if (item == me.name) {
searchField = dbfinds[index].from;
}
}
dbCondition.push({
type: 'condition',
value: searchField + "='" + me.value + "'"
});
Ext.Ajax.request({
url: me.dataUrl,
async: false,
params: {
number: 1,
size: 1,
condition: JSON.stringify(dbCondition),
page: 1,
start: 0,
limit: 10
},
method: 'GET',
success: function (response, opts) {
data = Ext.decode(response.responseText);
data = data.data ? data.data.list : [];
},
failure: function (response, opts) {}
});
}
if (!f.value || f.value == '' || data.length > 1 || data.length == 0) {
me.dbValues = {};
if (dbfinds && dbfinds.length > 0) {
if (me.belong == 'grid') {
for (let index = 0; index < dbfinds.length; index++) {
var item = dbfinds[index];
var rec = me.column.ownerCt.ownerCt.selModel.getLastSelected();
var nowRec = me.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
if (nowRec.get(item.to) && nowRec.get(item.to) != "") {
nowRec.set(item.to, null);
delete nowRec.modified[item.to];
}
if (me.name == item.to) {
me.column.getEditor().setValue('');
}
}
} else if (me.belong == 'form') {
for (let index = 0; index < dbfinds.length; index++) {
var item = dbfinds[index];
var field = me.ownerCt.down('[name=' + item.to + ']');
if (field) {
let xtypes = field.getXTypes().split('/');
if (xtypes.indexOf('dbfindtrigger') != -1) {
field.setValue(null);
field.lastTriggerValue = null;
} else {
field.setValue(null);
field.publishState('value', null);
}
}
}
}else {
me.setValue(null);
}
}
if(!isTrigger){
let rec = {
data:{},
get:function(name){
return this.data[name]
}
}
f.aftertrigger(f,rec);
}
} else if (data.length == 1) {
me.dbValues = data[0];
var dbfinds = me.dbfinds;
if (dbfinds && dbfinds.length > 0) {
if (me.belong == 'grid') {
for (let index = 0; index < dbfinds.length; index++) {
var item = dbfinds[index];
var rec = me.column.ownerCt.ownerCt.selModel.getLastSelected();
var nowRec = me.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
nowRec.set(item.to, data[0][item.from]);
if (me.name == item.to) {
me.column.getEditor().setValue(data[0][item.from]);
}
}
} else if (me.belong == 'form') {
for (let index = 0; index < dbfinds.length; index++) {
var item = dbfinds[index];
var field = me.ownerCt.down('[name=' + item.to + ']');
if (field) {
var val = data[0][item.from];
if (field.xtype == 'dbfindtrigger') {
field.setRawValue(val);
field.setValue(val);
field.value = val;
field.lastTriggerValue = val;
} else {
field.setValue(val);
}
}
}
}
}
if(!isTrigger){
let rec = {
data:data[0],
get:function(name){
return this.data[name]
}
}
f.aftertrigger(f,rec);
}
}
},
select: function (combo, record, eOpts) {
var me = combo;
var dbfinds = me.dbfinds;
me.dbValues = record.data;
if (dbfinds && dbfinds.length > 0) {
if (me.belong == 'grid') {
for (let index = 0; index < dbfinds.length; index++) {
var item = dbfinds[index];
var rec = me.column.ownerCt.ownerCt.selModel.getLastSelected();
var nowRec = me.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
nowRec.set(item.to, record.get(item.from));
if (me.name == item.to) {
me.column.getEditor().setValue(record.get(item.from));
}
}
} else if (me.belong == 'form') {
for (let index = 0; index < dbfinds.length; index++) {
var item = dbfinds[index];
var field = me.ownerCt.down('[name=' + item.to + ']');
if (field) {
var val = record.get(item.from);
if (field.xtype == 'dbfindtrigger') {
field.setRawValue(val);
field.setValue(val);
field.value = val;
field.lastTriggerValue = val;
} else {
field.setValue(val);
}
}
}
}else {
var dbfind = Ext.Array.findBy(dbfinds, function(d) {
return d.to = me.name;
});
if(dbfind) {
me.setValue(record.get(dbfind.from));
}
}
me.aftertrigger(me, record);
}
}
},
aftertrigger: function (f) {
return true;
},
setValue: function (v) {
this.callParent(arguments);
this.publishState('value', v);
},
getValue: function (f) {
var me = this,
val = me.rawToValue(me.processRawValue(me.getRawValue()));
me.value = val;
return val;
},
autoSetValue: function (combo, record) {
var me = combo;
var dbfinds = me.dbfinds;
if (dbfinds && dbfinds.length > 0) {
if (me.belong == 'grid') {
for (let index = 0; index < dbfinds.length; index++) {
var item = dbfinds[index];
var rec = me.column.ownerCt.ownerCt.selModel.getLastSelected();
var nowRec = me.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
nowRec.set(item.to, record.get(item.from));
if (me.name == item.to) {
me.column.getEditor().setValue(record.get(item.from));
}
}
} else if (me.belong == 'form') {
for (let index = 0; index < dbfinds.length; index++) {
var item = dbfinds[index];
var field = me.ownerCt.down('[name=' + item.to + ']');
if (field) {
var val = record.get(item.from);
if (field.xtype == 'dbfindtrigger') {
field.setRawValue(val);
field.setValue(val);
field.value = val;
field.lastTriggerValue = val;
} else {
field.setValue(val);
}
}
}
}
me.aftertrigger(me, record);
}
}
});