瀏覽代碼

放大镜联想

hy 7 年之前
父節點
當前提交
13d150bd63

+ 0 - 1
frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js

@@ -24,7 +24,6 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
                     if(field){
                         var val = record.get(item.from);
                         if(field.xtype=='dbfindtrigger'){
-                            field.setValue(val);
                             field.setRawValue(val);
                             field.lastTriggerValue=val;
                         }else{

+ 109 - 1
frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js

@@ -6,6 +6,10 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
     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;
         this.displayField='display';	   
@@ -22,6 +26,86 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
 		}
         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=Ext.create('Ext.data.Store', {
+                            fields: field,
+                            data : []
+                        });
+                    }
+                }
+                //加载数据
+                var data;
+                var url = 'resources/json/purchase/vendorDataDbfind.json';
+                Ext.Ajax.request({
+                    url: url,
+                    params: '',
+                    async:false,
+                    success: function(response, opts) {
+                        data = Ext.decode(response.responseText);
+                    },
+                    failure: function(response, opts) {
+                        console.log('server-side failure with status code ' + response.status);
+                        return reject(response);
+                    }
+                });                
+                if(data!=null && data.length>2){
+                    me.store.loadData(data,false);
+                    me.expand();
+                }else{
+                    me.collapse( );
+                }
+            }
+            return true;
+    	}else{
+    		return false;
+    	}
+    },
     onTriggerClick:function(f){
         //判断dbfindtrigger归属
         f.judge(f);
@@ -50,7 +134,31 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
 
     judge:function(f){
         if(f.ownerCt.xtype.indexOf('FormPanel')>-1){
-            f.belong = 'form'
+            f.belong = 'form';
+            return 'form'
+        }
+    },
+
+    listeners: {
+		select:function(combo,record,eOpts){
+            var me = combo;
+            var dbfinds = me.dbfinds;
+            if(dbfinds&&dbfinds.length>0){
+                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);
+                        }    
+                    }
+                }
+            }
         }
     }
 

+ 6 - 1
frontend/saas-web/app/view/purchase/panel/FormPanelController.js

@@ -3,7 +3,7 @@ Ext.define('saas.view.purchase.panel.FormPanelController', {
     alias: 'controller.purchase-panel-FormPanelController',
 
     control: {
-        //放大镜赋值关系
+        //放大镜赋值关系 以及 tpl模板
         'dbfindtrigger[name=pu_vendorcode]':{
             beforerender:function(f){
                 Ext.apply(f,{
@@ -11,6 +11,11 @@ Ext.define('saas.view.purchase.panel.FormPanelController', {
                         from:'pu_vendorcode',to:'pu_vendorcode'
                     },{
                         from:'pu_vendorname',to:'pu_vendorname'
+                    }],
+                    dbtpls:[{
+                        field:'pu_vendorcode',width:100
+                    },{
+                        field:'pu_vendorname',width:120
                     }]
                 }) ;   
 

+ 6 - 1
frontend/saas-web/app/view/test/order/FormController.js

@@ -11,7 +11,7 @@ Ext.define('saas.view.test.order.FormController', {
 
                 }
             },
-            //放大镜赋值关系
+            //放大镜赋值关系 以及 tpl模板
             'dbfindtrigger[name=pu_vendorcode]':{
                 beforerender:function(f){
                     Ext.apply(f,{
@@ -19,6 +19,11 @@ Ext.define('saas.view.test.order.FormController', {
                             from:'pu_vendorcode',to:'pu_vendorcode'
                         },{
                             from:'pu_vendorname',to:'pu_vendorname'
+                        }],
+                        dbtpls:[{
+                            field:'pu_vendorcode',width:100
+                        },{
+                            field:'pu_vendorname',width:100
                         }]
                     }) ;