TonyKang 4 anni fa
parent
commit
145bc49b43

+ 30 - 57
modules/reports/controllers/rpt_controller.js

@@ -45,44 +45,6 @@ const WATERMARK_FONT = {
     "FontAngle": "45"
 };
 
-function getAllPagesCommonOrg(rpt_id, pageSize, option, cb) {
-    let rptTpl = null;
-    rptTplFacade.getRptTemplate(rpt_id).then(function(rst) {
-        rptTpl = rst;
-        if (rptTpl) {
-            if (rptTpl.ID_KEY) {
-                return demoTemplateFacade.getDemoData(rptTpl.ID_KEY);
-            } else {
-                //callback(req, res, 'No report template data were found!', null);
-                cb('No report template data were found!', null);
-            }
-        } else {
-            //callback(req, res, 'No report template was found!', null);
-            cb('No report template was found!', null);
-        }
-    }).then(function(tplData){
-            if (tplData) {
-                let printCom = JpcEx.createNew();
-                rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
-                let defProperties = rptUtil.getReportDefaultCache();
-                let dftOption = option||JV.PAGING_OPTION_NORMAL;
-                printCom.initialize(rptTpl);
-                printCom.analyzeData(rptTpl, tplData, defProperties, dftOption, JV.OUTPUT_TYPE_NORMAL);
-                let maxPages = printCom.totalPages;
-                let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
-                if (pageRst) {
-                    cb(null, pageRst);
-                } else {
-                    //callback(req, res, "Have errors while on going...", null);
-                    cb('Have errors while on going...', null);
-                }
-            } else {
-                //callback(req, res, 'No report data were found!', null);
-                cb('No report data were found!', null);
-            }
-        }
-    );
-}
 function setupCustomizeCfg(customizeCfg, rptTpl, defProperties) {
     let tmpObj = {};
     //1. 字体
@@ -234,7 +196,7 @@ function setupCustomizeCfg(customizeCfg, rptTpl, defProperties) {
     }
 }
 
