Pārlūkot izejas kodu

重新整理打印边距设置

TonyKang 4 gadi atpakaļ
vecāks
revīzija
17c8622f0a

+ 18 - 115
web/building_saas/report/html/rpt_print.html

@@ -13,7 +13,21 @@
         page-break-before: auto;
         page-break-after: auto;
     }
-    @page {size: A4 portrait;}
+    @page {
+        size: A4 portrait;
+        margin-top: 0cm;
+        margin-bottom: 0cm;
+        margin-left: 0mm;
+        margin-right: 0mm;
+    }
+    @media print {
+        body {
+            margin-top: 0mm;
+            margin-bottom: 0mm;
+            margin-left: 0mm;
+            margin-right: 0mm
+        }
+    }
     body {page: page}
     div {page: page}
 </style>
@@ -36,117 +50,6 @@
 <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">
-    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 = 3;
-        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;
-            let paddingStr = '';
-            if (actAreaArr) {
-                paddingStr = `padding: ${actAreaArr[i].Top}px 0px 0px ${actAreaArr[i].Left}px`;
-                if (actAreaArr[i].Right > actAreaArr[i].Bottom) {
-                    //横向,需要重新调整padding
-                    paddingStr = `padding: ${actAreaArr[i].Left}px 0px 0px ${orgHeight - actAreaArr[i].Bottom}px`;
-                }
-                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;
-                    //offsetHeight = actAreaArr[i].Left + (pageHeight - actAreaArr[i].Right) - (actAreaArr[i].Left - actAreaArr[i].Top) - DFT_MARGIN;
-                    //新方式下,没那么复杂了
-                    offsetHeight = actAreaArr[i].Left + (pageHeight - actAreaArr[i].Right) - DFT_MARGIN;
-                }
-            }
-            // let div = $('<div class="pageBreak"></div>');
-            let div = $(`<div class="pageBreak" style="${paddingStr}"></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>
+<script type="text/javascript" src="/web/building_saas/report/js/rpt_preview_common.js"></script>
+<script>
+</script></html>

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

@@ -0,0 +1,115 @@
+/**
+ * Created by Tony on 2020/10/16.
+ */
+
+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 = 3;
+    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;
+        let paddingStr = '';
+        if (actAreaArr) {
+            paddingStr = `padding: ${actAreaArr[i].Top}px 0px 0px ${actAreaArr[i].Left}px`;
+            if (actAreaArr[i].Right > actAreaArr[i].Bottom) {
+                //横向,需要重新调整padding
+                paddingStr = `padding: ${actAreaArr[i].Left}px 0px 0px ${orgHeight - actAreaArr[i].Bottom}px`;
+            }
+            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;
+                //offsetHeight = actAreaArr[i].Left + (pageHeight - actAreaArr[i].Right) - (actAreaArr[i].Left - actAreaArr[i].Top) - DFT_MARGIN;
+                //新方式下,没那么复杂了
+                offsetHeight = actAreaArr[i].Left + (pageHeight - actAreaArr[i].Right) - DFT_MARGIN;
+            }
+        }
+        // let div = $('<div class="pageBreak"></div>');
+        let div = $(`<div class="pageBreak" style="${paddingStr}"></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() {
+    //
+}