Tony Kang 2 ヶ月 前
コミット
5e96bf8ee4
2 ファイル変更28 行追加45 行削除
  1. 24 42
      app/public/report/js/rpt_jsexcel.js
  2. 4 3
      app/public/report/js/rpt_signature.js

+ 24 - 42
app/public/report/js/rpt_jsexcel.js

@@ -584,7 +584,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
         if (typeof cell[JV.PROP_FONT] === 'string') {
             sheetFont = pageData[JV.NODE_FONT_COLLECTION][cell[JV.PROP_FONT]];
         } else {
-            sheetFont = cell[JV.PROP_FONT];
+            sheetFont = cell[JV.PROP_FONT] || pageData[JV.NODE_FONT_COLLECTION]['Content'];
         }
         for (let i = 0; i < stylesObj.fonts.length; i++) {
             const font = stylesObj.fonts[i];
@@ -756,6 +756,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
             fontAngle = parseInt(pageData[JV.NODE_FONT_COLLECTION][cell[JV.PROP_FONT]].FontAngle);
         } else {
             fontAngle = parseInt(cell[JV.PROP_FONT].FontAngle);
+            // fontAngle = parseInt(cell[JV.PROP_FONT]?.FontAngle || 0);
         }
 
         const borderId = private_getBorderId(cell);
@@ -1332,7 +1333,8 @@ function _checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, roleRel,
                                     if (signatureCell.isStamp) {
                                         //签章不能用role的图片!!!
                                         let sPObj = _getDupPicPath(signatureCell.path);
-                                        if (sPObj !== null && isSinglePage) { // 只有在isSinglePage为true时,才需要优化签名
+                                        // if (sPObj !== null && isSinglePage) { // 只有在isSinglePage为true时,才需要优化签名
+                                        if (sPObj !== null && (isSinglePage || signatureCell.isStamp)) { // 但感觉实际上allInOneBook的isStamp情况下,也需要优化签名
                                             signatureCell.signature_name = sPObj.signature_name; // 重点,如果有相同路径的,修改signature_name!
                                             rst = true;
                                         } else {
@@ -1642,31 +1644,32 @@ const excelExportUtil = {
                 for (let j = 0; j < pageDataArray[i].items.length; j++) {
                     maxY = 0;
                     minY = 100000;
-                    if (pageDataArray[i].items[j][JV.PAGE_SPECIAL_MERGE_POS]) {
-                        let pos = pageDataArray[i].items[j][JV.PAGE_SPECIAL_MERGE_POS][JV.PROP_TOP][0] + offsetY;
+                    const currentPage = pageDataArray[i].items[j];
+                    if (currentPage[JV.PAGE_SPECIAL_MERGE_POS]) {
+                        let pos = currentPage[JV.PAGE_SPECIAL_MERGE_POS][JV.PROP_TOP][0] + offsetY;
                         mergeBand[JV.PROP_TOP].push(pos);
-                        pos = pageDataArray[i].items[j][JV.PAGE_SPECIAL_MERGE_POS][JV.PROP_BOTTOM][0] + offsetY;
+                        pos = currentPage[JV.PAGE_SPECIAL_MERGE_POS][JV.PROP_BOTTOM][0] + offsetY;
                         mergeBand[JV.PROP_BOTTOM].push(pos);
-                    } else if (pageDataArray[i].items[j][JV.PROP_PAGE_MERGE_BORDER]) {
-                        let pos = pageDataArray[i].items[j][JV.PROP_PAGE_MERGE_BORDER][JV.PROP_TOP] + offsetY;
+                    } else if (currentPage[JV.PROP_PAGE_MERGE_BORDER]) {
+                        let pos = currentPage[JV.PROP_PAGE_MERGE_BORDER][JV.PROP_TOP] + offsetY;
                         mergeBand[JV.PROP_TOP].push(pos);
-                        pos = pageDataArray[i].items[j][JV.PROP_PAGE_MERGE_BORDER][JV.PROP_BOTTOM] + offsetY;
+                        pos = currentPage[JV.PROP_PAGE_MERGE_BORDER][JV.PROP_BOTTOM] + offsetY;
                         mergeBand[JV.PROP_BOTTOM].push(pos);
                     } else if (pageDataArray[i][JV.BAND_PROP_MERGE_BAND]) {
                         mergeBand[JV.PROP_TOP].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_TOP] + offsetY);
                         mergeBand[JV.PROP_BOTTOM].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_BOTTOM] + offsetY);
                     }
                     // 1.2.1 重新设置普通cells的Top Bottom坐标
-                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_CELLS]);
-                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_INTERACT_CELLS]);
+                    checkAndResetCellYPos(currentPage[JV.PROP_CELLS]);
+                    checkAndResetCellYPos(currentPage[JV.PROP_INTERACT_CELLS]);
                     // 1.2.2 重新设置电子签名cells的Top Bottom坐标
-                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_SIGNATURE_CELLS]);
+                    checkAndResetCellYPos(currentPage[JV.PROP_SIGNATURE_CELLS]);
                     // 1.2.3 重新设置电子签名日期cells的Top Bottom坐标
-                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_SIGNATURE_DATE_CELLS]);
+                    checkAndResetCellYPos(currentPage[JV.PROP_SIGNATURE_DATE_CELLS]);
                     // 1.2.4 重置电子签名审核意见cells的Top Bottom坐标
-                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_SIGNATURE_AUDIT_CELLS]);
+                    checkAndResetCellYPos(currentPage[JV.PROP_SIGNATURE_AUDIT_CELLS]);
                     // 1.2.5 重置水印的Top Bottom坐标
