Browse Source

01-2表UI交互 + code sync

TonyKang 6 years ago
parent
commit
2439efa585

+ 53 - 1
modules/reports/controllers/rpt_controller.js

@@ -326,7 +326,7 @@ function getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, custo
         } else {
             cb('No report template was found!', null);
         }
-    })
+    });
 }
 
 function getMultiRptsCommon(user_id, prj_id, rpt_ids, pageSize, orientation, customizeCfg, option, outputType, cb) {
@@ -403,6 +403,44 @@ function getMultiRptsCommon(user_id, prj_id, rpt_ids, pageSize, orientation, cus
     });
 }
 
+function getSummaryReportPages(user_id, prjIds, rpt_id, pageSize, orientation, customizeCfg, option, outputType, cb) {
+    let rptTpl = null;
+    rptTplDataFacade.getBudgetSummayDatas(prjIds).then(function(summaryRawDataRst) {
+        rptTplFacade.getRptTemplate(rpt_id).then(function(rptTpl) {
+            let rptDataUtil = new rptDataExtractor();
+            rptDataUtil.initialize((rptTpl._doc)?rptTpl._doc:rptTpl);
+            try {
+                let tplData = rptDataUtil.assembleData(summaryRawDataRst);
+                let printCom = JpcEx.createNew();
+                if (pageSize) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
+                //console.log("orientation: " + (orientation === 'null'));
+                if (orientation && (orientation !== 'null')) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION] = orientation;
+                let defProperties = rptUtil.getReportDefaultCache();
+                if (customizeCfg) setupCustomizeCfg(customizeCfg, rptTpl, defProperties);
+                let dftOption = option||JV.PAGING_OPTION_NORMAL;
+                printCom.initialize(rptTpl);
+                printCom.analyzeData(rptTpl, tplData, defProperties, dftOption, outputType);
+                let maxPages = printCom.totalPages;
+                let pageRst = null;
+                if (maxPages > 0) {
+                    pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties, customizeCfg);
+                } else {
+                    pageRst = printCom.outputAsPreviewPage(rptTpl, defProperties);
+                }
+                if (pageRst) {
+                    cb(null, pageRst);
+                } else {
+                    cb('Have errors while on going...', null);
+                }
+            } catch (ex) {
+                console.log("报表数据异常: userId " + user_id + ", project id: " + prj_id);
+                console.log(ex);
+                cb('Exception occurs while on going...', null);
+            }
+        });
+
+    });
+}
 
 module.exports = {
     getReportAllPages: function (req, res) {
@@ -473,6 +511,20 @@ module.exports = {
         });
     },
 
