Kaynağa Gözat

当前期的审批通过时间问题

TonyKang 3 yıl önce
ebeveyn
işleme
bc70d5506b

+ 3 - 0
app/controller/report_archive_controller.js

@@ -104,9 +104,12 @@ module.exports = app => {
             if (archiveEncryptions.length > 0) {
                 archiveEncryptionList = JSON.parse(archiveEncryptions[0].content);
             }
+            const lastAuditor = await ctx.service.stageAudit.getLastestAuditor(params.stgId, params.stgTimes, auditConst.stage.status.checked);
+
             ctx.body = {
                 data: archiveList,
                 encryptionData: archiveEncryptionList,
+                lastAuditor,
             };
         }
 

+ 77 - 1
app/controller/report_controller.js

@@ -133,7 +133,7 @@ module.exports = app => {
                 if (stage) {
                     lastAuditor = await ctx.service.stageAudit.getLastestAuditor(ctx.stage.id, ctx.stage.times, auditConst.stage.status.checked);
                 } else {
-                    lastAuditor = stageList.length > 0 ? await ctx.service.stageAudit.getLastestAuditor(stageList[0].id, stageList[0].times, auditConst.stage.status.checked) : null;
+                    lastAuditor = stageList.length > 0 ? await ctx.service.stageAudit.getLastestAuditor(stageList[stageList.length - 1].id, stageList[0].times, auditConst.stage.status.checked) : null;
                 }
                 let archiveList = [];
                 if (stage) {
@@ -550,6 +550,7 @@ module.exports = app => {
             await this.ctx.helper.recursiveMkdirSync(this.app.baseDir + '/app/public/download');
 
             const runnableRst = [];
+            /*
             for (let idx = 0; idx < pageRstArr.length; idx++) {
                 let roleRel = null;
                 for (const roleR of roleRelArr) {
@@ -566,6 +567,28 @@ module.exports = app => {
                 }
                 runnableRst.push(getExcelByPageData(pageRstArr[idx], params.rpt_names[idx], roleRel));
             }
+            /*/
+            for (let pageRst of pageRstArr) {
+                // _chkIfNeedBreakPage(pageRst);
+            }
+            const pageBrkAmt = 300;
+            const newRptNames = []; // 这个为导出PDF控制分页用
+            const newPageDataRst = _resetPageDataByBreaks(pageRstArr, pageBrkAmt, params.rpt_names, newRptNames);
+            for (let idx = 0; idx < newPageDataRst.length; idx++) {
+                let roleRel = null;
+                for (const roleR of roleRelArr) {
+                    if (roleR.rpt_id === params.rpt_ids[idx]) {
+                        roleRel = JSON.parse(roleR.rel_content);
+                        break;
+                    }
+                }
+                if (params.stage_status === 3) {
+                    mergeSignAudit(newPageDataRst[idx], roleRel, stgAudit);
+                    mergeSignDate(newPageDataRst[idx], params.stage_id, roleRel, stgAudit, stgAuditForOrg, stageList);
+                }
+                runnableRst.push(getExcelByPageData(newPageDataRst[idx], newRptNames[idx], roleRel));
+            }
+            // */
             // fsUtil.writeObjToFile(pageRstArr, 'D:/GitHome/temp/计量导出pageArr.js');
             const uuidRst = await Promise.all(runnableRst);
             ctx.body = { data: uuidRst, waterMarkStr };
@@ -613,6 +636,7 @@ module.exports = app => {
             const stageList = (params.stage_status === 3) ? (await ctx.service.stage.getValidStagesShort(params.tender_id)) : [];
 
             const pageRstArr = await getMultiRptsCommon(ctx, params, JV.OUTPUT_TYPE_NORMAL, this.app.baseDir);
+            // fsUtil.writeObjToFile(pageRstArr, 'D:/GitHome/temp/pageRstArrForExcel.js');
             for (const pageRst of pageRstArr) {
                 for (const page of pageRst.items) {
                     page[JV.PROP_WATERMARK_CELLS] = [];
@@ -1400,3 +1424,55 @@ function _getSignDateDftName() {
     return '    年  月  日';
 }
 
+function _chkIfNeedBreakPage(pageData) {
+    let rst = -1, hasPic = false, picSize = 0;
+    const picKeys = [];
+    // fs.statSync(`${filesPath}${file}`).size
+    for (let pi = 0; pi < pageData.items.length; pi++) {
+        // 每页判断
+        for (let ci = 0; ci < pageData.items[pi][JV.PROP_SIGNATURE_CELLS].length; ci++) {
+            const picPath = pageData.items[pi][JV.PROP_SIGNATURE_CELLS][ci].path;
+            if (picPath && picPath.indexOf('/sign') < 0 && picKeys.indexOf(picPath) < 0) {
+                picKeys.push(picPath);
+                hasPic = true;
+            }
+            // signature_cells PROP_SIGNATURE_CELLS
+        }
+    }
+    return rst;
+}
+
+function _resetPageDataByBreaks(pageDataArr, breakAmt, rpt_names, newRptNames) {
+    const rst = [];
+    for (let pi = 0; pi < pageDataArr.length; pi++) {
+        const pageItem = pageDataArr[pi];
+        const currentRptName = rpt_names[pi];
+        if (pageItem.items.length > breakAmt) {
+            let pa = Math.floor(pageItem.items.length / breakAmt);
+            if (pageItem.items.length % breakAmt > 0) {
+                pa++;
+            }
+            for (let idx = 0; idx < pa; idx++) {
+                const newPageDataObj = { items: [] };
+                // newPageDataObj[JV.NODE_PAGE_INFO] = JSON.parse(JSON.stringify(pageItem[JV.NODE_PAGE_INFO]));
+                newPageDataObj[JV.NODE_PAGE_INFO] = pageItem[JV.NODE_PAGE_INFO];
+                // newPageDataObj[JV.BAND_PROP_MERGE_BAND] = JSON.parse(JSON.stringify(pageItem[JV.BAND_PROP_MERGE_BAND]));
+                newPageDataObj[JV.BAND_PROP_MERGE_BAND] = pageItem[JV.BAND_PROP_MERGE_BAND];
+
+                newPageDataObj[JV.NODE_FONT_COLLECTION] = pageItem[JV.NODE_FONT_COLLECTION];
+                newPageDataObj[JV.NODE_STYLE_COLLECTION] = pageItem[JV.NODE_STYLE_COLLECTION];
+                newPageDataObj[JV.NODE_CONTROL_COLLECTION] = pageItem[JV.NODE_CONTROL_COLLECTION];
+
+                for (let dIdx = idx * breakAmt; dIdx < (Math.min((idx + 1) * breakAmt, pageItem.items.length)); dIdx++) {
+                    newPageDataObj.items.push(pageItem.items[dIdx]);
+                }
+                rst.push(newPageDataObj);
+                newRptNames.push(currentRptName + '_' + (idx + 1));
+            }
+        } else {
+            rst.push(pageItem);
+            newRptNames.push(currentRptName);
+        }
+    }
+    return rst;
+};

+ 3 - 2
app/view/report/index.ejs

@@ -262,7 +262,7 @@
 <script>
     const tenders = JSON.parse('<%- JSON.stringify(tenderList) %>');
     let ARCHIVE_LIST = JSON.parse('<%- JSON.stringify(archiveList) %>');
-    const LAST_AUDITOR = JSON.parse('<%- JSON.stringify(lastAuditor) %>');
+    let LAST_AUDITOR = JSON.parse('<%- JSON.stringify(lastAuditor) %>');
     const category = JSON.parse('<%- JSON.stringify(categoryData) %>');
     const auditConst = JSON.parse('<%- JSON.stringify(auditConst) %>');
     const ledgerAuditConst = JSON.parse('<%- JSON.stringify(ledgerAuditConst) %>');
@@ -552,12 +552,13 @@
                 break;
             }
         }
-        let params = {prjId: PROJECT_ID, stgId: current_stage_id};
+        let params = {prjId: PROJECT_ID, stgId: current_stage_id, stgTimes: current_stage_times, stgStatus: current_stage_status};
         $.bootstrapLoading.start();
         CommonAjax.postXsrfEx("/tender/report_api/getReportArchive", params, 10000, true, getCookie('csrfToken_j'),
             function(result){
                 $.bootstrapLoading.end();
                 ARCHIVE_LIST = result.data;
+                LAST_AUDITOR = result.lastAuditor;
                 buildStageSelection();
                 setupSignature();
                 zTreeOprObj.refreshNodes();