Explorar o código

09-x表的一些处理漏洞 + 动态加载page size

TonyKang %!s(int64=4) %!d(string=hai) anos
pai
achega
f6b7428a5f

+ 20 - 0
modules/reports/controllers/rpt_tpl_controller.js

@@ -14,7 +14,9 @@ let rptCustCfgFacade = require("../facade/rpt_cust_cfg_facade");
 
 const JV = require("../rpt_component/jpc_value_define");
 const rttFacade = require("../facade/rpt_tpl_tree_node_facade");
+const rptUtil = require("../util/rpt_util");
 const CompilationModel = require("../../users/models/compilation_model");
+let Rpt_Cfg_Mdl = mongoose.model('rpt_cfg');
 
 //统一回调函数
 let callback = function(req, res, err, message, data){
@@ -22,6 +24,24 @@ let callback = function(req, res, err, message, data){
 };
 
 let mExport = {
+    getAvailablePageSize(req, res) {
+        let rst = [];
+        Rpt_Cfg_Mdl.findOne({userId: "Administrator"}, '-_id').lean().exec(function(err, cfgs){
+            if (cfgs) {
+                if (cfgs.hasOwnProperty('papers')) {
+                    // console.log(cfgs.papers);
+                    rst = rst.concat(cfgs.papers);
+                } else {
+                    rst.push('A4');
+                    rst.push('A3');
+                }
+            } else {
+                rst.push('A4');
+                rst.push('A3');
+            }
+            callback(req,res, false, "", rst);
+        })
+    },
     getCustomerCfg(req, res) {
         let params = JSON.parse(req.body.params),
             userId = params.userId,

+ 1 - 0
modules/reports/routes/rpt_tpl_router.js

@@ -31,6 +31,7 @@ module.exports = function (app) {
     rptTplRouter.post('/copyRptTpl', reportTplController.copyRptTpl);
     rptTplRouter.post('/getCompilationList', reportTplController.getCompilationList);
     rptTplRouter.post('/getCustomizeCfg', reportTplController.getCustomerCfg);
+    rptTplRouter.post('/getAvailablePageSize', reportTplController.getAvailablePageSize);
     rptTplRouter.post('/saveCustomerCfg', reportTplController.saveCustomerCfg);
 
     rptTplRouter.post('/getUserRptCfg', reportCfgController.getReportUserCfg);

+ 6 - 2
modules/reports/rpt_component/jpc_flow_tab.js

@@ -85,7 +85,8 @@ JpcFlowTabSrv.prototype.createNew = function(){
                 if (segAutoHeightInfo[segIdx].length > startRecIdx + vi) {
                     couldBreak = private_addAutoHeightPageValue(vi);
                     // if (couldBreak) break;
-                } else if (vIdx.length > 0 && vIdx.length < maxRecPerPage) {
+                // } else if (vIdx.length > 0 && vIdx.length < maxRecPerPage) {
+                } else if (vIdx.length < maxRecPerPage) {
                     vIdx.push([followMode, JV.DISPLAY_VAL_TYPE_NORMAL, JV.BLANK_VALUE_INDEX]);
                 }
             } else {
@@ -668,7 +669,10 @@ JpcFlowTabSrv.prototype.createNew = function(){
                                         //纯 followTabEx 数据啦
                                         private_addPage(segIdx, null, true, false, -1);
                                     } else {
-                                        private_addPage(segIdx, grpSeqInfo, false, true, ttlSegRecAmtNormal);
+                                        // private_addPage(segIdx, grpSeqInfo, false, true, ttlSegRecAmtNormal);
+                                        //在这里要考虑如果有多页正常的流水数据情况,那么就得考虑这页有多少条普通流水记录,不应该一刀切地用ttlSegRecAmtNormal
+                                        let splitPoint = ttlSegRecAmtNormal - handledRowAmt ;
+                                        private_addPage(segIdx, grpSeqInfo, false, true, splitPoint);
                                     }
                                 } else {
                                     //在这里要考虑如果有多页正常的流水数据情况,那么就得考虑这页有多少条普通流水记录,不应该一刀切地用ttlSegRecAmtNormal

+ 12 - 0
modules/reports/util/rpt_util.js

@@ -28,6 +28,18 @@ module.exports = {
         admin_cfg = null;
         return rst;
     },
+    getAvailablePageSizeCache: function() {
+        const admin_cfg = cache.getCache(RPT_CFG_GRP,'admin_cfg');
+        let rst = [];
+        if (admin_cfg.hasOwnProperty('papers')) {
+            rst.concat(admin_cfg.papers);
+        } else {
+            rst.push('A4');
+            rst.push('A3');
+            rst.push('LETTER');
+        }
+        return rst;
+    },
     setReportCacheByUser: function (userId) {
         let me = this;
         let user_cfg = cache.getCache(RPT_CFG_GRP,userId + '_cfg');

+ 1 - 1
web/building_saas/report/html/rpt_main.html

@@ -52,7 +52,7 @@
                                 </div>
                                 <div class="btn-group" role="group">
                                     <button id="btnRptPageSize" type="button" class="btn btn-outline-primary btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">A4</button>
-                                    <div class="dropdown-menu" aria-labelledby="btnGroupDrop2">
+                                    <div class="dropdown-menu" aria-labelledby="btnGroupDrop2" id="divRptPageSize">
                                         <a class="dropdown-item" id="hrefRptPageSize_A3" style="cursor:pointer" onclick="zTreeOprObj.changePageSize(this)">A3</a>
                                         <!-- 
                                         <a class="dropdown-item" id="hrefRptPageSize_A5" style="cursor:pointer" onclick="zTreeOprObj.changePageSize(this)">A5</a>

+ 23 - 0
web/building_saas/report/js/rpt_main.js

@@ -20,6 +20,7 @@ let rptTplObj = {
         let me = this;
         if (!me.hasInitialized) {
             zTreeOprObj.getCustomerCfg();
+            zTreeOprObj.getAvailablePageSize();
             zTreeOprObj.getReportTemplateTree();
             me.hasInitialized = true;
             let canvas = document.getElementById("rptCanvas");
@@ -144,6 +145,28 @@ let zTreeOprObj = {
             me.refreshNodes();
         }, null, null);
     },
+    getAvailablePageSize: function() {
+        let me = zTreeOprObj, params = {};
+        params.engineerId = projectObj.project.projectInfo.property.engineering;
+        CommonAjax.postEx("report_tpl_api/getAvailablePageSize", params, 2000, true, function(result){
+                if (result) {
+                    // console.log(result);
+                    if (result.length > 0) {
+                        $('#btnRptPageSize')[0].innerHTML = result[0];
+                        let divDom = $('#divRptPageSize');
+                        divDom.empty();
+                        for (let pIdx = 1; pIdx < result.length; pIdx++) {
+                            //<a class="dropdown-item" id="hrefRptPageSize_A3" style="cursor:pointer" onclick="zTreeOprObj.changePageSize(this)">A3</a>
+                            let aDomStr = `<a class="dropdown-item" id="hrefRptPageSize_${result[pIdx]}" style="cursor:pointer" onclick="zTreeOprObj.changePageSize(this)">${result[pIdx]}</a>`;
+                            divDom.append(aDomStr);
+                        }
+                    }
+                } else {
+                    //
+                }
+            }, null, null
+        );
+    },
     getCustomerCfg: function() {
         let me = zTreeOprObj, params = {};
         params.engineerId = projectObj.project.projectInfo.property.engineering;