Tony Kang 1 year ago
parent
commit
55d6aa7a6c

+ 16 - 1
app/public/report/js/rpt_main.js

@@ -872,7 +872,10 @@ let rptControlObj = {
                 const singlePage = true;
                 let role_rel_list = signatureRelArr[currentIndex];
                 // await excelExportUtil.exportExcel(pageDataArr[currentIndex], pageSize, rptName, singlePage, null, null, ROLE_REL_LIST, null);
+                const dtlSignCells = [];
+                filterSignCells(pageDataArr[currentIndex], dtlSignCells, null, null, PAGE_SHOW.isTextSignature, false);
                 await excelExportUtil.exportExcel(pageDataArr[currentIndex], pageSize, rptName, singlePage, null, null, role_rel_list, null, getStageStatus() !== 3);
+                restoreSignCells(pageDataArr[currentIndex], dtlSignCells, null, null, PAGE_SHOW.isTextSignature, false);
             }
         };
         const _splitDownload = async (currentIndex) => {
@@ -936,7 +939,11 @@ let rptControlObj = {
                 }
             }
         };
+        const ttlDtlSignCells = [];
         for (let idx = 0; idx < pageDataArr.length; idx++) {
+            const dtlSignCells = [];
+            ttlDtlSignCells.push(dtlSignCells);
+            filterSignCells(pageDataArr[idx], dtlSignCells, null, null, PAGE_SHOW.isTextSignature, false);
             let roleRel = signatureRelArr[idx];
             ttlRoleAmt += roleRel.length;
             pageDataArr[idx][JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = rpt_names[idx];
@@ -956,7 +963,10 @@ let rptControlObj = {
                 rptRoleRelArr = rptRoleRelArr.concat([pageDataArr[idx].items[0][JV.PROP_WATERMARK_CELLS][0].signature_name]);
             }
         }
-        excelExportUtil.exportExcelInOneBook(pageDataArr, pageSize, TENDER_NAME, rptRoleRelArr, null, getStageStatus() !== 3);
+        await excelExportUtil.exportExcelInOneBook(pageDataArr, pageSize, TENDER_NAME, rptRoleRelArr, null, getStageStatus() !== 3);
+        for (let idx = 0; idx < pageDataArr.length; idx++) {
+            restoreSignCells(pageDataArr[idx], ttlDtlSignCells[idx], null, null, PAGE_SHOW.isTextSignature, false);
+        }
     },
 
     getExcel_New: async function (isOneBook) {
@@ -1311,6 +1321,7 @@ let rptControlObj = {
 };
 
 function downloadPDFReport(pageDataArr, pageSize, rpt_names, signatureRelArr, signatureRelInfo, refRptTplIds, STAGE_AUDIT) {
+    const ttlDtlSignCells = [];
     rptControlObj.currentDownloadIdx = 0;
     const private_download = function(newPageDataArr, new_rpt_names) {
         if (rptControlObj.currentDownloadIdx < newPageDataArr.length) {
@@ -1353,6 +1364,7 @@ function downloadPDFReport(pageDataArr, pageSize, rpt_names, signatureRelArr, si
                 //*/
                 // 已验证拆分ok
             }
+            restoreSignCells(newPageDataArr[rptControlObj.currentDownloadIdx - 1], ttlDtlSignCells[rptControlObj.currentDownloadIdx - 1], null, null, PAGE_SHOW.isTextSignature, false);
             if (rptControlObj.currentDownloadIdx < newPageDataArr.length) setTimeout(private_download(newPageDataArr, new_rpt_names), 2000);
         }
     };
@@ -1360,6 +1372,9 @@ function downloadPDFReport(pageDataArr, pageSize, rpt_names, signatureRelArr, si
     let picPaths = [], dummyPicAmt = 0, dummyCells = [], dupPicPath = [], dupPicCell = [];
     // 1. 先找有没有dummy
     pageDataArr.forEach((pageData, pgIdx) => {
+        const dtlSignCells = [];
+        ttlDtlSignCells.push(dtlSignCells);
+        filterSignCells(pageData, dtlSignCells, null, null, PAGE_SHOW.isTextSignature, false);
         for (let page of pageData.items) {
             for (let dCell of page.signature_cells) {
                 if (dCell.signature_name.indexOf('dummy_pic') >= 0) {

+ 3 - 0
app/public/report/js/rpt_preview_common.js

@@ -80,12 +80,15 @@ async function printPageLoading() {
                 let multiRptData = result.data;
                 for (let idx = 0; idx < multiRptData.length; idx++) {
                     let pageData = multiRptData[idx];
+                    const dtlSignCells = [];
+                    filterSignCells(pageData, dtlSignCells, null, null, isTextSignature, false);
                     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, closeWaterMark);
+                    restoreSignCells(pageData, dtlSignCells, null, null, isTextSignature, false);
                     let orientation = "纵向";
                     showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, orientation, orgPixelSize);
                 }

+ 89 - 0
app/public/report/js/rpt_public.js

@@ -237,3 +237,92 @@ function getHttpBlobText(url) {
         xhr.send();
     });
 }
+
+function filterSignCells(pageObj, bkSignCells, bkTxtSignCells, bkPicSignCells, isTextSignature = false, isCloseArchive = false) {
+    if (isTextSignature) {
+        pageObj.items.forEach((pageItem) => {
+            const dtlSignCells = [];
+            bkSignCells.push(dtlSignCells);
+            for (let sCellIdx = pageItem.signature_cells.length - 1; sCellIdx >= 0; sCellIdx--) {
+                let sCell = pageItem.signature_cells[sCellIdx];
+                if (sCell.signature_name.indexOf('dummy_pic') < 0) {
+                    dtlSignCells.push(sCell);
+                    pageItem.signature_cells.splice(sCellIdx, 1);
+                    if (isCloseArchive) {
+                        // 如果还有closeArchiveSignature标记,那么不显示文本文档(只是清除匹配cell的Value,后续需要恢复)
+                        const cCell = pageItem.cells.find(cell => cell.area.Left === sCell.area.Left && cell.area.Top === sCell.area.Top && cell.Value === sCell.Value);
+                        if (cCell) {
+                            bkTxtSignCells.push({bkCell: cCell, bkValue: cCell.Value});
+                            cCell.Value = '';
+                        }
+                    }
+                } else if (isCloseArchive) {
+                    // 这个跟上面的判断属性不同,是orgArea(签章的)
+                    for (let cIdx = pageItem.cells.length - 1; cIdx >= 0; cIdx--) {
+                        const cCell = pageItem.cells[cIdx];
+                        if (cCell.area.Left === sCell.orgArea.Left && cCell.area.Right === sCell.orgArea.Right &&
+                            cCell.area.Top === sCell.orgArea.Top && cCell.area.Bottom === sCell.orgArea.Bottom &&
+                            cCell.Value !== '') {
+                            bkTxtSignCells.push({bkCell: cCell, bkValue: cCell.Value});
+                            cCell.Value = '';
+                            break;
+                        }
+                    }
+                }
+            }
+        });
+    } else if (isCloseArchive) {
+        pageObj.items.forEach((pageItem, pageIdx) => {
+            const dtlSignCells = [];
+            const dtlDummyCells = [];
+            bkSignCells.push(dtlSignCells);
+            bkPicSignCells.push(dtlDummyCells);
+            for (let sCellIdx = pageItem.signature_cells.length - 1; sCellIdx >= 0; sCellIdx--) {
+                let sCell = pageItem.signature_cells[sCellIdx];
+                if (sCell.signature_name.indexOf('dummy_pic') < 0) {
+                    // IMPORTANT: 所有不是dummy_pic的签名都处理,不用管用户有没有真实选择签名
+                    dtlSignCells.push(sCell);
+                    pageItem.signature_cells.splice(sCellIdx, 1);
+                    // 还得加一个dummy cell,处理边框用的
+                    const newCell = {
+                        font: 'Footer',
+                        control: sCell.control,
+                        style: sCell.style,
+                        Value: '',
+                        area: { Left: sCell.area.Left, Right: sCell.area.Right, Top: sCell.area.Top, Bottom: sCell.area.Bottom },
+                    };
+                    dtlDummyCells.push(newCell);
+                    pageItem.cells.push(newCell);
+                }
+            }
+        });
+    }
+}
+
+function restoreSignCells(pageObj, bkSignCells, bkTxtSignCells, bkPicSignCells) {
+    if (bkSignCells && pageObj.items.length === bkSignCells.length) {
+        pageObj.items.forEach((pageItem, pageIdx) => {
+            bkSignCells[pageIdx].forEach((srcCell) => {
+                pageItem.signature_cells.push(srcCell);
+            });
+            bkSignCells[pageIdx] = null;
+        });
+        bkSignCells.splice(0);
+    }
+    if (bkTxtSignCells && bkTxtSignCells.length) {
+        bkTxtSignCells.forEach(txtCellBkObj => {
+            txtCellBkObj.bkCell.Value = txtCellBkObj.bkValue;
+        });
+        bkTxtSignCells.splice(0);
+    }
+    if (bkPicSignCells && bkPicSignCells.length === pageObj.items.length) {
+        pageObj.items.forEach((pageItem, pageIdx) => {
+            bkPicSignCells[pageIdx].forEach((dummyCell) => {
+                const idx = pageItem.cells.indexOf(dummyCell);
+                if (idx >= 0) pageItem.cells.splice(idx, 1);
+            });
+            bkPicSignCells[pageIdx] = null;
+        });
+        bkPicSignCells.splice(0);
+    }
+}