|
@@ -434,6 +434,10 @@ module.exports = app => {
|
|
|
);
|
|
|
});
|
|
|
}
|
|
|
+ const stgAudit = (params.stage_status === 3) ? (await ctx.service.stageAudit.getStageAudit(params.stage_id, params.stage_times)) : [];
|
|
|
+ const stgAuditForOrg = (params.stage_status === 3) ? (await ctx.service.stageAudit.getStageAudit(params.stage_id, 1)) : [];
|
|
|
+ const stageList = (params.stage_status === 3) ? (await ctx.service.stage.getValidStagesShort(params.tender_id)) : [];
|
|
|
+
|
|
|
const roleRelArr = (params.stage_status === 3) ? (await ctx.service.roleRptRel.getRoleRptRelByDetailIds(params.tender_id, params.rpt_ids, params.stage_id)) : [];
|
|
|
// const roleRel = (params.stage_status === 3) ? (await ctx.service.roleRptRel.getRoleRptRelByDetailIds(params.tender_id, params.rpt_tpl_id)) : [];
|
|
|
const pageRstArr = await getMultiRptsCommon(ctx, params, JV.OUTPUT_TYPE_NORMAL, this.app.baseDir);
|
|
@@ -463,6 +467,8 @@ module.exports = app => {
|
|
|
}
|
|
|
// console.log('roleRel.rel_content: ' + roleRel.rel_content);
|
|
|
// fsUtil.writeObjToFile(pageRstArr, 'D:/GitHome/temp/testBuiltPageResult.jsp');
|
|
|
+ mergeSignAudit(pageRstArr[idx], roleRel, stgAudit);
|
|
|
+ mergeSignDate(pageRstArr[idx], params.stage_id, roleRel, stgAudit, stgAuditForOrg, stageList);
|
|
|
runnableRst.push(getExcelByPageData(pageRstArr[idx], params.rpt_names[idx], roleRel));
|
|
|
}
|
|
|
// fsUtil.writeObjToFile(pageRstArr, 'D:/GitHome/temp/计量导出pageArr.js');
|
|
@@ -486,6 +492,10 @@ module.exports = app => {
|
|
|
});
|
|
|
}
|
|
|
const roleRelArr = (params.stage_status === 3) ? (await ctx.service.roleRptRel.getRoleRptRelByDetailIds(params.tender_id, params.rpt_ids, params.stage_id)) : [];
|
|
|
+ const stgAudit = (params.stage_status === 3) ? (await ctx.service.stageAudit.getStageAudit(params.stage_id, params.stage_times)) : [];
|
|
|
+ const stgAuditForOrg = (params.stage_status === 3) ? (await ctx.service.stageAudit.getStageAudit(params.stage_id, 1)) : [];
|
|
|
+ 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);
|
|
|
for (const pageRst of pageRstArr) {
|
|
|
for (const page of pageRst.items) {
|
|
@@ -529,6 +539,8 @@ module.exports = app => {
|
|
|
for (const roleR of roleRelArr) {
|
|
|
if (roleR.rpt_id === params.rpt_ids[idx]) {
|
|
|
roleRel = JSON.parse(roleR.rel_content);
|
|
|
+ mergeSignAudit(pageRstArr[idx], roleRel, stgAudit);
|
|
|
+ mergeSignDate(pageRstArr[idx], params.stage_id, roleRel, stgAudit, stgAuditForOrg, stageList);
|
|
|
// 这里要做些电子签名的signature_name转换,以防重名
|
|
|
reAssignSignatureName(pageRstArr[idx], roleRel, params.rpt_names[idx]);
|
|
|
rptRoleRelArr = rptRoleRelArr.concat(roleRel);
|
|
@@ -1227,3 +1239,106 @@ async function createExportRequestJob(ctx) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+function mergeSignAudit(pageData, currRoleRelList, currAuditList) {
|
|
|
+ for (const page of pageData.items) {
|
|
|
+ if (page.signature_audit_cells) {
|
|
|
+ for (const sCell of page.signature_audit_cells) {
|
|
|
+ sCell.Value = ''; // 这里要先清除原有信息
|
|
|
+ for (const role_rel of currRoleRelList) {
|
|
|
+ if (sCell.signature_name === role_rel.signature_name + '_审核意见') {
|
|
|
+ let preDate = '';
|
|
|
+ sCell.Value = '同意'; // 只有选择了签名的,才需要初始化一个默认的意见(之前的逻辑在有多个签名,哪怕只选择了一个,其他的意见都会有默认意见)
|
|
|
+ for (const audit_rel of currAuditList) {
|
|
|
+ if (role_rel.acc_id === audit_rel.aid) {
|
|
|
+ if (audit_rel.end_time > preDate && audit_rel.status === 3) {
|
|
|
+ sCell.Value = audit_rel.opinion;
|
|
|
+ preDate = audit_rel.end_time;
|
|
|
+ }
|
|
|
+ // 不能break,实际会有多个审核意见,以最后一个为准
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function mergeSignDate(pageData, current_stage_id, currRoleRelList, STAGE_AUDIT, STAGE_AUDIT_ORG, STAGE_LIST) {
|
|
|
+ if (currRoleRelList && currRoleRelList.length > 0 && STAGE_AUDIT && STAGE_AUDIT.length > 0) {
|
|
|
+ for (let rridx = 0; rridx < currRoleRelList.length; rridx++) {
|
|
|
+ const role_rel = currRoleRelList[rridx];
|
|
|
+ if (role_rel.sign_date === undefined || role_rel.sign_date === null || role_rel.sign_date === '') {
|
|
|
+ const dftDate = _getSignDateByAllScenarios(role_rel.acc_id, current_stage_id, STAGE_AUDIT, STAGE_AUDIT_ORG, STAGE_LIST);
|
|
|
+ role_rel.sign_date = dftDate;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (const page of pageData.items) {
|
|
|
+ if (page.signature_date_cells) {
|
|
|
+ for (const sCell of page.signature_date_cells) {
|
|
|
+ sCell.Value = _getSignDateDftName();
|
|
|
+ for (const role_rel of currRoleRelList) {
|
|
|
+ if (sCell.signature_name === role_rel.signature_name + '_签字日期') {
|
|
|
+ if (role_rel.sign_date !== '') {
|
|
|
+ if (typeof role_rel.sign_date === 'string') {
|
|
|
+ role_rel.sign_date = new Date(role_rel.sign_date);
|
|
|
+ }
|
|
|
+ sCell.Value = role_rel.sign_date.Format(role_rel.sign_date_format);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function _getSignDateByAllScenarios(userAccId, current_stage_id, STAGE_AUDIT, STAGE_AUDIT_ORG, STAGE_LIST) {
|
|
|
+ let rst = '';
|
|
|
+ let hasAudit = false;
|
|
|
+ for (const stg_audit of STAGE_AUDIT) {
|
|
|
+ if (stg_audit.aid === userAccId) {
|
|
|
+ hasAudit = true;
|
|
|
+ if (stg_audit.status === 3) {
|
|
|
+ rst = stg_audit.end_time;
|
|
|
+ } else {
|
|
|
+ rst = '';
|
|
|
+ }
|
|
|
+ // break; //因为实际业务中会有反复,所以就不break了,一直判断,以最后一个为准
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let isOrgRpt = false;
|
|
|
+ for (const stg of STAGE_LIST) {
|
|
|
+ if (stg.id === current_stage_id) {
|
|
|
+ if (stg.user_id === userAccId) {
|
|
|
+ isOrgRpt = true;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (isOrgRpt && !hasAudit && STAGE_AUDIT_ORG && STAGE_AUDIT_ORG.length > 0) {
|
|
|
+ if (STAGE_AUDIT_ORG[0].begin_time && STAGE_AUDIT_ORG[0].begin_time !== '' && STAGE_AUDIT_ORG[0].begin_time.length > 20) {
|
|
|
+ rst = STAGE_AUDIT_ORG[0].begin_time;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!isOrgRpt && !hasAudit) {
|
|
|
+ // 非审批流程人员以及非原报,则显示期截至时间
|
|
|
+ for (const stg of STAGE_LIST) {
|
|
|
+ if (stg.id === current_stage_id && stg.period) {
|
|
|
+ const period = stg.period.split(' ~ ');
|
|
|
+ if (period.length === 2) {
|
|
|
+ rst = period[1];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+}
|
|
|
+
|
|
|
+function _getSignDateDftName() {
|
|
|
+ return ' 年 月 日';
|
|
|
+}
|
|
|
+
|