-function getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, option, outputType, cb) {
+function getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, option, outputType, flag, cb) {
     let rptTpl = null;
     rptTplFacade.getRptTemplate(rpt_id).then(function(rst) {
         rptTpl = rst;
@@ -388,13 +350,14 @@ module.exports = {
         let params = JSON.parse(req.body.params),
             rpt_id = params.rpt_tpl_id,
             prj_id = params.prj_id,
+            flag = params.flag;
             pageSize = params.pageSize,
             orientation = params.orientation,
             customizeCfg = params.custCfg
         ;
         // req.session.sessionUser.ssoId
         let user_id = req.session.sessionUser.id;
-        getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_NORMAL, function (err, pageRst) {
+        getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_NORMAL, flag, function (err, pageRst) {
             try {
                 let userModel = new UserModel();
                 // console.log('req.session.sessionUser.ssoId: ' + req.session.sessionUser.ssoId);
@@ -417,6 +380,7 @@ module.exports = {
         let params = JSON.parse(req.body.params),
             prj_id = params.prj_id,
             rpt_ids = params.rpt_ids.split(','),
+            flags = params.flags;
             pageSize = params.pageSize,
             orientation = params.orientation,
             customizeCfg = params.custCfg,
@@ -424,10 +388,11 @@ module.exports = {
         let user_id = req.session.sessionUser.id;
         let parallelFunctions = [];
         let dftOption = option||JV.PAGING_OPTION_NORMAL;
-        for (let id of rpt_ids) {
-            parallelFunctions.push((function (rpt_id) {
+        for (let idx = 0; idx < rpt_ids; idx++) {
+            let id = rpt_ids[idx], flag = flags[idx];
+            parallelFunctions.push((function (rpt_id, flag) {
                 return function (cb) {
-                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_NORMAL, function (err, pageRst) {
+                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_NORMAL, flag, function (err, pageRst) {
                         if(err){
                             cb(err);
                         }
@@ -436,7 +401,7 @@ module.exports = {
                         }
                     })
                 }
-            })(parseInt(id)));
+            })(parseInt(id, flag)));
         }
         async.parallel(parallelFunctions, function (err, pageRstArray) {
             if (err) {
@@ -462,13 +427,14 @@ module.exports = {
     getReportAllPagesSvg: function (req, res) {
         let params = JSON.parse(req.body.params),
             rpt_id = params.rpt_tpl_id,
+            flag = params.flag;
             prj_id = params.prj_id,
             pageSize = params.pageSize,
             orientation = params.orientation,
             customizeCfg = params.custCfg
         ;
         let user_id = req.session.sessionUser.id;
-        getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_SVG, function (err, pageRst) {
+        getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, null, JV.OUTPUT_TYPE_SVG, flag, function (err, pageRst) {
             let svgRstStrArr = rpt_svg_util.exportSvgStr(pageRst, 0, 0);
             callback(req, res, err, svgRstStrArr);
         });
@@ -478,6 +444,7 @@ module.exports = {
         let params = JSON.parse(req.body.params),
             prj_id = params.prj_id,
             rpt_ids = params.rpt_ids,
+            flags = params.flags;
             rptName = params.rptName,
             pageSize = params.pageSize,
             orientation = params.orientation,
@@ -487,10 +454,10 @@ module.exports = {
         let parallelFunctions = [];
         let dftOption = option||JV.PAGING_OPTION_NORMAL;
         for (let idx = 0; idx < rpt_ids.length; idx++) {
-            let r_id = rpt_ids[idx];
+            let r_id = rpt_ids[idx], flag = flags[idx];            
             parallelFunctions.push((function (rpt_id) {
                 return function (cb) {
-                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, function (err, pageRst) {
+                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function (err, pageRst) {
                         if(err){
                             cb(err);
                         }
@@ -517,6 +484,7 @@ module.exports = {
         let params = JSON.parse(req.body.params),
             prj_id = params.prj_id,
             rpt_ids = params.rpt_ids,
+            flags = params.flags;
             rpt_names = params.rpt_names,
             pageSize = params.pageSize,
             orientation = params.orientation,
@@ -527,11 +495,11 @@ module.exports = {
         let parallelFunctions = [];
         let dftOption = option||JV.PAGING_OPTION_NORMAL;
         for (let idx = 0; idx < rpt_ids.length; idx++) {
-            let r_id = rpt_ids[idx];
+            let r_id = rpt_ids[idx], flag = flags[idx];
             let r_name = rpt_names[idx];
             parallelFunctions.push((function (rpt_id, rpt_name) {
                 return function (cb) {
-                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, function (err, pageRst) {
+                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function (err, pageRst) {
                         if(err){
                             cb(err);
                         } else {
@@ -577,6 +545,7 @@ module.exports = {
     getExcel: function(req, res) {
         let prj_id = req.params.prj_id,
             rpt_id = req.params.rpt_id,
+            flag = req.params.flag,
             pageSize = req.params.size,
             orientation = req.params.orientation,
             rptName = req.params.rptName,
@@ -586,7 +555,7 @@ module.exports = {
         let customizeCfg = null;
         let user_id = req.session.sessionUser.id;
         let dftOption = option||JV.PAGING_OPTION_NORMAL;
-        getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, function(err, pageRst){
+        getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function(err, pageRst){
             try {
                 rpt_xl_util.exportExcel(pageRst, pageSize, rptName, isOneSheet, null, null, function(uuidName){
                     res.setHeader('Content-Type', 'application/vnd.openxmlformats');
@@ -608,16 +577,18 @@ module.exports = {
     getExcelInOneBook: function (req, res) {
         let prj_id = req.params.prj_id,
             rpt_ids = req.params.rpt_ids.split(','),
+            flags = req.params.flags;
             pageSize = req.params.size,
             rptName = req.params.rptName,
             option = req.params.option;
         let user_id = req.session.sessionUser.id;
         let parallelFunctions = [];
         let dftOption = option||JV.PAGING_OPTION_NORMAL;
-        for (let id of rpt_ids) {
-            parallelFunctions.push((function (rpt_id) {
+        for (let idx = 0; idx < rpt_ids.length; idx++) {
+            let id = rpt_ids[idx], flag = flags[idx];
+            parallelFunctions.push((function (rpt_id, flag) {
                 return function (cb) {
-                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, null, null, dftOption, JV.OUTPUT_TYPE_EXCEL, function (err, pageRst) {
+                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, null, null, dftOption, JV.OUTPUT_TYPE_EXCEL, flag, function (err, pageRst) {
                         if(err){
                             cb(err);
                         }
@@ -626,7 +597,7 @@ module.exports = {
                         }
                     })
                 }
-            })(parseInt(id)));
+            })(parseInt(id, flag)));
         }
         async.parallel(parallelFunctions, function (err, pageRstArray) {
             if (err) {
@@ -651,6 +622,7 @@ module.exports = {
         let params = JSON.parse(req.body.params),
             prj_id = params.prj_id,
             rpt_ids = params.rpt_ids,
+            flags = params.flags,
             rpt_names = params.rpt_names,
             pageSize = params.pageSize,
             orientation = params.orientation,
@@ -660,11 +632,11 @@ module.exports = {
         let parallelFunctions = [];
         let dftOption = option||JV.PAGING_OPTION_NORMAL;
         for (let idx = 0; idx < rpt_ids.length; idx++) {
-            let r_id = rpt_ids[idx];
+            let r_id = rpt_ids[idx], flag = flags[idx];
             let r_name = rpt_names[idx];
             parallelFunctions.push((function (rpt_id, rpt_name) {
                 return function (cb) {
-                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_PDF, function (err, pageRst) {
+                    getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, customizeCfg, dftOption, JV.OUTPUT_TYPE_PDF, flag, function (err, pageRst) {
                         if(err){
                             cb(err);
                         }
@@ -690,12 +662,13 @@ module.exports = {
     getPDF:function (req, res) {
         let prj_id = req.params.prj_id,
             rpt_id = req.params.rpt_id,
+            flag = req.params.flag;
             pageSize = req.params.size,
             orientation = req.params.orientation,
             rptName = req.params.rptName
         ;
         let user_id = req.session.sessionUser.id;
-        getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, null, JV.PAGING_OPTION_NORMAL, JV.OUTPUT_TYPE_PDF, function(err, pageRst){
+        getAllPagesCommon(user_id, prj_id, rpt_id, pageSize, orientation, null, JV.PAGING_OPTION_NORMAL, JV.OUTPUT_TYPE_PDF, flag, function(err, pageRst){
             rpt_pdf_util.export_pdf_file(pageRst, pageSize, rptName,function (uuidName) {
                 res.setHeader('Content-Type', 'application/vnd.openxmlformats');
                 // res.setHeader("Content-Disposition", "attachment; filename=" + strUtil.getPinYinCamelChars(rptName) + ".pdf");

+ 44 - 7
web/building_saas/report/js/rpt_main.js

@@ -230,6 +230,10 @@ let zTreeOprObj = {
             params.rpt_tpl_id = treeNode.refId;
             params.prj_id = projectObj.project.projectInfo.ID;
             params.custCfg = me.reportPageCfg;
+            params.flag = null;
+            if (treeNode.hasOwnProperty('flags')) {
+                params.flag = treeNode.flags;
+            }
             me.currentNode = treeNode;
             me.requestReport(params);
             me.countChkedRptTpl();
@@ -258,6 +262,10 @@ let zTreeOprObj = {
         params.pageSize = rptControlObj.getCurrentPageSize();
         params.orientation = rptControlObj.getCurrentOrientation();
         params.rpt_tpl_id = me.currentNode.refId;
+        params.flag = null;
+        if (me.currentNode.hasOwnProperty('flags')) {
+            params.flag = me.currentNode.flags;
+        }
         params.prj_id = projectObj.project.projectInfo.ID;
         params.custCfg = me.reportPageCfg;
         me.requestReport(params);
@@ -399,12 +407,19 @@ let rptControlObj = {
             let me = rptControlObj;
             let orgRptName = projectObj.project.projectInfo.name;
             let refRptTplIds = [];
+            let flags = [];
             for (let node of zTreeOprObj.checkedRptTplNodes) {
                 refRptTplIds.push(node.refId);
+                let flag = null;
+                if (node.hasOwnProperty('flags')) {
+                    flag = node.flags;
+                }
+                flags.push(flag);
             }
             let params = {};
             params.prj_id = projectObj.project.projectInfo.ID;
             params.rpt_ids = refRptTplIds;
+            params.flags = flags;
             params.rptName = orgRptName;
             params.pageSize = me.getCurrentPageSize();
             params.orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:me.getCurrentOrientation());
@@ -436,14 +451,20 @@ let rptControlObj = {
     getAllIndividualExcelBook: function () {
         let me = rptControlObj;
         if (zTreeOprObj.checkedRptTplNodes && zTreeOprObj.checkedRptTplNodes.length > 0) {
-            let rpt_ids = [], rpt_names = [];
+            let rpt_ids = [], flags = [], rpt_names = [];
             for (let tplNode of zTreeOprObj.checkedRptTplNodes) {
                 rpt_ids.push(tplNode.refId);
                 rpt_names.push(tplNode.name)
+                let flag = null;
+                if (tplNode.hasOwnProperty('flags')) {
+                    flag = tplNode.flags;
+                }
+                flags.push(flag);
             }
             let params = {};
             params.prj_id = projectObj.project.projectInfo.ID;
             params.rpt_ids = rpt_ids;
+            params.flags = flags;
             params.rpt_names = rpt_names;
             params.pageSize = me.getCurrentPageSize();
             params.orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:me.getCurrentOrientation());
@@ -496,14 +517,20 @@ let rptControlObj = {
     getPDF: function() {
         let me = rptControlObj;
         if (zTreeOprObj.checkedRptTplNodes && zTreeOprObj.checkedRptTplNodes.length > 0) {
-            let rpt_ids = [], rpt_names = [];
+            let rpt_ids = [], flags = [], rpt_names = [];
             for (let tplNode of zTreeOprObj.checkedRptTplNodes) {
                 rpt_ids.push(tplNode.refId);
                 rpt_names.push(tplNode.name);
+                let flag = null;
+                if (tplNode.hasOwnProperty('flags')) {
+                    flag = tplNode.flags;
+                }
+                flags.push(flag);
             }
             let params = {};
             params.prj_id = projectObj.project.projectInfo.ID;
             params.rpt_ids = rpt_ids;
+            params.flags = flags;
             params.rpt_names = rpt_names;
             params.pageSize = me.getCurrentPageSize();
             params.orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:me.getCurrentOrientation());
@@ -538,16 +565,16 @@ let rptControlObj = {
             $.bootstrapLoading.start();
             me.getPDFEx();
         } else {
-            // dynamicLoadJs('/lib/jspdf/SmartSimsun-normal.js',"normal", me.getPdfFontCallback);
-            // dynamicLoadJs('/lib/jspdf/SmartSimsun-bold.js',"bold", me.getPdfFontCallback);
             $("#ini_PDF_Btn").trigger("click");
-            dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-normal.js', 'normal', me.getPdfFontCallback);
-            dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-bold.js', 'bold', me.getPdfFontCallback);
+            dynamicLoadJs('/lib/jspdf/SmartSimsun-normal.js',"normal", me.getPdfFontCallback);
+            dynamicLoadJs('/lib/jspdf/SmartSimsun-bold.js',"bold", me.getPdfFontCallback);
+            // dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-normal.js', 'normal', me.getPdfFontCallback);
+            // dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-bold.js', 'bold', me.getPdfFontCallback);
         }
     },
     getPDFEx: function () {
         if (zTreeOprObj.checkedRptTplNodes && zTreeOprObj.checkedRptTplNodes.length > 0) {
-            let rptIds = [], rpt_names = [];
+            let rptIds = [], rpt_names = [], flagsArr = [];
             let params = {};
             params.pageSize = rptControlObj.getCurrentPageSize();
             params.orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:rptControlObj.getCurrentOrientation());
@@ -556,8 +583,14 @@ let rptControlObj = {
             for (let tplNode of zTreeOprObj.checkedRptTplNodes) {
                 rptIds.push(tplNode.refId);
                 rpt_names.push(tplNode.name);
+                let flag = null;
+                if (tplNode.hasOwnProperty('flags')) {
+                    flag = tplNode.flags;
+                }
+                flagsArr.push(flag);
             }
             params.rpt_ids = rptIds.join(",");
+            params.flags = flagsArr;
             params.compilation = projectObj.project.projectInfo.compilation;
             CommonAjax.postEx("report_api/getMultiReports", params, WAIT_TIME_EXPORT, true,
                 function(result){
@@ -696,6 +729,10 @@ let rptControlObj = {
             let params = {};
             params.pageSize = rptControlObj.getCurrentPageSize();
             params.rpt_tpl_id = treeNode.refId;
+            params.flag = null;
+            if (me.currentNode.hasOwnProperty('flags')) {
+                params.flag = me.currentNode.flags;
+            }
             params.prj_id = projectObj.project.projectInfo.ID;
             params.custCfg = zTreeOprObj.reportPageCfg;
             zTreeOprObj.requestReport(params);

+ 7 - 1
web/building_saas/report/js/rpt_print.js

@@ -5,7 +5,7 @@
 let rptPrintHelper = {
     preview: function () {
         if (zTreeOprObj.checkedRptTplNodes && zTreeOprObj.checkedRptTplNodes.length > 0) {
-            let rptIds = [];
+            let rptIds = [], flags = [];
             let params = {};
             params.pageSize = rptControlObj.getCurrentPageSize();
             params.orientation = ((zTreeOprObj.checkedRptTplNodes.length > 1)?null:rptControlObj.getCurrentOrientation());
@@ -13,8 +13,14 @@ let rptPrintHelper = {
             params.prj_id = projectObj.project.projectInfo.ID;
             for (let tplNode of zTreeOprObj.checkedRptTplNodes) {
                 rptIds.push(tplNode.refId);
+                let flag = null;
+                if (tplNode.hasOwnProperty('flags')) {
+                    flag = tplNode.flags;
+                }
+                flags.push(flag);
             }
             params.rpt_ids = rptIds.join(",");
+            params.flags = flags;
             CommonAjax.postEx("report_api/getMultiReports", params, 10000, true,
                 function(result){
                     //sessionStorage.currentPageData = JSON.stringify(zTreeOprObj.currentRptPageRst);