Преглед на файлове

报表模板设置A3的时候,不受外部控制影响

Tony Kang преди 1 година
родител
ревизия
bd8e5fc8eb
променени са 2 файла, в които са добавени 11 реда и са изтрити 7 реда
  1. 0 2
      app/controller/report_controller.js
  2. 11 5
      app/service/jpc_report.js

+ 0 - 2
app/controller/report_controller.js

@@ -1623,8 +1623,6 @@ async function getWatermarkPicData(pageRst, baseDir) {
                             const bData = fs.readFileSync(filePath);
                             const base64Str = bData.toString('base64');
                             return 'data:image/png;base64,' + base64Str;
-                        } else {
-                            console.log('文件不存在:' + filePath);
                         }
                     } catch (err) {
                         console.error(err);

+ 11 - 5
app/service/jpc_report.js

@@ -44,7 +44,7 @@ module.exports = app => {
             // console.log(rawDataObj);
             try {
                 const printCom = JpcEx.createNew();
-                if (params.pageSize) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = params.pageSize;
+                setupPageSize(rptTpl, params.pageSize);
                 if (params.orientation && (params.orientation !== 'null')) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION] = params.orientation;
 
                 const defProperties = RPT_DEF_PROPERTIES;
@@ -187,9 +187,8 @@ module.exports = app => {
 
                     const tplData = rptDataUtil.assembleData(ctx, curRawDataObj, baseDir, null, customSelect);
                     const printCom = JpcEx.createNew();
-                    rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = params.pageSize;
 
-                    if (params.pageSize) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = params.pageSize;
+                    setupPageSize(rptTpl, params.pageSize);
                     if (params.orientation && (params.orientation !== 'null')) rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION] = params.orientation;
                     if (params.custCfg) setupCustomizeCfg(params.custCfg, rptTpl, defProperties);
                     const dftOption = params.option || JV.PAGING_OPTION_NORMAL;
@@ -243,7 +242,7 @@ module.exports = app => {
                 rptTpl[JV.NODE_CUSTOM_DEFINE], null);
             try {
                 const printCom = JpcEx.createNew();
-                rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
+                setupPageSize(rptTpl, pageSize);
                 const defProperties = RPT_DEF_PROPERTIES;
                 const tplData = rptDataUtil.assembleData(ctx, rawDataObj, baseDir, printCom, customSelect);
                 setupSomeDftCustomizeCfg(rptTpl);
@@ -268,7 +267,7 @@ module.exports = app => {
             const printCom = JpcEx.createNew();
             const defProperties = RPT_DEF_PROPERTIES;
             const rptTpl = JSON.parse(rawRptTpl.rpt_content);
-            rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
+            setupPageSize(rptTpl, pageSize);
             setupSomeDftCustomizeCfg(rptTpl);
             printCom.initialize(rptTpl);
             const pageRst = printCom.outputAsPreviewPage(rptTpl, defProperties);
@@ -279,6 +278,13 @@ module.exports = app => {
     return JpcReport;
 };
 
+function setupPageSize(rptTpl, pageSize) {
+    // 如果模板设置的是A3,那么就不改动它的页规格(防止没有空间给流水数据,导致爆内存)
+    if (rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] !== 'A3' && pageSize) {
+        rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pageSize;
+    }
+}
+
 function setupCustomizeCfg(customizeCfg, rptTpl, defProperties) {
     const tmpObj = {};
     // 1. 字体