Browse Source

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

rainco 7 years ago
parent
commit
e0273faaf9

+ 10 - 1
frontend/saas-web/app/util/QueryUtil.js

@@ -104,7 +104,16 @@ Ext.define('saas.util.QueryUtil', {
 						});
 						condition += _a + ')';
 					}
-				}  else {
+				} else if(f.xtype == 'multicombo' ){
+				    if(f.value){
+                        if(condition == ''){
+                            condition += f.name + " in (" + f.value+")";
+                        } else {
+                            condition += ' AND ' +  f.name + " in (" + f.value+")";
+                        }
+                    }
+
+                } else {
                     if(!Ext.isEmpty(f.value)){
                         if(me.contains(f.value.toString(), 'BETWEEN', true) && me.contains(f.value.toString(), 'AND', true)){
                             if(condition == ''){

+ 100 - 0
frontend/saas-web/app/view/core/form/MultiCombo.js

@@ -0,0 +1,100 @@
+/**
+ * Created by zhouy on 2018/10/17.
+ */
+Ext.define('saas.view.core.form.MultiCombo', {
+    extend: 'Ext.form.field.Trigger',
+    alias: 'widget.multicombo',
+    editable : false,
+    displayField:'display',
+    valueField:'value',
+    matchFieldWidth: true,
+    cachedConfig: {
+        menuAlign: 'tl-bl?',
+        destroyMenu: true
+    },
+    initComponent: function() {
+        var me = this;
+        me.callParent(arguments);
+    },
+    onTriggerClick:function(f){
+        this.showMenu();
+    },
+    getMenu: function() {
+        var me = this;
+
+        if (!me.menu) {
+
+            me.menu = Ext.create('Ext.menu.Menu',{
+                hideOnParentHide: false,
+                items: me.getMenuItems()
+                //listners
+            });
+            me.fireEvent('menucreate', me, me.menu);
+        }
+        return me.menu;
+    },
+    getMenuItems:function(){
+        var me = this,
+            i = 0,
+            item,
+            items = me.datas;
+        itemsLn = me.datas.length,
+            menuItems = [];
+        for (; i < itemsLn; i++) {
+            item = items[i];
+            menuItem = new Ext.menu.CheckItem({
+                text: item[1],
+                checked: item.checked,
+                checkValue:item[0],
+                hideOnClick: false,
+                checkHandler: this.onCheckChange,
+                scope: this
+            });
+            menuItems.push(menuItem);
+        }
+        return menuItems.length ? menuItems : null;
+    },
+    onCheckChange:function(checkItem, checked){
+        var items=this.menu.items.items,
+            rawV,v;
+        Ext.Array.each(items,function(item){
+            if(item.checked){
+                rawV=rawV?rawV+','+item.text:item.text;
+                v=v?v+","+"'"+item.checkValue+"'":"'"+item.checkValue+"'";
+            }
+        });
+        this.setRawValue(rawV);
+        this.value=v;
+    },
+
+    showMenu: function (e, menu) {
+        var isPointerEvent = !e || e.pointerType;
+
+        menu = menu || this.getMenu();
+        /**
+         * menu上边框样式待处理
+         * */
+        if (menu) {
+            if (menu.isVisible()) {
+                // Click/tap toggles the menu visibility.
+                if (isPointerEvent) {
+                    menu.hide();
+                } else {
+                    menu.focus();
+                }
+            } else {
+                menu.autoFocus = !isPointerEvent;
+                if(this.matchFieldWidth){
+                    menu.setWidth(this.bodyEl.getWidth());
+                }
+                if (menu.isMenu) {
+                    menu.showBy(this.inputEl, this.getMenuAlign(),[-1, 0]);
+                } else if (menu.isViewportMenu) {
+                    menu.setDisplayed(!menu.getDisplayed());
+                } else {
+                    menu.show();
+                }
+            }
+        }
+    }
+});

+ 4 - 11
frontend/saas-web/app/view/purchase/purchase/QueryPanel.js

@@ -108,7 +108,7 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
         queryMode: 'local',
             displayField: 'pr_status',
             valueField: 'pr_statuscode',
-        store: Ext.create('Ext.data.ArrayStore', {
+            store: Ext.create('Ext.data.ArrayStore', {
             fields: ['pr_statuscode', 'pr_status'],
             data: [
                 ["$ALL", "全部"],
@@ -117,24 +117,17 @@ Ext.define('saas.view.purchase.purchase.QueryPanel', {
             ]
         })
     }, {
-        xtype: 'combobox',
+        xtype: 'multicombo',
         name: 'pu_acceptstatuscode',
-        bind: '{pu_acceptstatuscode}',
+       // bind: '{pu_acceptstatuscode}',
         fieldLabel: '入库状态',
         allowBlank: true,
         columnWidth: 0.25,
-        queryMode: 'local',
-        displayField: 'pu_acceptstatus',
-        valueField: 'pu_acceptstatuscode',
-        store: Ext.create('Ext.data.ArrayStore', {
-            fields: ['pu_acceptstatuscode', 'pu_acceptstatus'],
-            data: [
-                ["$ALL", "全部"],
+        datas: [
                 ["TURNOUT", "已入库"],
                 ["NOOUT", "未入库"],
                 ["PARTOUT", "部分入库"]
             ]
-        })
     }],
     moreQueryFormItems: [{
         xtype: 'textfield',