+    getSummaryReportPages: function (req, res) {
+        let params = JSON.parse(req.body.params),
+            rpt_id = params.rpt_tpl_id,
+            prjIds = params.prjIds,
+            pageSize = params.pageSize,
+            orientation = params.orientation,
+            customizeCfg = params.custCfg
+        ;
+        let user_id = req.session.sessionUser.id;
+        getSummaryReportPages(user_id, prjIds, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_NORMAL, function (err, pageRst) {
+            callback(req, res, err, pageRst);
+        });
+    },
+
     getReportAllPagesSvg: function (req, res) {
         let params = JSON.parse(req.body.params),
             rpt_id = params.rpt_tpl_id,

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

@@ -30,6 +30,7 @@ module.exports =function (app) {
     rptRouter.post('/createExcelFiles', reportController.createExcelFiles);
     rptRouter.post('/createExcelFilesInOneBook', reportController.createExcelFilesInOneBook);
     rptRouter.post('/createPdfFiles', reportController.createPdfFiles);
+    rptRouter.post('/getBillsSummaryReport', reportController.getSummaryReportPages);
 
     rptRouter.get('/getExcelInOneBook/:prj_id/:rpt_ids/:size/:rptName/:option', reportController.getExcelInOneBook);
     rptRouter.get('/getExcel/:prj_id/:rpt_id/:size/:orientation/:rptName/:isOneSheet/:option', reportController.getExcel);

+ 2 - 2
test/unit/reports/test_summary_multi_prjs.js

@@ -14,7 +14,7 @@ let dbm = require("../../../config/db/db_manager");
 let rpt_cfg = require('./rpt_cfg');
 dbm.connect(process.env.NODE_ENV);
 
-let demoPrjs = [442, 472]; //UAT
+let demoPrjs = [1510, 1511]; //
 let demoRptId = 68; //01-2
 let pagesize = "A4";
 let userId_Leng = "5c3ffa9aa0a92732f41216e0"; //小冷User Id (养护的)
@@ -49,7 +49,7 @@ test('测试 - 测试模板啦: ', function (t) {
         rptTplFacade.getRptTemplate(demoRptId).then(function(rptTpl) {
             try {
                 let dt = new Date();
-                // fsUtil.writeObjToFile(summaryRst, "D:/GitHome/YangHuCost/tmp/多清单汇总表(01_2)原始数据.jsp");
+                fsUtil.writeObjToFile(summaryRst, "D:/GitHome/YangHuCost/tmp/多清单汇总表(01_2)原始数据.jsp");
                 let rptDataUtil = new rptDataExtractor();
                 rptDataUtil.initialize(rptTpl._doc);
                 let tplData = rptDataUtil.assembleData(summaryRst);

+ 3 - 0
web/building_saas/report/html/rpt_main.html

@@ -9,6 +9,9 @@
                     <button class="btn btn-outline-primary btn-sm" onclick="zTreeOprObj.getReportTemplateTree()"><i class="fa fa-cog"></i> 刷新</button>
                 </div>
                 -->
+                <div class="list-tools d-flex justify-content-center">
+                    <button class="btn btn-outline-primary btn-sm" onclick="zTreeOprObj.getReportTemplateTree()"><i class="fa fa-cog"></i> 刷新</button>
+                </div>
                 <div class="form-list">
                     <ul id="rptTplTree" class="ztree"></ul>
                 </div>

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

@@ -14,7 +14,7 @@
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                <a href="" class="btn btn-primary">确定</a>
+                <a onclick="zTreeOprObj.requestBillsSummaryRpt()" class="btn btn-primary" data-dismiss="modal">确定</a>
             </div>
         </div>
     </div>

+ 47 - 12
web/building_saas/report/js/rpt_main.js

@@ -217,6 +217,7 @@ let zTreeOprObj = {
         if (treeNode.nodeType === TPL_TYPE_TEMPLATE && treeNode.refId > 0) {
             if (treeNode.hasOwnProperty('flags') && treeNode.flags.hasOwnProperty('reportType')
                 && treeNode['flags']['reportType'] === 'billSummary') {
+                me.currentNode = treeNode;
                 me.requestPrjFolder();
                 me.countChkedRptTpl();
             } else {
@@ -305,7 +306,7 @@ let zTreeOprObj = {
     },
     requestPrjFolder: function () {
         //$("#show_project_folder").trigger("click");
-        let me = zTreeOprObj, params = {};
+        let me = zTreeOprObj;
         hintBox.waitBox();
         $.ajax({
             type:"POST",
@@ -337,17 +338,51 @@ let zTreeOprObj = {
                 alert('error ' + textStatus + " " + errorThrown);
             }
         });
-        // CommonAjax.postEx("/pm/api/getProjects", params, 15000, true,
-        //     function(result){
-        //         hintBox.unWaitBox();
-        //         $("#show_project_folder").trigger("click");
-        //         console.log(result);
-        //     }, function(err){
-        //         hintBox.unWaitBox();
-        //     }, function(ex){
-        //         hintBox.unWaitBox();
-        //     }
-        // );
+    },
+    requestBillsSummaryRpt: function () {
+        let me = zTreeOprObj;
+        let nodes = me.prjFolderTreeObj.getCheckedNodes(true);
+        if (nodes.length > 0) {
+            hintBox.waitBox();
+            let params = {};
+            params.pageSize = rptControlObj.getCurrentPageSize();
+            params.rpt_tpl_id = me.currentNode.refId;
+            params.custCfg = me.reportPageCfg;
+            params.prjIds = [];
+            for (let node of nodes) {
+                params.prjIds.push(node.ID);
+            }
+            CommonAjax.postEx("report_api/getBillsSummaryReport", params, 26000, true,
+                function(result){
+                    hintBox.unWaitBox();
+                    let pageRst = result;
+                    let canvas = document.getElementById("rptCanvas");
+                    if (pageRst && pageRst.items && pageRst.items.length > 0) {
+                        me.resetAfter(pageRst);
+                        me.currentRptPageRst = pageRst;
+                        me.maxPages = pageRst.items.length;
+                        me.currentPage = 1;
+                        me.displayPageValue();
+                        let size = JpcCanvasOutput.getReportSizeInPixel(me.currentRptPageRst, getScreenDPI());
+                        canvas.width = size[0] + 20;
+                        if (size[1] > size[0]) {
+                            canvas.height = size[1] + 100;
+                        } else {
+                            canvas.height = size[1] + 50;
+                        }
+                        me.showPage(1, canvas);
+                    } else {
+                        //返回了无数据表
+                        JpcCanvasOutput.cleanCanvas(canvas);
+                        JpcCanvasOutput.drawPageBorder(me.currentRptPageRst, canvas, getScreenDPI());
+                    }
+                }, function(err){
+                    hintBox.unWaitBox();
+                }, function(ex){
+                    hintBox.unWaitBox();
+                }
+            );
+        }
     },
     showPage: function (pageNum, canvas) {
         let me = zTreeOprObj;