Browse Source

加强代码强壮性 + TASK#3472

TonyKang 4 years ago
parent
commit
fbcdc352e9

+ 30 - 11
app/controller/report_controller.js

@@ -70,6 +70,15 @@ module.exports = app => {
                 const pageShow = ctx.session.sessionProject.page_show;
                 const tender = ctx.tender;
                 const stage = ctx.stage;
+                let stage_id = -1;
+                let stage_order = -1;
+                let sorder = -1;
+                let stage_times = -1;
+                let stage_status = -1;
+                const treeNodes = await ctx.service.rptTreeNode.getNodesByProjectId([-1, tender.data.project_id]);
+                const custTreeNodes = await ctx.service.rptTreeNodeCust.getCustFoldersByUserId(this.ctx.session.sessionUser.accountId);
+                const custCfg = await ctx.service.rptCustomizeCfg.getCustomizeCfgByUserId('Administrator');
+                const stageList = await ctx.service.stage.getValidStagesShort(tender.id);
                 // console.log('this.ctx.session.sessionUser.accountId: ' + this.ctx.session.sessionUser.accountId);
                 if (stage && stage.status === auditConst.stage.status.uncheck) {
                     // 得判断账号是否在审核人列表中(不含原报)
@@ -83,19 +92,29 @@ module.exports = app => {
                             break;
                         }
                     }
-                    if (!isAudit) {
-                        // throw
+                    if (isAudit) {
+                        throw '未上报!';
+                    }
+                } else {
+                    // 剔除未上报期(审核人(非原报人)才需要判断)
+                    for (let idx = stageList.length - 1; idx >= 0; idx--) {
+                        if (stageList[idx].status === auditConst.stage.status.uncheck) {
+                            if (stageList[idx].auditorList === undefined || stageList[idx].auditorList === null) {
+                                stageList[idx].auditorList = await ctx.service.stageAudit.getAuditors(stageList[idx].id, stageList[idx].times);
+                            }
+                            let isAudit = false;
+                            for (const audit of stageList[idx].auditorList) {
+                                if (audit.aid === this.ctx.session.sessionUser.accountId) {
+                                    isAudit = true;
+                                    break;
+                                }
+                            }
+                            if (isAudit) {
+                                stageList.splice(idx, 1);
+                            }
+                        }
                     }
                 }
-                let stage_id = -1;
-                let stage_order = -1;
-                let sorder = -1;
-                let stage_times = -1;
-                let stage_status = -1;
-                const treeNodes = await ctx.service.rptTreeNode.getNodesByProjectId([-1, tender.data.project_id]);
-                const custTreeNodes = await ctx.service.rptTreeNodeCust.getCustFoldersByUserId(this.ctx.session.sessionUser.accountId);
-                const custCfg = await ctx.service.rptCustomizeCfg.getCustomizeCfgByUserId('Administrator');
-                const stageList = await ctx.service.stage.getValidStagesShort(tender.id);
                 const prjAccList = await ctx.service.projectAccount.getAllAccountByProjectId(tender.data.project_id);
                 const roleList = await ctx.service.signatureRole.getSignatureRolesByTenderId(tender.id);
                 const usedList = await ctx.service.signatureUsed.getSignatureUsedByTenderId(tender.id);

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

@@ -241,6 +241,8 @@ JpcExSrv.prototype.createNew = function() {
                     try {
                         eval(expression);
                     } catch (ex) {
+                        console.log("current expression idx: " + execFmlIdx);
+                        console.log(expression);
                         console.log(ex);
                     }
                 }

+ 19 - 16
app/reports/util/rpt_excel_util.js

@@ -871,23 +871,25 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
                 const styleIdx = private_getStyleId(cells[cIdx]);
                 rowIdx1 = theYPos.indexOf(cells[cIdx][JV.PROP_AREA][JV.PROP_TOP]);
                 colIdx1 = xPos.indexOf(cells[cIdx][JV.PROP_AREA][JV.PROP_LEFT]);
-                let cellObj = rows[rowIdx1 - 1].items[colIdx1 - 1];
-                cellObj.s = styleIdx;
-                cellObj.isBlank = false;
-                if (!(strUtil.isEmptyString(cells[cIdx][JV.PROP_VALUE]))) {
-                    const valIdx = private_getSharedStrIdx(cells[cIdx][JV.PROP_VALUE]);
-                    cellObj.v = valIdx;
-                }
+                if (rowIdx1 <= rows.length) {
+                    let cellObj = rows[rowIdx1 - 1].items[colIdx1 - 1];
+                    cellObj.s = styleIdx;
+                    cellObj.isBlank = false;
+                    if (!(strUtil.isEmptyString(cells[cIdx][JV.PROP_VALUE]))) {
+                        const valIdx = private_getSharedStrIdx(cells[cIdx][JV.PROP_VALUE]);
+                        cellObj.v = valIdx;
+                    }
 
-                rowIdx2 = theYPos.indexOf(cells[cIdx][JV.PROP_AREA][JV.PROP_BOTTOM]);
-                colIdx2 = xPos.indexOf(cells[cIdx][JV.PROP_AREA][JV.PROP_RIGHT]);
-                if ((rowIdx2 - rowIdx1 > 1) || (colIdx2 - colIdx1 > 1)) {
-                    for (let i = 0; i < rowIdx2 - rowIdx1; i++) {
-                        for (let j = 0; j < colIdx2 - colIdx1; j++) {
-                            if (i === 0 && j === 0) continue;
-                            cellObj = rows[rowIdx1 - 1 + i].items[colIdx1 - 1 + j];
-                            cellObj.s = styleIdx;
-                            cellObj.isBlank = true;
+                    rowIdx2 = theYPos.indexOf(cells[cIdx][JV.PROP_AREA][JV.PROP_BOTTOM]);
+                    colIdx2 = xPos.indexOf(cells[cIdx][JV.PROP_AREA][JV.PROP_RIGHT]);
+                    if ((rowIdx2 - rowIdx1 > 1) || (colIdx2 - colIdx1 > 1)) {
+                        for (let i = 0; i < rowIdx2 - rowIdx1; i++) {
+                            for (let j = 0; j < colIdx2 - colIdx1; j++) {
+                                if (i === 0 && j === 0) continue;
+                                cellObj = rows[rowIdx1 - 1 + i].items[colIdx1 - 1 + j];
+                                cellObj.s = styleIdx;
+                                cellObj.isBlank = true;
+                            }
                         }
                     }
                 }
@@ -957,6 +959,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
                 currentPageMergePos = shtItemData[JV.PAGE_SPECIAL_MERGE_POS];
                 currentMergeBorder = shtItemData[JV.PROP_PAGE_MERGE_BORDER];
                 const tmpPos = yMultiPos[i];
+                // console.log(yMultiPos[i]);
                 cellIdx = 0;
                 if (hasSignature && shtItemData[JV.PROP_SIGNATURE_CELLS] && shtItemData[JV.PROP_SIGNATURE_CELLS].length > 0) {
                     // 有签名情况下,还是有必要创建一个dummy cell的(画框用)