Browse Source

报表分组逻辑统一调整

zhuth 7 years ago
parent
commit
d2187ccefe

+ 82 - 94
frontend/saas-web/app/view/core/query/QueryPanel.js

@@ -146,120 +146,99 @@ Ext.define('saas.view.core.query.QueryPanel', {
     /**
      * 获得过滤条件
      */
-    getConditions: function(moreQuery) {
+    getConditions: function() {
         var me = this,
-        formItems = me.queryFormItems,
-        moreQueryFormItems = me.moreQueryFormItems,
+        formItems = me.items.items[0].items.items,
         viewModel = me.getViewModel(),
         viewModelData = viewModel.getData(),
         bindItems = viewModelData['form'],
-        moreItems = viewModelData['moreForm'],
         condition,
         conditions = [];
 
-        if(moreQuery) {
-            for(k in moreItems) {
-                var item = Ext.Array.findBy(moreQueryFormItems, function(i) {
-                    return i.name == k;
-                });
-                var field = item.name,
-                func = item.getCondition,
-                value = moreItems[k],
-                condition;
-    
-                if(value&&value!=''){
-                    if(typeof func == 'function') {
-                        condition = {
-                            type: 'condition',
-                            value: func(value)
-                        }
-                    }else {
-                        var xtype = item.xtype || 'textfield',
-                        type = item.fieldType || me.getDefaultFieldType(xtype),
-                        operation = item.operation || me.getDefaultFieldOperation(xtype),
-                        conditionValue = me.getConditionValue(xtype, value);
-            
-                        if(!conditionValue) {
-                            continue;
-                        }
-                        condition = {
-                            type: type,
-                            field: field,
-                            operation: operation,
-                            value: conditionValue
-                        }
+        for(k in bindItems) {
+            var item = Ext.Array.findBy(formItems, function(i) {
+                return i.name == k;
+            });
+            var field = item.name,
+            func = item.getCondition,
+            value = bindItems[k],
+            condition;
+
+            if(value&&value!=''){
+                if(typeof func == 'function') {
+                    condition = {
+                        type: 'condition',
+                        value: func(value)
                     }
-                    conditions.push(condition);
-                }
-            }
-        }else {
-            for(k in bindItems) {
-                var item = Ext.Array.findBy(formItems, function(i) {
-                    return i.name == k;
-                });
-                var field = item.name,
-                func = item.getCondition,
-                value = bindItems[k],
-                condition;
-    
-                if(value&&value!=''){
-                    if(typeof func == 'function') {
-                        condition = {
-                            type: 'condition',
-                            value: func(value)
-                        }
-                    }else {
-                        var xtype = item.xtype || 'textfield',
-                        type = item.fieldType || me.getDefaultFieldType(xtype),
-                        operation = item.operation || me.getDefaultFieldOperation(xtype),
-                        conditionValue = me.getConditionValue(xtype, value);
-            
-                        if(!conditionValue) {
-                            continue;
-                        }
-                        condition = {
-                            type: type,
-                            field: field,
-                            operation: operation,
-                            value: conditionValue
-                        }
+                }else {
+                    var type = item.fieldType || me.getDefaultFieldType(item),
+                    operation = item.operation || me.getDefaultFieldOperation(item),
+                    conditionValue = me.getConditionValue(item, value);
+        
+                    if(!conditionValue) {
+                        continue;
+                    }
+                    condition = {
+                        type: type,
+                        field: field,
+                        operation: operation,
+                        value: conditionValue
                     }
-                    conditions.push(condition);
                 }
+                conditions.push(condition);
             }
         }
 
         return conditions;
     },
 
-    getDefaultFieldType: function(xtype) {
-        var type;
+    /**
+     * 只要arr1和arr2中存在相同项即返回真
+     */
+    isContainsAny: function (arr1, arr2) {
+        for (var i = 0; i < arr2.length; i++) {
+            var a2 = arr2[i];
+            if (!!arr1.find(function (a1) {
+                    return a1 == a2
+                })) {
+                return true;
+            }
+        }
+        return false;
+    },
 
-        if(Ext.Array.contains(['numberfield'], xtype)) {
+    getDefaultFieldType: function (field) {
+        var me = this,
+            xtypes = field.getXTypes().split('/'),
+            type;
+
+        if (me.isContainsAny(xtypes, ['numberfield'])) {
             type = 'number';
-        }else if(Ext.Array.contains(['datefield', 'condatefield'], xtype)) {
+        } else if (me.isContainsAny(xtypes, ['datefield', 'condatefield', 'conmonthfield'])) {
             type = 'date';
-        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo', 'radiofield', 'radio'], xtype)) {
+        } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
+            type = 'enum';
+        } else if (me.isContainsAny(xtypes, ['combobox', 'multicombo', 'combo', 'radiofield', 'radio'])) {
             type = 'enum';
-        }else {
+        } else {
             type = 'string';
         }
 
         return type;
     },
 
-    getDefaultFieldOperation: function(xtype) {
-        var operation;
+    getDefaultFieldOperation: function (field) {
+        var me = this,
+            xtypes = field.getXTypes().split('/'),
+            operation;
 
-        if(Ext.Array.contains(['numberfield'], xtype)) {
-            operation = '=';
-        }else if(Ext.Array.contains(['datefield'], xtype)) {
+        if (me.isContainsAny(xtypes, ['numberfield', 'datefield', 'dbfindtrigger'])) {
             operation = '=';
-        }else if(Ext.Array.contains(['condatefield'], xtype)) {
+        } else if (me.isContainsAny(xtypes, ['condatefield', 'conmonthfield'])) {
             operation = 'between';
-        }else if(Ext.Array.contains(['combobox', 'multicombo', 'combo'], xtype)) {
+        } else if (me.isContainsAny(xtypes, ['multidbfindtrigger', 'combobox', 'multicombo', 'combo'])) {
             operation = 'in';
-        }else {
+        } else {
             operation = 'like';
         }
 
@@ -269,22 +248,31 @@ Ext.define('saas.view.core.query.QueryPanel', {
     /**
      * 处理部分字段值
      */
-    getConditionValue: function(xtype, value) {
-        var conditionValue;
-        if(xtype == 'datefield') {
+    getConditionValue: function (field, value) {
+        var me = this,
+            xtypes = field.getXTypes().split('/'),
+            conditionValue;
+        if (me.isContainsAny(xtypes, ['datefield'])) {
             conditionValue = Ext.Date.format(new Date(from), 'Y-m-d H:i:s');
-        }else if(xtype == 'condatefield') {
+        } else if (me.isContainsAny(xtypes, ['conmonthfield'])) {
             var from = value.from,
-            to = value.to;
+                to = value.to;
+
+            conditionValue = from + ',' + to;
+        } else if (me.isContainsAny(xtypes, ['condatefield'])) {
+            var from = value.from,
+                to = value.to;
 
             conditionValue = Ext.Date.format(new Date(from), 'Y-m-d 00:00:00') + ',' + Ext.Date.format(new Date(to), 'Y-m-d 23:59:59');
-        }else if(xtype == 'combobox' || xtype == 'combo') {
+        } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
+            conditionValue = value;
+        } else if (me.isContainsAny(xtypes, ['combobox', 'combo'])) {
             conditionValue = '\'' + value + '\'';
-        }else if(xtype == 'multicombo') {
-            conditionValue = value.map(function(v) {
+        } else if (me.isContainsAny(xtypes, ['multicombo'])) {
+            conditionValue = value.map ? value.map(function (v) {
                 return '\'' + v.value + '\'';
-            }).join(',');
-        }else {
+            }).join(',') : '';
+        } else {
             conditionValue = value;
         }
 

+ 3 - 2
frontend/saas-web/app/view/core/report/ReportPanel.js

@@ -164,7 +164,8 @@ Ext.define('saas.view.core.report.ReportPanel', {
             ftype: 'groupingsummary',
             hideGroupedHeader: false,
             enableGroupingMenu: false,
-            collapsible: false
+            collapsible: false,
+            groupHeaderTpl: me.groupHeaderTpl || '{columnName}: {name}'
         }];
 
         if (me.showMySummary) {
@@ -533,7 +534,7 @@ Ext.define('saas.view.core.report.ReportPanel', {
         } else if (me.isContainsAny(xtypes, ['datefield', 'condatefield', 'conmonthfield'])) {
             type = 'date';
         } else if (me.isContainsAny(xtypes, ['dbfindtrigger'])) {
-            type = 'string';
+            type = 'enum';
         } else if (me.isContainsAny(xtypes, ['combobox', 'multicombo', 'combo', 'radiofield', 'radio'])) {
             type = 'enum';
         } else {

+ 2 - 1
frontend/saas-web/app/view/money/report/AccountBalance.js

@@ -7,7 +7,8 @@ Ext.define('saas.view.money.report.AccountBalance', {
 
     viewName: 'money-report-accountbalance',
 
-    groupField: 'bankname',
+    groupField: 'bankcode',
+    groupHeaderTpl: '账户名称: {[values.rows[0].data.bankname]}',
     listUrl: '/api/money/report/accountBalance',
     defaultCondition: null,
     reportTitle: '账户收支明细表',

+ 2 - 1
frontend/saas-web/app/view/money/report/OtherIODetail.js

@@ -10,7 +10,8 @@ Ext.define('saas.view.money.report.OtherIODetail', {
 
     viewName: 'money-report-otheriodetail',
 
-    groupField: 'bl_bankname',
+    groupField: 'bl_bankcode',
+    groupHeaderTpl: '资金账户: {[values.rows[0].data.bankname]}',
     listUrl: '/api/money/report/otheriodetail',
     defaultCondition: null,
     reportTitle: '其他收支明细表',

+ 2 - 1
frontend/saas-web/app/view/money/report/PayDetail.js

@@ -6,7 +6,8 @@ Ext.define('saas.view.money.report.PayDetail', {
     viewModel: 'money-report-paydetail',
     viewName: 'money-report-paydetail',
 
-    groupField:'pd_vendname',
+    groupField:'pd_vendcode',
+    groupHeaderTpl: '供应商名称: {[values.rows[0].data.pd_vendcode]}',
     listUrl: '/api/money/report/payDetail',
     defaultCondition: null,
     reportTitle: '应付账款明细表',

+ 2 - 1
frontend/saas-web/app/view/money/report/RecDetail.js

@@ -7,7 +7,8 @@ Ext.define('saas.view.money.report.RecDetail', {
 
     viewName: 'money-report-recdetail',
 
-    groupField: 'rd_custname',
+    groupField: 'rd_custcode',
+    groupHeaderTpl: '客户名称: {[values.rows[0].data.rd_custname]}',
     listUrl: '/api/money/report/recDetail',
     defaultCondition: null,
     reportTitle: '应收账款明细',

+ 3 - 1
frontend/saas-web/app/view/purchase/report/PurchasePay.js

@@ -7,7 +7,8 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
 
     viewName: 'purchase-report-purchasepay',
 //按供应商分组 付款金额合计
-    groupField: 'pu_vendname',
+    groupField: 'pu_vendcode',
+    groupHeaderTpl: '供应商名称: {[values.rows[0].data.pu_vendname]}',
     listUrl: '/api/purchase/report/purchasePay',
     defaultCondition: null,
     reportTitle: '采购付款一览表',
@@ -36,6 +37,7 @@ Ext.define('saas.view.purchase.report.PurchasePay', {
         width: 150
     }, {
         text: '供应商编号',
+        id: 'pu_vendcode',
         dataIndex: 'pu_vendcode',
         width: 150
     }, {

+ 2 - 1
frontend/saas-web/app/view/sale/report/SaleRec.js

@@ -7,7 +7,8 @@ Ext.define('saas.view.sale.report.SaleRec', {
 
     viewName: 'sale-report-salerec',
 
-    groupField: 'rb_custname',
+    groupField: 'rb_custcode',
+    groupHeaderTpl: '客户名称: {[values.rows[0].data.rd_custname]}',
     listUrl: '/api/sale/report/saleRec',
     defaultCondition: null,
     reportTitle: '销售收款报表',

+ 2 - 1
frontend/saas-web/app/view/stock/report/Prodiodetail.js

@@ -8,6 +8,7 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
     viewName: 'stock-report-prodiodetail',
   //  按物料分组
     groupField: 'pd_prodcode',
+    groupHeaderTpl: '物料名称: {[values.rows[0].data.pr_detail]}',
     listUrl: '/api/storage/report/prodioDetail',
     defaultCondition: null,
     reportTitle: '物料出入库明细表',
@@ -22,7 +23,7 @@ Ext.define('saas.view.stock.report.Prodiodetail', {
         emptyText:'输入单号,订单号或物料编号',
         columnWidth: 0.2,
         getCondition:function(v){
-            return "pd_prodcode='"+v+"' or pi_inoutno='"+v+"' or pd_ordercode='"+v+"'";
+            return "(upper(pd_prodcode) like '%" + v.toUpperCase() + "%' or upper(pi_inoutno) like '%" + v.toUpperCase() + "%' or upper(pd_ordercode) like '%" + v.toUpperCase() + "%')";
         }
     },{
         xtype: 'multicombo',