|
|
@@ -0,0 +1,232 @@
|
|
|
+Ext.define('saas.view.core.dbfind.DbfindTrigger2', {
|
|
|
+ extend: 'Ext.form.ComboBox',
|
|
|
+ xtype: 'dbfindtrigger2',
|
|
|
+ queryMode: 'local',
|
|
|
+ displayField: 'dispaly',
|
|
|
+ valueField: 'value',
|
|
|
+ triggerCls: 'x-form-search-trigger',
|
|
|
+ GridUtil: Ext.create('saas.util.GridUtil'),
|
|
|
+ BaseUtil: Ext.create('saas.util.BaseUtil'),
|
|
|
+ minChars:1, // 设置用户输入字符多少时触发查询
|
|
|
+ tpl: '',
|
|
|
+ enableKeyEvents:true,
|
|
|
+ initComponent:function() {
|
|
|
+ var me = this;
|
|
|
+ me.store=Ext.create('Ext.data.Store', {
|
|
|
+ fields: ['display','value'],
|
|
|
+ data : [{
|
|
|
+ 'display':me.value,
|
|
|
+ 'value':me.value
|
|
|
+ }]
|
|
|
+ });
|
|
|
+ this.callParent();
|
|
|
+ },
|
|
|
+ //输入值之后进行模糊查询
|
|
|
+ doQuery: function(queryString, forceAll, rawQuery) {
|
|
|
+ queryString = queryString || '';
|
|
|
+ var me = this;
|
|
|
+ if(me.lastQueryValue!=queryString){
|
|
|
+ var judge=me.judge(me);
|
|
|
+ var field=[];
|
|
|
+ var sfield='';
|
|
|
+ var dbfinds=me.dbfinds;
|
|
|
+ var dbtpls=me.dbtpls;
|
|
|
+ var name=me.name;
|
|
|
+ me.lastQueryValue=queryString;
|
|
|
+ if(queryString.trim()==''){
|
|
|
+ me.collapse( );
|
|
|
+ }else{
|
|
|
+ if(!dbfinds||!dbtpls){
|
|
|
+ me.collapse( );
|
|
|
+ }else{
|
|
|
+ //加载tpl模板
|
|
|
+ if(dbtpls.length>0){
|
|
|
+ var span="";
|
|
|
+ var width=0;
|
|
|
+ for(var i=0;i<dbtpls.length;i++){
|
|
|
+ if(i==0){
|
|
|
+ span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;">{'+dbtpls[i].field+'}</span>';//display:block;
|
|
|
+ }else{
|
|
|
+ span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;margin-left:10px;">{'+dbtpls[i].field+'}</span>';
|
|
|
+ }
|
|
|
+ if(dbtpls[i].dbField=="true"){
|
|
|
+ me.searchFieldArray=dbtpls[i].field;
|
|
|
+ }
|
|
|
+ width=width+dbtpls[i].width+20;
|
|
|
+ field.push(dbtpls[i].field);
|
|
|
+ sfield=sfield+dbtpls[i].field+',';
|
|
|
+ }
|
|
|
+ me.defaultListConfig.minWidth=width+10;
|
|
|
+ me.defaultListConfig.maxHeight=210;
|
|
|
+ me.defaultListConfig.autoScroll=true;
|
|
|
+ me.searchField=sfield.substring(0,sfield.length-1);
|
|
|
+ me.tpl=Ext.create('Ext.XTemplate',
|
|
|
+ '<ul style="padding-left: 0px;"><tpl for=".">',
|
|
|
+ '<li role="option" class="x-boundlist-item" style="list-style:none;">' ,
|
|
|
+ '<div style="height:30px;">',
|
|
|
+ ''+span+'',
|
|
|
+ '</li>',
|
|
|
+ '</tpl></ul>'
|
|
|
+ );
|
|
|
+ me.store.setFields(field);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //加载数据
|
|
|
+ var data;
|
|
|
+ Ext.Ajax.request({
|
|
|
+ url: me.dataUrl,
|
|
|
+ params: '',
|
|
|
+ success: function(response, opts) {
|
|
|
+ data = Ext.decode(response.responseText);
|
|
|
+ data = data.data;
|
|
|
+ if(data!=null && data.length>0 && me.store && field.length>0){
|
|
|
+ me.store.loadData(data,false);
|
|
|
+ me.expand();
|
|
|
+ }else{
|
|
|
+ me.collapse( );
|
|
|
+ }
|
|
|
+ },
|
|
|
+ failure: function(response, opts) {
|
|
|
+ console.log('server-side failure with status code ' + response.status);
|
|
|
+ return reject(response);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }else{
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onTriggerClick:function(f){
|
|
|
+ //判断dbfindtrigger归属
|
|
|
+ var belong = f.judge(f);
|
|
|
+ var win = Ext.create('Ext.window.Window', {
|
|
|
+ trigger:f,
|
|
|
+ belong:f.ownerCt,
|
|
|
+ modal:true,
|
|
|
+ height: '80%',
|
|
|
+ width: '80%',
|
|
|
+ title: '查找',
|
|
|
+ scrollable: true,
|
|
|
+ bodyPadding: 10,
|
|
|
+ constrain: true,
|
|
|
+ closable: true,
|
|
|
+ layout:'fit',
|
|
|
+ renderTo:Ext.getCmp('main-tab-panel').getActiveTab().getEl(),
|
|
|
+ items:[{
|
|
|
+ xtype:'dbfindgridpanel',
|
|
|
+ columns: f.dbColumns,
|
|
|
+ dataUrl: f.dataUrl,
|
|
|
+ dbfinds: f.dbfinds
|
|
|
+ }]
|
|
|
+ });
|
|
|
+ win.show();
|
|
|
+ },
|
|
|
+
|
|
|
+ judge:function(f){
|
|
|
+ if(f.ownerCt.xtype.trim().toUpperCase().indexOf('FORMPANEL')>-1){
|
|
|
+ f.belong = 'form';
|
|
|
+ return 'form'
|
|
|
+ }
|
|
|
+ else if(f.column){
|
|
|
+ f.belong = 'grid';
|
|
|
+ return 'grid'
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ listeners: {
|
|
|
+ focus: function(f) {
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ select:function(combo,record,eOpts){
|
|
|
+ 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];
|
|
|
+ debugger
|
|
|
+ var field = me.ownerCt.down('[name='+item.to+']');
|
|
|
+ if(field){
|
|
|
+ var val = record.get(item.from);
|
|
|
+ if(field.xtype=='dbfindtrigger'){
|
|
|
+ field.setRawValue(val);
|
|
|
+ field.value = val;
|
|
|
+ field.lastTriggerValue=val;
|
|
|
+ }else{
|
|
|
+ field.setValue(val);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }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.value = val;
|
|
|
+ field.lastTriggerValue=val;
|
|
|
+ }else{
|
|
|
+ field.setValue(val);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ getValue: function(f) {
|
|
|
+ var me = this,val = me.rawToValue(me.processRawValue(me.getRawValue()));
|
|
|
+ me.value = val;
|
|
|
+ return val;
|
|
|
+ },
|
|
|
+
|
|
|
+ autoSetValue: function(data, dbfinds) {
|
|
|
+ var trigger = this;
|
|
|
+ var triggerV = null;
|
|
|
+ if (!trigger.ownerCt || trigger.column) { //如果是grid的dbfind
|
|
|
+ var grid = trigger.owner;
|
|
|
+ var record = grid.lastSelectedRecord || trigger.record || grid.getSelectionModel().selected.items[0] || grid.selModel.lastSelected; //detailgrid里面selected
|
|
|
+ Ext.Array.each(Ext.Object.getKeys(data),
|
|
|
+ function(k) {
|
|
|
+ Ext.Array.each(dbfinds,
|
|
|
+ function(ds) {
|
|
|
+ if (ds.trigger == trigger.name || Ext.isEmpty(ds.trigger)) {
|
|
|
+ if (Ext.Array.contains(ds.dbGridField.split(';'), k)) { //k == ds.dbGridField//支持多dbgrid的字段对应grid同一字段
|
|
|
+ if (ds.field == trigger.name) {
|
|
|
+ triggerV = data[k]; //trigger所在位置赋值
|
|
|
+ }
|
|
|
+ record.set(ds.field, data[k]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ var ff;
|
|
|
+ Ext.Array.each(Ext.Object.getKeys(data),
|
|
|
+ function(k) {
|
|
|
+ Ext.Array.each(dbfinds,
|
|
|
+ function(ds) {
|
|
|
+ if (k == ds.dbGridField) {
|
|
|
+ if (trigger.name == ds.field||trigger.name.substring(0,trigger.name.indexOf('-new'))==ds.field) {
|
|
|
+ triggerV = data[k];
|
|
|
+ } else {
|
|
|
+ ff = Ext.getCmp(ds.field);
|
|
|
+ if (ff && ff.setValue) ff.setValue(data[k]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ trigger.setValue(triggerV);
|
|
|
+ data.data = data;
|
|
|
+ trigger.lastTriggerValue='';
|
|
|
+ trigger.fireEvent('aftertrigger', trigger, data);
|
|
|
+ trigger.lastTriggerId = null;
|
|
|
+ trigger.lastQueryValue='';
|
|
|
+ }
|
|
|
+
|
|
|
+});
|