|
@@ -432,20 +432,21 @@ module.exports = app => {
|
|
|
const roleRel = await ctx.service.roleRptRel.getRoleRptRelByDetailIds(params.tender_id, params.rpt_tpl_id, params.stage_id); // 新需求中,允许在非审核状态下设置签名
|
|
|
const stgAudit = await ctx.service.stageAudit.getStageAudit(params.stage_id, params.stage_times);
|
|
|
const stgAuditForOrg = await ctx.service.stageAudit.getStageAudit(params.stage_id, 1);
|
|
|
+ const stageList = await ctx.service.stage.getValidStagesShort(params.tender_id);
|
|
|
// console.log('after role stage!');
|
|
|
// console.log(roleRel);
|
|
|
- mergeStampSignature(ctx, params.stage_status, pageRst, roleRel[0]);
|
|
|
- mergeTextSignature(params.isTextSignature, params.stage_status, pageRst, roleRel[0]);
|
|
|
- await encodeSignatureDataUri(roleRel, this.app.baseDir);
|
|
|
- if (params.getPicFlag) {
|
|
|
- await encodeDummySignatureDataUri(pageRst, this.app.baseDir); // 注意草图数据量问题!
|
|
|
- }
|
|
|
const stageFlow = await ctx.service.stageAudit.getAuditGroupByListWithOwner(params.stage_id, params.stage_times);
|
|
|
stageFlow.forEach(x => {
|
|
|
if (!x) return;
|
|
|
x.visible = (!ctx.session.sessionUser.is_admin && ctx.session.sessionProject.page_show.individualSign === 1)
|
|
|
? x.aid === ctx.session.sessionUser.accountId : true;
|
|
|
});
|
|
|
+ mergeStampSignature(ctx, params.stage_status, pageRst, roleRel[0], null, stgAudit, stageList);
|
|
|
+ mergeTextSignature(params.isTextSignature, params.stage_status, pageRst, roleRel[0], stgAudit, stageFlow);
|
|
|
+ await encodeSignatureDataUri(roleRel, this.app.baseDir);
|
|
|
+ if (params.getPicFlag) {
|
|
|
+ await encodeDummySignatureDataUri(pageRst, this.app.baseDir); // 注意草图数据量问题!
|
|
|
+ }
|
|
|
|
|
|
// console.log('encodeSignatureDataUri!');
|
|
|
// fsUtil.writeObjToFile(pageRst, 'D:/GitHome/Temp/testBuiltPageResult2.js');
|
|
@@ -535,7 +536,8 @@ module.exports = app => {
|
|
|
});
|
|
|
// console.log('roleRel: ');
|
|
|
// console.log(roleRel);
|
|
|
- mergeStampSignature(ctx, params.stage_status, pageRstArr, roleRel, params.rpt_ids);
|
|
|
+ const stageList = await ctx.service.stage.getValidStagesShort(params.tender_id);
|
|
|
+ mergeStampSignature(ctx, params.stage_status, pageRstArr, roleRel, params.rpt_ids, stgAudit, stageList);
|
|
|
mergeTextSignature(params.isTextSignature, params.stage_status, pageRstArr, roleRel, params.rpt_ids);
|
|
|
|
|
|
await encodeSignatureDataUri(roleRel, this.app.baseDir);
|
|
@@ -580,9 +582,11 @@ module.exports = app => {
|
|
|
);
|
|
|
});
|
|
|
}
|
|
|
- const stgAudit = (params.stage_status === 3) ? (await ctx.service.stageAudit.getStageAudit(params.stage_id, params.stage_times)) : [];
|
|
|
+ // const stgAudit = (params.stage_status === 3) ? (await ctx.service.stageAudit.getStageAudit(params.stage_id, params.stage_times)) : [];
|
|
|
+ const stgAudit = 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 stageList = (params.stage_status === 3) ? (await ctx.service.stage.getValidStagesShort(params.tender_id)) : [];
|
|
|
+ const stageList = 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)) : [];
|
|
@@ -604,7 +608,7 @@ module.exports = app => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- mergeStampSignature(ctx, params.stage_status, pageRstArr, roleRelArr, params.rpt_ids);
|
|
|
+ mergeStampSignature(ctx, params.stage_status, pageRstArr, roleRelArr, params.rpt_ids, stgAudit, stageList);
|
|
|
mergeTextSignature(params.isTextSignature, params.stage_status, pageRstArr, roleRelArr, params.rpt_ids);
|
|
|
|
|
|
await this.ctx.helper.recursiveMkdirSync(baseDir + '/app/public/download');
|
|
@@ -772,9 +776,9 @@ module.exports = app => {
|
|
|
const roleRelArr = (params.stage_status === 3) ? (await ctx.service.roleRptRel.getRoleRptRelByDetailIds(params.tender_id, params.rpt_ids, params.stage_id)) : [];
|
|
|
// console.log(`baseDir: ${baseDir}`);
|
|
|
// fsUtil.writeObjToFile(roleRelArr, 'D:/GitHome/temp/签名信息.js');
|
|
|
- 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 stgAudit = await ctx.service.stageAudit.getStageAudit(params.stage_id, params.stage_times);
|
|
|
+ const stgAuditForOrg = await ctx.service.stageAudit.getStageAudit(params.stage_id, 1);
|
|
|
+ const stageList = 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');
|
|
@@ -792,7 +796,7 @@ module.exports = app => {
|
|
|
waterMarkStr = await getWatermarkPicData(pageRstArr[0], this.app.baseDir);
|
|
|
}
|
|
|
}
|
|
|
- mergeStampSignature(ctx, params.stage_status, pageRstArr, roleRelArr, params.rpt_ids);
|
|
|
+ mergeStampSignature(ctx, params.stage_status, pageRstArr, roleRelArr, params.rpt_ids, stgAudit, stageList);
|
|
|
mergeTextSignature(params.isTextSignature, params.stage_status, pageRstArr, roleRelArr, params.rpt_ids);
|
|
|
await this.ctx.helper.recursiveMkdirSync(this.app.baseDir + '/app/public/download');
|
|
|
const runnableRst = [];
|
|
@@ -1553,8 +1557,37 @@ function mergeTextSignature(isTxtSignature, status, pageData, singleRoleRel, rpt
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function _chkIfAudit(role_rel, STAGE_AUDIT, STAGE_LIST) {
|
|
|
+ let rst = false;
|
|
|
+ for (const stg_audit of STAGE_AUDIT) {
|
|
|
+ if (role_rel.acc_id === stg_audit.aid) {
|
|
|
+ if (stg_audit.status === 3) {
|
|
|
+ rst = true;
|
|
|
+ } else {
|
|
|
+ rst = false;
|
|
|
+ }
|
|
|
+ // break; //因为实际业务中会有反复,所以就不break了,一直判断,以最后一个为准
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!rst) {
|
|
|
+ // 还有原报需要检测
|
|
|
+ for (const stg_ort_rpt of STAGE_LIST) {
|
|
|
+ if (role_rel.acc_id === stg_ort_rpt.aid) {
|
|
|
+ if (stg_ort_rpt.status === 3) {
|
|
|
+ rst = true;
|
|
|
+ } else {
|
|
|
+ rst = false;
|
|
|
+ }
|
|
|
+ // break; //因为实际业务中会有反复,所以就不break了,一直判断,以最后一个为准
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // rst = true; //测试,未来将屏蔽
|
|
|
+ return rst;
|
|
|
+}
|
|
|
+
|
|
|
// 因机制问题,此方法必须在mergeTextSignature之前调用
|
|
|
-async function mergeStampSignature(ctx, status, pageData, singleRoleRel, rpt_ids) {
|
|
|
+async function mergeStampSignature(ctx, status, pageData, singleRoleRel, rpt_ids, stgAudit, stageList) {
|
|
|
const dupPicPaths = [];
|
|
|
const _getMaxRect = function(page) {
|
|
|
const rect = [100000000, 100000000, 0, 0];
|
|
@@ -1631,7 +1664,7 @@ async function mergeStampSignature(ctx, status, pageData, singleRoleRel, rpt_ids
|
|
|
return rst;
|
|
|
|
|
|
};
|
|
|
- const _mergeSingleStamp = async function(_page, _roleRelList) {
|
|
|
+ const _mergeSingleStamp = async function(_page, _roleRelList, checkAudit = false) {
|
|
|
let roleRelContent = [];
|
|
|
if (_roleRelList && _roleRelList.rel_content !== null && _roleRelList.rel_content !== undefined && _roleRelList.rel_content !== '') {
|
|
|
roleRelContent = JSON.parse(_roleRelList.rel_content);
|
|
@@ -1644,40 +1677,42 @@ async function mergeStampSignature(ctx, status, pageData, singleRoleRel, rpt_ids
|
|
|
const sCell = page.signature_cells[scIdx];
|
|
|
for (const role_rel of roleRelContent) {
|
|
|
if (sCell.signature_name === role_rel.signature_name) {
|
|
|
- if (Array.isArray(role_rel.sign_output) && role_rel.sign_output.length > 0) {
|
|
|
- for (const signType of role_rel.sign_output) {
|
|
|
- switch (signType) {
|
|
|
- case COMPANY_SIGN_STR:
|
|
|
- case PRIVATE_SIGN_STR:
|
|
|
- // 创建一个新的cell
|
|
|
- let stampPath = (signType === COMPANY_SIGN_STR) ? role_rel.company_stamp_path : role_rel.private_stamp_path;
|
|
|
- stampPath = ctx.app.config.fujianOssPath + stampPath;
|
|
|
- if (dupPicPaths.indexOf(stampPath) < 0) {
|
|
|
- dupPicPaths.push(stampPath);
|
|
|
- // await _chkRawPicSizeOSS(ctx, stampPath);
|
|
|
- }
|
|
|
- // 保存在签字信息中的签章信息
|
|
|
- let signatureArea;
|
|
|
- if (role_rel.areaData && role_rel.areaData[signType]) {
|
|
|
- signatureArea = role_rel.areaData[signType];
|
|
|
- }
|
|
|
-
|
|
|
- const newStampCell = {
|
|
|
- signature_name: JV.SIGNATURE_NAME_DUMMY,
|
|
|
- control: sCell.control,
|
|
|
- style: sCell.style,
|
|
|
- path: stampPath,
|
|
|
- isStamp: true,
|
|
|
- maxRect,
|
|
|
- orgArea: sCell.area,
|
|
|
- area: signatureArea || createStampArea(sCell, _page[JV.NODE_CONTROL_COLLECTION], maxRect), // 有签章信息就直接取,没有的话就走原来的逻辑
|
|
|
- signatureName: role_rel.signature_name, // 节点名称
|
|
|
- signType, // 签章信息
|
|
|
- isSaveSignature: !!signatureArea, // 是否有签章位置信息
|
|
|
- };
|
|
|
- newStampCells.push(newStampCell);
|
|
|
- break;
|
|
|
- default: break;
|
|
|
+ if (!checkAudit || _chkIfAudit(role_rel, stgAudit, stageList)) {
|
|
|
+ if (Array.isArray(role_rel.sign_output) && role_rel.sign_output.length > 0) {
|
|
|
+ for (const signType of role_rel.sign_output) {
|
|
|
+ switch (signType) {
|
|
|
+ case COMPANY_SIGN_STR:
|
|
|
+ case PRIVATE_SIGN_STR:
|
|
|
+ // 创建一个新的cell
|
|
|
+ let stampPath = (signType === COMPANY_SIGN_STR) ? role_rel.company_stamp_path : role_rel.private_stamp_path;
|
|
|
+ stampPath = ctx.app.config.fujianOssPath + stampPath;
|
|
|
+ if (dupPicPaths.indexOf(stampPath) < 0) {
|
|
|
+ dupPicPaths.push(stampPath);
|
|
|
+ // await _chkRawPicSizeOSS(ctx, stampPath);
|
|
|
+ }
|
|
|
+ // 保存在签字信息中的签章信息
|
|
|
+ let signatureArea;
|
|
|
+ if (role_rel.areaData && role_rel.areaData[signType]) {
|
|
|
+ signatureArea = role_rel.areaData[signType];
|
|
|
+ }
|
|
|
+
|
|
|
+ const newStampCell = {
|
|
|
+ signature_name: JV.SIGNATURE_NAME_DUMMY,
|
|
|
+ control: sCell.control,
|
|
|
+ style: sCell.style,
|
|
|
+ path: stampPath,
|
|
|
+ isStamp: true,
|
|
|
+ maxRect,
|
|
|
+ orgArea: sCell.area,
|
|
|
+ area: signatureArea || createStampArea(sCell, _page[JV.NODE_CONTROL_COLLECTION], maxRect), // 有签章信息就直接取,没有的话就走原来的逻辑
|
|
|
+ signatureName: role_rel.signature_name, // 节点名称
|
|
|
+ signType, // 签章信息
|
|
|
+ isSaveSignature: !!signatureArea, // 是否有签章位置信息
|
|
|
+ };
|
|
|
+ newStampCells.push(newStampCell);
|
|
|
+ break;
|
|
|
+ default: break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1690,21 +1725,19 @@ async function mergeStampSignature(ctx, status, pageData, singleRoleRel, rpt_ids
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
- if (status === 3) {
|
|
|
- if (pageData instanceof Array) {
|
|
|
- pageData.forEach((dtlPage, index) => {
|
|
|
- let dftRolRel = [];
|
|
|
- const rpt_id = rpt_ids[index];
|
|
|
- for (const roleRel of singleRoleRel) {
|
|
|
- if (roleRel.rpt_id === rpt_id) {
|
|
|
- dftRolRel = roleRel;
|
|
|
- }
|
|
|
+ if (pageData instanceof Array) {
|
|
|
+ pageData.forEach((dtlPage, index) => {
|
|
|
+ let dftRolRel = [];
|
|
|
+ const rpt_id = rpt_ids[index];
|
|
|
+ for (const roleRel of singleRoleRel) {
|
|
|
+ if (roleRel.rpt_id === rpt_id) {
|
|
|
+ dftRolRel = roleRel;
|
|
|
}
|
|
|
- _mergeSingleStamp(dtlPage, dftRolRel);
|
|
|
- });
|
|
|
- } else {
|
|
|
- _mergeSingleStamp(pageData, singleRoleRel);
|
|
|
- }
|
|
|
+ }
|
|
|
+ _mergeSingleStamp(dtlPage, dftRolRel, status !== 3);
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ _mergeSingleStamp(pageData, singleRoleRel, status !== 3);
|
|
|
}
|
|
|
}
|
|
|
|