-                    checkAndResetCellYPos(pageDataArray[i].items[j][JV.PROP_WATERMARK_CELLS]);
+                    checkAndResetCellYPos(currentPage[JV.PROP_WATERMARK_CELLS]);
 
                     const bottomGap = Math.round((pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][1] - parseFloat(pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_MARGINS][JV.PROP_BOTTOM]) / 2.54) * DPI) - maxY;
                     offsetY += (maxY - minY);
@@ -1682,40 +1685,19 @@ const excelExportUtil = {
                 const pageItem = {};
                 pageItem[JV.PROP_PAGE_SEQ] = i + 1;
                 pageItem[JV.PROP_CELLS] = [];
-                for (let j = 0; j < pageDataArray[i].items.length; j++) {
-                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_CELLS].length; k++) {
-                        pageItem[JV.PROP_CELLS].push(pageDataArray[i].items[j][JV.PROP_CELLS][k]);
-                    }
-                }
                 pageItem[JV.PROP_INTERACT_CELLS] = [];
-                for (let j = 0; j < pageDataArray[i].items.length; j++) {
-                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_INTERACT_CELLS].length; k++) {
-                        pageItem[JV.PROP_INTERACT_CELLS].push(pageDataArray[i].items[j][JV.PROP_INTERACT_CELLS][k]);
-                    }
-                }
                 pageItem[JV.PROP_SIGNATURE_CELLS] = [];
-                for (let j = 0; j < pageDataArray[i].items.length; j++) {
-                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_SIGNATURE_CELLS].length; k++) {
-                        pageItem[JV.PROP_SIGNATURE_CELLS].push(pageDataArray[i].items[j][JV.PROP_SIGNATURE_CELLS][k]);
-                    }
-                }
                 pageItem[JV.PROP_SIGNATURE_DATE_CELLS] = [];
-                for (let j = 0; j < pageDataArray[i].items.length; j++) {
-                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_SIGNATURE_DATE_CELLS].length; k++) {
-                        pageItem[JV.PROP_SIGNATURE_DATE_CELLS].push(pageDataArray[i].items[j][JV.PROP_SIGNATURE_DATE_CELLS][k]);
-                    }
-                }
                 pageItem[JV.PROP_SIGNATURE_AUDIT_CELLS] = [];
-                for (let j = 0; j < pageDataArray[i].items.length; j++) {
-                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_SIGNATURE_AUDIT_CELLS].length; k++) {
-                        pageItem[JV.PROP_SIGNATURE_AUDIT_CELLS].push(pageDataArray[i].items[j][JV.PROP_SIGNATURE_AUDIT_CELLS][k]);
-                    }
-                }
                 pageItem[JV.PROP_WATERMARK_CELLS] = [];
                 for (let j = 0; j < pageDataArray[i].items.length; j++) {
-                    for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_WATERMARK_CELLS].length; k++) {
-                        pageItem[JV.PROP_WATERMARK_CELLS].push(pageDataArray[i].items[j][JV.PROP_WATERMARK_CELLS][k]);
-                    }
+                    const currentPage = pageDataArray[i].items[j];
+                    pageItem[JV.PROP_CELLS].push(...(currentPage[JV.PROP_CELLS] || []));
+                    pageItem[JV.PROP_INTERACT_CELLS].push(...(currentPage[JV.PROP_INTERACT_CELLS] || []));
+                    pageItem[JV.PROP_SIGNATURE_CELLS].push(...(currentPage[JV.PROP_SIGNATURE_CELLS] || []));
+                    pageItem[JV.PROP_SIGNATURE_DATE_CELLS].push(...(currentPage[JV.PROP_SIGNATURE_DATE_CELLS] || []));
+                    pageItem[JV.PROP_SIGNATURE_AUDIT_CELLS].push(...(currentPage[JV.PROP_SIGNATURE_AUDIT_CELLS] || []));
+                    pageItem[JV.PROP_WATERMARK_CELLS].push(...(currentPage[JV.PROP_WATERMARK_CELLS] || []));
                 }
                 newPagePos[i][JV.NODE_PAGE_SIZE] = pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE];
                 pageItem[JV.PAGE_SPECIAL_MERGE_POS] = newPagePos[i];

+ 4 - 3
app/public/report/js/rpt_signature.js

@@ -1507,8 +1507,9 @@ function resetStampSignature(pageData, roleRelList, checkAudit = false, stg_audi
                                             }
                                             // 签字信息中如果有签章位置信息,则直接用位置信息
                                             let signatureArea;
-                                            if (role_rel.areaData && role_rel.areaData[signType]){
-                                                signatureArea =  role_rel.areaData[signType]
+                                            if (role_rel.areaData && role_rel.areaData[signType]) {
+                                                // signatureArea = role_rel.areaData[signType];
+                                                signatureArea = JSON.parse(JSON.stringify(role_rel.areaData[signType])); // 这里要重新整理一份新的,否则在导出到同一页面的时候会重合
                                             }
                                             const newStampCell = {
                                                 signature_name: JV.SIGNATURE_NAME_DUMMY,
@@ -1517,7 +1518,7 @@ function resetStampSignature(pageData, roleRelList, checkAudit = false, stg_audi
                                                 path: stampPath,
                                                 isStamp: true,
                                                 maxRect,
-                                                orgArea: sCell.area,
+                                                orgArea: JSON.parse(JSON.stringify(sCell.area)),
                                                 area: signatureArea || {Left: sCell.area.Left, Right: sCell.area.Right, Top: sCell.area.Top, Bottom: sCell.area.Bottom},
                                                 signatureName: role_rel.signature_name, // 节点名称
                                                 signType, // 签章信息