Przeglądaj źródła

A3打印预览问题 + 新控制特性

TonyKang 6 lat temu
rodzic
commit
0ee6e56461

+ 3 - 1
modules/all_models/rpt_cfg.js

@@ -11,7 +11,9 @@ let FormatSchema = new Schema({
     "ShowZero" : String,
     "Horizon" : String,
     "Vertical" : String,
-    "Wrap" : String
+    "Wrap" : String,
+    "ShrinkFirst" : String,
+    "CloseOutput" : String
 });
 let FontSchema = new Schema({
     "ID" : String,

+ 13 - 0
modules/reports/routes/rpt_tpl_router_fe.js

@@ -20,6 +20,19 @@ module.exports = function (app) {
             );
         }
     });
+    app.get('/rpt_printA3',  function(req, res) {
+        if (!req.session.sessionUser.id) {
+            res.redirect('/login');
+        }
+        else {
+            res.render('building_saas//report/html/rpt_printA3.html',
+                {
+                    userAccount: req.session.userAccount,
+                    userID: req.session.sessionUser.id
+                }
+            );
+        }
+    });
 
     rptTplRouter.post('/getRptTplTree', reportTplController.getRptTplTree);
 

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

@@ -1305,6 +1305,8 @@ function setupControl(mergeCell, controls) {
         orgCtrl = controls[mergeCell[JV.PROP_CONTROL]];
         mergeCell[JV.PROP_CONTROL] = {
             "Shrink": "T",
+            "ShrinkFirst": orgCtrl.ShrinkFirst,
+            "CloseOutput": orgCtrl.CloseOutput,
             "ShowZero": orgCtrl.ShowZero,
             "Horizon": orgCtrl.Horizon,
             "Vertical": orgCtrl.Vertical,

+ 2 - 2
modules/reports/util/rpt_excel_util.js

@@ -208,7 +208,7 @@ function writeStyles(stylesObj){
         let textRotation = 0;
         let newHorizontal = excelStyle[JV.CONTROL_PROPS[2]];
         let newVertical = excelStyle[JV.CONTROL_PROPS[3]];
-        if (excelStyle[JV.CONTROL_PROPS[5]]) {
+        if (excelStyle[JV.CONTROL_PROPS[5]] && !strUtil.convertStrToBoolean(excelStyle[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_CLOSE_OUTPUT]])) {
             newVertical = excelStyle[JV.CONTROL_PROPS[5]];
         }
         if (parseInt(excelStyle.fontAngle) !== 0) {
@@ -255,7 +255,7 @@ function writeStyles(stylesObj){
         if (strUtil.convertStrToBoolean(excelStyle[JV.CONTROL_PROPS[0]])) {
             alignStr += ' shrinkToFit="1"';
         }
-        if (strUtil.convertStrToBoolean(excelStyle[JV.CONTROL_PROPS[4]])) {
+        if (strUtil.convertStrToBoolean(excelStyle[JV.CONTROL_PROPS[4]]) && !strUtil.convertStrToBoolean(excelStyle[JV.CONTROL_PROPS[6]])) {
             alignStr += ' wrapText="1"';
         }
         if (textRotation !== 0) {

+ 1 - 1
modules/reports/util/rpt_pdf_util.js

@@ -227,7 +227,7 @@ function export_pdf_file (pageData, paperSize, fName, callback) {
             while (true) {
                 //*/
                 let lines = Math.floor((area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) / (dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP] + 4));
-                lines = (lines === 0)?1:lines;
+                lines = (lines === 0 || (control.Shrink === 'T' && control.ShrinkFirst === 'T'))?1:lines;
                 let actLines = private_splitString(val, w, doc);
                 if (actLines.length > lines && dftFontHeight >= 6) {
                     dftFontHeight--;

+ 83 - 36
test/unit/reports/rpt_cfg.js

@@ -286,75 +286,102 @@ module.exports = {
         {
             "ID" : "Default",
             "CfgDispName" : "默认",
-            "Shrink" : "T",
+            "Shrink" : "F",
             "ShowZero" : "T",
             "Horizon" : "left",
             "Vertical" : "bottom",
-            "Wrap" : "false"
+            "Wrap" : "T",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         },
         {
             "ID" : "Title",
             "CfgDispName" : "标题",
-            "Shrink" : "T",
+            "Shrink" : "F",
             "ShowZero" : "T",
             "Horizon" : "center",
             "Vertical" : "center",
-            "Wrap" : "false"
+            "Wrap" : "T",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         },
         {
             "ID" : "Header",
             "CfgDispName" : "表头",
-            "Shrink" : "T",
+            "Shrink" : "F",
             "ShowZero" : "T",
             "Horizon" : "left",
             "Vertical" : "center",
-            "Wrap" : "false"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         },
         {
-            "ID": "Header_Right",
-            "CfgDispName": "表头_右",
-            "Shrink": "F",
-            "ShowZero": "T",
-            "Horizon": "right",
-            "Vertical": "center",
-            "Wrap": "F"
+            "ID" : "Header_Right",
+            "CfgDispName" : "表头_右",
+            "Shrink" : "F",
+            "ShowZero" : "T",
+            "Horizon" : "right",
+            "Vertical" : "center",
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         },
         {
             "ID" : "Footer",
             "CfgDispName" : "表尾",
-            "Shrink" : "T",
+            "Shrink" : "F",
             "ShowZero" : "T",
             "Horizon" : "left",
             "Vertical" : "center",
-            "Wrap" : "false"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
+        },
+        {
+            "ID" : "Footer_Right",
+            "CfgDispName" : "表尾_右",
+            "Shrink" : "F",
+            "ShowZero" : "T",
+            "Horizon" : "right",
+            "Vertical" : "center",
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         },
         {
             "ID" : "Column",
             "CfgDispName" : "表栏",
-            "Shrink" : "T",
-            "ShowZero" : "T",
+            "Shrink" : "F",
+            "ShowZero" : "F",
             "Horizon" : "center",
             "Vertical" : "center",
-            "Wrap" : "false",
-            "FillAfterWrap" : "true"
+            "Wrap" : "T",
+            "FillAfterWrap" : "T",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         },
         {
             "ID" : "Column_Left",
             "CfgDispName" : "表栏_左",
-            "Shrink" : "T",
-            "ShowZero" : "T",
+            "Shrink" : "F",
+            "ShowZero" : "F",
             "Horizon" : "left",
             "Vertical" : "center",
-            "Wrap" : "false"
+            "Wrap" : "T",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         },
         {
             "ID" : "Column_Right",
             "CfgDispName" : "表栏_右",
-            "Shrink" : "T",
-            "ShowZero" : "T",
+            "Shrink" : "F",
+            "ShowZero" : "F",
             "Horizon" : "right",
             "Vertical" : "center",
-            "Wrap" : "false"
+            "Wrap" : "T",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         },
         {
             "ID" : "Content_Left",
@@ -363,7 +390,9 @@ module.exports = {
             "ShowZero" : "F",
             "Horizon" : "left",
             "Vertical" : "bottom",
-            "Wrap" : "false"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "T"
         },
         {
             "ID" : "Content_Right",
@@ -372,7 +401,9 @@ module.exports = {
             "ShowZero" : "F",
             "Horizon" : "right",
             "Vertical" : "bottom",
-            "Wrap" : "false"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "T"
         },
         {
             "ID" : "Content_Center",
@@ -381,7 +412,9 @@ module.exports = {
             "ShowZero" : "F",
             "Horizon" : "center",
             "Vertical" : "bottom",
-            "Wrap" : "false"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "T"
         },
         {
             "ID" : "NewContent_Left",
@@ -390,7 +423,9 @@ module.exports = {
             "ShowZero" : "F",
             "Horizon" : "left",
             "Vertical" : "center",
-            "Wrap" : "F"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "T"
         },
         {
             "ID" : "NewContent_Right",
@@ -399,7 +434,9 @@ module.exports = {
             "ShowZero" : "F",
             "Horizon" : "right",
             "Vertical" : "center",
-            "Wrap" : "F"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "T"
         },
         {
             "ID" : "NewContent_Center",
@@ -408,7 +445,9 @@ module.exports = {
             "ShowZero" : "F",
             "Horizon" : "center",
             "Vertical" : "center",
-            "Wrap" : "F"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "T"
         },
         {
             "ID" : "Currency",
@@ -417,7 +456,9 @@ module.exports = {
             "ShowZero" : "F",
             "Horizon" : "right",
             "Vertical" : "center",
-            "Wrap" : "F"
+            "Wrap" : "F",
+            "ShrinkFirst" : "T",
+            "CloseOutput" : "F"
         },
         {
             "ID" : "Left_Top",
@@ -426,7 +467,9 @@ module.exports = {
             "ShowZero" : "T",
             "Horizon" : "left",
             "Vertical" : "top",
-            "Wrap" : "F"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         },
         {
             "ID" : "Center_Top",
@@ -435,7 +478,9 @@ module.exports = {
             "ShowZero" : "T",
             "Horizon" : "center",
             "Vertical" : "top",
-            "Wrap" : "F"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         },
         {
             "ID" : "Right_Top",
@@ -444,7 +489,9 @@ module.exports = {
             "ShowZero" : "T",
             "Horizon" : "right",
             "Vertical" : "top",
-            "Wrap" : "F"
+            "Wrap" : "F",
+            "ShrinkFirst" : "F",
+            "CloseOutput" : "F"
         }
     ]
-}
+};

+ 3 - 2
test/unit/reports/test_rpt_test_template.js

@@ -38,7 +38,8 @@ let demoPrjId = - 1;
 
 // let demoRptId = 56; //24
 // let demoRptId = 36; //5.1
-let demoRptId = 49; //5.5
+let demoRptId = 46; //5.5测试
+// let demoRptId = 49; //5.5
 // let demoRptId = 66; //5.4
 // let demoRptId = 67; //21-2
 // let demoRptId = 31; //21-1
@@ -101,7 +102,7 @@ test('测试 - 测试模板啦: ', function (t) {
             if (!err) {
                 try {
                     let dt = new Date();
-                    // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataObject_测试模板.jsp");
+                    fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataObject_测试模板.jsp");
                     let tplData = rptDataUtil.assembleData(rawDataObj);
                     // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/YangHuCost/tmp/rptTplRawDataAfterCacl_测试模板.jsp");
                     // fsUtil.writeObjToFile(tplData, "D:/GitHome/YangHuCost/tmp/rptTplAssembledData_测试模板.jsp");

+ 4 - 106
web/building_saas/report/html/rpt_print.html

@@ -30,115 +30,13 @@
     @page vertical1 {size: A4 portrait;}
 -->
 <script type="text/javascript" src="/web/building_saas/report/js/jpc_output_value_define.js"></script>
-<body onload="loading()" onbeforeunload="closing()">
-    <canvas id="chkCanvas" style="display:none"></canvas>
-</body>
 <script src="/lib/jquery/jquery-3.2.1.min.js"></script>
 <script type="text/javascript" src="/web/building_saas/report/js/jpc_output.js"></script>
 <script type="text/javascript" src="/web/building_saas/report/js/rpt_print.js"></script>
+<script type="text/javascript" src="/web/building_saas/report/js/rpt_preview_common.js"></script>
+<body onload="loading()" onbeforeunload="closing()">
+    <canvas id="chkCanvas" style="display:none"></canvas>
+</body>
 <SCRIPT type="text/javascript">
-    let G_OFFSET_X = 0, G_OFFSET_Y = 0;
-    function loading() {
-        if (sessionStorage.multiRptsData) {
-            let multiRptData = JSON.parse(sessionStorage.multiRptsData);
-            let scaleFactor = parseInt(sessionStorage.scaleFactor);
-            for (let idx = 0; idx < multiRptData.length; idx++) {
-                let pageData = multiRptData[idx];
-                if (idx === 0) {
-                    $(document).attr("title", pageData[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);
-                }
-                let orgPixelSize = getPixelSize(pageData);
-                let actArea = getActualArea(pageData);
-                let svgArr = rptPrintHelper.buildSvgArr(pageData, actArea, G_OFFSET_X, G_OFFSET_Y);
-                //let orientation = (pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][0] < pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][1])?"纵向":"横向";
-                let orientation = "纵向";
-                showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, orientation, orgPixelSize);
-            }
-            window.print();
-        } else if (sessionStorage.currentPageData) {
-            let pageData = JSON.parse(sessionStorage.currentPageData);
-            let scaleFactor = parseInt(sessionStorage.scaleFactor);
-            let orgPixelSize = getPixelSize(pageData);
-            let actArea = getActualArea(pageData);
-            let svgArr = rptPrintHelper.buildSvgArr(pageData, actArea, G_OFFSET_X, G_OFFSET_Y);
-            $(document).attr("title", pageData[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);
-            //showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, sessionStorage.orientation);
-            showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, "纵向", orgPixelSize);
-            window.print();
-        } else if (sessionStorage.currentPageSvgData) {
-            let svgArr = JSON.parse(sessionStorage.currentPageSvgData);
-            let scaleFactor = 1;
-            //showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, sessionStorage.orientation);
-            showPreviewData(svgArr, null, scaleFactor, sessionStorage.pageSize, "纵向", null);
-            window.print();
-        } else {
-            //alert("没有报表数据!");
-        }
-    }
-
-    function showPreviewData(svgArr, actAreaArr, scaleFactor, pageSize, orientation, orgPixelSize) {
-        let orgHeight = 793, orgWidth = 1122;
-        let DFT_MARGIN = 5;
-        if (pageSize === 'A3') {
-            orgHeight = 1122;
-            orgWidth = 793 * 2;
-        } else if (pageSize.indexOf('自定义') >= 0) {
-            //自定义
-        } else {
-            //其他size(LEGAL, 16K etc.)
-        }
-        let pageHeight = orgHeight * scaleFactor, pageWidth = orgWidth * scaleFactor;
-        if (orientation === "纵向") {
-            pageHeight = orgWidth * scaleFactor;
-            pageWidth = orgHeight * scaleFactor;
-        }
-
-        for (let i = 0; i < svgArr.length; i++) {
-            let offsetHeight = 0, offsetWidth = 0;
-            if (actAreaArr) {
-                offsetWidth = actAreaArr[i].Left + (pageWidth - actAreaArr[i].Right) - DFT_MARGIN;
-                offsetHeight = actAreaArr[i].Top + (pageHeight - actAreaArr[i].Bottom) - DFT_MARGIN;
-                if (orgPixelSize[0] > orgPixelSize[1]) {
-                    //横向强制改纵向(系统是以纵向为准),那么计算offset的方式会有所不同
-                    offsetWidth = actAreaArr[i].Top + (pageWidth - actAreaArr[i].Bottom) - DFT_MARGIN;
-                    //横向转纵向时,还得考虑左上角转右上角的Left与Top之间的差,否则坐标还是会有偏差
-                    offsetHeight = actAreaArr[i].Left + (pageHeight - actAreaArr[i].Right) - (actAreaArr[i].Left - actAreaArr[i].Top) - DFT_MARGIN;
-                }
-            }
-            let div = $('<div class="pageBreak"></div>');
-            div.append($(svgArr[i].join("")));
-            $(div).find("svg").each(function(cIdx,elementSvg){
-                elementSvg.setAttribute('height', pageHeight - offsetHeight);
-                elementSvg.setAttribute('width', pageWidth - offsetWidth);
-            });
-            $("body").append(div);
-        }
-    }
-
-    function getActualArea(pageData) {
-        let rst = [];
-        for (let item of pageData.items) {
-            let area = {Left: 10000, Right: 0, Top: 10000, Bottom: 0};
-            for (let cell of item.cells) {
-                if (cell.area.Left < area.Left) {
-                    area.Left = cell.area.Left;
-                }
-                if (cell.area.Right > area.Right) {
-                    area.Right = cell.area.Right;
-                }
-                if (cell.area.Top < area.Top) {
-                    area.Top = cell.area.Top;
-                }
-                if (cell.area.Bottom > area.Bottom) {
-                    area.Bottom = cell.area.Bottom;
-                }
-            }
-            rst.push(area);
-        }
-        return rst;
-    }
-    function closing() {
-        //
-    }
 </SCRIPT>
 </html>

+ 26 - 0
web/building_saas/report/html/rpt_printA3.html

@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title></title>
+</head>
+<style type="text/css">
+    .pageBreak {
+        page-break-before: auto;
+        page-break-after: auto;
+    }
+    @page {size: A3 portrait;}
+    body {page: page}
+    div {page: page}
+</style>
+<script type="text/javascript" src="/web/building_saas/report/js/jpc_output_value_define.js"></script>
+<script src="/lib/jquery/jquery-3.2.1.min.js"></script>
+<script type="text/javascript" src="/web/building_saas/report/js/jpc_output.js"></script>
+<script type="text/javascript" src="/web/building_saas/report/js/rpt_print.js"></script>
+<script type="text/javascript" src="/web/building_saas/report/js/rpt_preview_common.js"></script>
+<body onload="loading()" onbeforeunload="closing()">
+<canvas id="chkCanvas" style="display:none"></canvas>
+</body>
+<SCRIPT type="text/javascript">
+</SCRIPT>
+</html>

+ 1 - 1
web/building_saas/report/js/jpc_output.js

@@ -203,7 +203,7 @@ let JpcCanvasOutput = {
             } else {
                 while (true) {
                     let lines = Math.floor((area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) / (dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP] + 4));
-                    lines = (lines === 0)?1:lines;
+                    lines = (lines === 0 || (control.Shrink === 'T' && control.ShrinkFirst === 'T'))?1:lines;
                     let actLines = private_splitString(val, validAreaTxtWidth, ctx);
                     if (actLines.length > lines && dftFontHeight >= 6) {
                         dftFontHeight--;

+ 108 - 0
web/building_saas/report/js/rpt_preview_common.js

@@ -0,0 +1,108 @@
+/**
+ * Created by Tony on 2019/4/10.
+ */
+
+let G_OFFSET_X = 0, G_OFFSET_Y = 0;
+function loading() {
+    if (sessionStorage.multiRptsData) {
+        let multiRptData = JSON.parse(sessionStorage.multiRptsData);
+        let scaleFactor = parseInt(sessionStorage.scaleFactor);
+        for (let idx = 0; idx < multiRptData.length; idx++) {
+            let pageData = multiRptData[idx];
+            if (idx === 0) {
+                $(document).attr("title", pageData[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);
+            }
+            let orgPixelSize = getPixelSize(pageData);
+            let actArea = getActualArea(pageData);
+            let svgArr = rptPrintHelper.buildSvgArr(pageData, actArea, G_OFFSET_X, G_OFFSET_Y);
+            //let orientation = (pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][0] < pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][1])?"纵向":"横向";
+            let orientation = "纵向";
+            showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, orientation, orgPixelSize);
+        }
+        window.print();
+    } else if (sessionStorage.currentPageData) {
+        let pageData = JSON.parse(sessionStorage.currentPageData);
+        let scaleFactor = parseInt(sessionStorage.scaleFactor);
+        let orgPixelSize = getPixelSize(pageData);
+        let actArea = getActualArea(pageData);
+        let svgArr = rptPrintHelper.buildSvgArr(pageData, actArea, G_OFFSET_X, G_OFFSET_Y);
+        $(document).attr("title", pageData[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);
+        //showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, sessionStorage.orientation);
+        showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, "纵向", orgPixelSize);
+        window.print();
+    } else if (sessionStorage.currentPageSvgData) {
+        let svgArr = JSON.parse(sessionStorage.currentPageSvgData);
+        let scaleFactor = 1;
+        //showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, sessionStorage.orientation);
+        showPreviewData(svgArr, null, scaleFactor, sessionStorage.pageSize, "纵向", null);
+        window.print();
+    } else {
+        //alert("没有报表数据!");
+    }
+}
+
+function showPreviewData(svgArr, actAreaArr, scaleFactor, pageSize, orientation, orgPixelSize) {
+    let orgHeight = 793, orgWidth = 1122;
+    let DFT_MARGIN = 5;
+    if (pageSize === 'A3') {
+        orgHeight = 1122;
+        orgWidth = 793 * 2;
+    } else if (pageSize.indexOf('自定义') >= 0) {
+        //自定义
+    } else {
+        //其他size(LEGAL, 16K etc.)
+    }
+    let pageHeight = orgHeight * scaleFactor, pageWidth = orgWidth * scaleFactor;
+    if (orientation === "纵向") {
+        pageHeight = orgWidth * scaleFactor;
+        pageWidth = orgHeight * scaleFactor;
+    }
+
+    for (let i = 0; i < svgArr.length; i++) {
+        let offsetHeight = 0, offsetWidth = 0;
+        if (actAreaArr) {
+            offsetWidth = actAreaArr[i].Left + (pageWidth - actAreaArr[i].Right) - DFT_MARGIN;
+            offsetHeight = actAreaArr[i].Top + (pageHeight - actAreaArr[i].Bottom) - DFT_MARGIN;
+            if (orgPixelSize[0] > orgPixelSize[1]) {
+                //横向强制改纵向(系统是以纵向为准),那么计算offset的方式会有所不同
+                offsetWidth = actAreaArr[i].Top + (pageWidth - actAreaArr[i].Bottom) - DFT_MARGIN;
+                //横向转纵向时,还得考虑左上角转右上角的Left与Top之间的差,否则坐标还是会有偏差
+                offsetHeight = actAreaArr[i].Left + (pageHeight - actAreaArr[i].Right) - (actAreaArr[i].Left - actAreaArr[i].Top) - DFT_MARGIN;
+            }
+        }
+        let div = $('<div class="pageBreak"></div>');
+        div.append($(svgArr[i].join("")));
+        $(div).find("svg").each(function(cIdx,elementSvg){
+            elementSvg.setAttribute('height', pageHeight - offsetHeight);
+            elementSvg.setAttribute('width', pageWidth - offsetWidth);
+        });
+        $("body").append(div);
+    }
+}
+
+function getActualArea(pageData) {
+    let rst = [];
+    for (let item of pageData.items) {
+        let area = {Left: 10000, Right: 0, Top: 10000, Bottom: 0};
+        for (let cell of item.cells) {
+            if (cell.area.Left < area.Left) {
+                area.Left = cell.area.Left;
+            }
+            if (cell.area.Right > area.Right) {
+                area.Right = cell.area.Right;
+            }
+            if (cell.area.Top < area.Top) {
+                area.Top = cell.area.Top;
+            }
+            if (cell.area.Bottom > area.Bottom) {
+                area.Bottom = cell.area.Bottom;
+            }
+        }
+        rst.push(area);
+    }
+    return rst;
+}
+function closing() {
+    //
+}
+

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

@@ -22,7 +22,11 @@ let rptPrintHelper = {
                     sessionStorage.pageSize = rptControlObj.getCurrentPageSize();
                     sessionStorage.orientation = rptControlObj.getCurrentOrientation();
                     sessionStorage.scaleFactor = 1;
-                    window.open('/rpt_print');
+                    if (sessionStorage.pageSize === 'A3') {
+                        window.open('/rpt_printA3');
+                    } else {
+                        window.open('/rpt_print');
+                    }
                 },
                 function(failRst){
                     sessionStorage.currentPageData = null;