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

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

Tony Kang преди 1 година
родител
ревизия
a6e929e98f

+ 1 - 0
app/public/report/js/jpc_output_value_define.js

@@ -8,6 +8,7 @@ let JV = {
     NODE_MAIN_INFO_RPT_NAME: "报表名称",
     NODE_PAGE_SIZE: "纸张宽高",
     NODE_MARGINS: "页边距",
+    PROP_PAGE_SIZE: '页规格',
 
     NODE_FONT_COLLECTION: "font_collection",
     NODE_STYLE_COLLECTION: "style_collection",

+ 9 - 1
app/public/report/js/rpt_jsexcel.js

@@ -979,7 +979,14 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
     // rst.push('<pageMargins left="0.315" right="0.215" top="0.315" bottom="0.315" header="0" footer="0"/>');
     rst.push('<pageMargins left="' + (parseFloat(pageData[JV.NODE_PAGE_INFO][JV.NODE_MARGINS][JV.PROP_LEFT]) * 0.39375) +
         '" right="0.215" top="0.315" bottom="0.315" header="0" footer="0"/>');
-    const paperSizeIdx = JV.PAGES_SIZE_STR.indexOf(paperSize);
+    let actPageSize = paperSize;
+    if (sheetData && sheetData[JV.PROP_PAGE_SIZE]) {
+        actPageSize = sheetData[JV.PROP_PAGE_SIZE];
+    } else {
+        actPageSize = (pageData[JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] !== 'A3') ? paperSize : pageData[JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE];
+    }
+    // 这里的逻辑是:如果初始设置为A3的模板,表示为固化显示(未来可能会有其他的标记来处理,目前先这样)
+    const paperSizeIdx = JV.PAGES_SIZE_STR.indexOf(actPageSize);
     let pStr = '';
     if (paperSizeIdx >= 0) {
         pStr = 'paperSize="' + JV.PAGES_SIZE_IDX[paperSizeIdx] + '"';
@@ -1675,6 +1682,7 @@ const excelExportUtil = {
                 }
                 newPagePos[i][JV.NODE_PAGE_SIZE] = pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE];
                 pageItem[JV.PAGE_SPECIAL_MERGE_POS] = newPagePos[i];
+                pageItem[JV.PROP_PAGE_SIZE] = pageDataArray[i][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE];
                 newPageData.items.push(pageItem);
                 // 重新分配分页符()------------------
                 if (pageDataArray[i].pageBreaks.length === 1) {

+ 6 - 4
app/public/report/js/rpt_jspdf.js

@@ -49,15 +49,17 @@ const JpcJsPDFHelper = {
         ;
         // let newName = pdfName;
         let pageObj = pageData;
-        let paperSizeIdx = JV.PAGES_SIZE_STR.indexOf(paperSize);
-        let size = JV.PAGES_SIZE[paperSizeIdx];
+        const actPageSize = (pageData[JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] !== 'A3') ? paperSize : pageData[JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE];
+        // let paperSizeIdx = JV.PAGES_SIZE_STR.indexOf(actPageSize);
+        // let size = JV.PAGES_SIZE[paperSizeIdx];
         let orientation = '';
         if (pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][0] > pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][1]) {
             orientation = 'landscape';
         } else {
             orientation = 'portrait';
         }
-        let doc = me.initialize(orientation, 'pt', paperSize.toLowerCase());
+        // let doc = me.initialize(orientation, 'pt', paperSize.toLowerCase());
+        let doc = me.initialize(orientation, 'pt', actPageSize.toLowerCase());
         doc.setFont("SmartSimsun", "normal"); //目前只考虑宋体
 
         function private_getIniPageMergeBorder(mergedBand) {
@@ -87,7 +89,7 @@ const JpcJsPDFHelper = {
         if (pageObj && pageObj.items.length > 0 ) {
             for(let i = 0; i < pageObj.items.length; i++) {
                 if (i > 0) {
-                    doc.addPage(paperSize.toLowerCase(), orientation);
+                    doc.addPage(actPageSize.toLowerCase(), orientation);
                 }
                 let ctx = doc.canvas.getContext("2d");
                 let page = pageObj.items[i],

+ 1 - 0
app/reports/rpt_component/jpc_ex.js

@@ -364,6 +364,7 @@ JpcExSrv.prototype.createNew = function() {
             rst[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME];
             rst[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE] = JpcCommonHelper.getPageSize(rptTpl);
             rst[JV.NODE_PAGE_INFO][JV.NODE_MARGINS] = rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS];
+            rst[JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE];
             rst.items = [];
             let bands = JpcBand.createNew(rptTpl, defProperties);
             try {