|
@@ -172,7 +172,8 @@ let rptSignatureHelper = {
|
|
roleRelObj.type = '流程';
|
|
roleRelObj.type = '流程';
|
|
roleRelObj.flowOrder = order;
|
|
roleRelObj.flowOrder = order;
|
|
roleRelObj.flow_name = `${assName}(协同)`;
|
|
roleRelObj.flow_name = `${assName}(协同)`;
|
|
- roleRelObj.assFlowInfos = []; // 这里动态记录流程的协审信息(含:人名、单位、职位、签字签章、签字日期)
|
|
|
|
|
|
+ roleRelObj.assFlowInfos = []; // 这里动态记录流程的协审信息(含:人名、单位、职位、签字签章、签字日期, 其实相当于另一个完整的roleRel对象)
|
|
|
|
+ roleRelObj.sign_output = [];
|
|
ROLE_REL_LIST.push(roleRelObj);
|
|
ROLE_REL_LIST.push(roleRelObj);
|
|
STAGE_FLOW.forEach(sf => {
|
|
STAGE_FLOW.forEach(sf => {
|
|
if (sf.audit_order === order) {
|
|
if (sf.audit_order === order) {
|
|
@@ -652,7 +653,7 @@ let rptSignatureHelper = {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- resetStampSignature(zTreeOprObj.currentRptPageRst, ROLE_REL_LIST, getStageStatus() !== 3);
|
|
|
|
|
|
+ resetStampSignature(zTreeOprObj.currentRptPageRst, ROLE_REL_LIST, getStageStatus() !== 3, STAGE_AUDIT, LEDGER_LIST);
|
|
rptSignatureHelper.mergeSignDate(zTreeOprObj.currentRptPageRst, ROLE_REL_LIST, true, getStageStatus() !== 3);
|
|
rptSignatureHelper.mergeSignDate(zTreeOprObj.currentRptPageRst, ROLE_REL_LIST, true, getStageStatus() !== 3);
|
|
rptSignatureHelper.mergeSignature(zTreeOprObj.currentRptPageRst, ROLE_REL_LIST, true, getStageStatus() !== 3);
|
|
rptSignatureHelper.mergeSignature(zTreeOprObj.currentRptPageRst, ROLE_REL_LIST, true, getStageStatus() !== 3);
|
|
await rptSignatureHelper.resetDummySignature(zTreeOprObj.currentRptPageRst, ROLE_REL_LIST, getStageStatus() !== 3);
|
|
await rptSignatureHelper.resetDummySignature(zTreeOprObj.currentRptPageRst, ROLE_REL_LIST, getStageStatus() !== 3);
|
|
@@ -888,7 +889,8 @@ let rptSignatureHelper = {
|
|
return rst;
|
|
return rst;
|
|
},
|
|
},
|
|
mergeSignature: function (pageData, currRoleRelList, setPic = false, checkAudit = false) {
|
|
mergeSignature: function (pageData, currRoleRelList, setPic = false, checkAudit = false) {
|
|
- for (const page of pageData.items) {
|
|
|
|
|
|
+ for (let pageIdx = 0; pageIdx < pageData.items.length; pageIdx++) {
|
|
|
|
+ const page = pageData.items[pageIdx];
|
|
if (page.signature_cells) {
|
|
if (page.signature_cells) {
|
|
// const adHocScells = [];
|
|
// const adHocScells = [];
|
|
for (const sCell of page.signature_cells) {
|
|
for (const sCell of page.signature_cells) {
|
|
@@ -897,38 +899,35 @@ let rptSignatureHelper = {
|
|
sCell.pre_path = null;
|
|
sCell.pre_path = null;
|
|
sCell.pic = null;
|
|
sCell.pic = null;
|
|
}
|
|
}
|
|
- for (const role_rel of currRoleRelList) {
|
|
|
|
- if (role_rel.type !== '流程') {
|
|
|
|
- if (!checkAudit || checkAudit && rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
|
|
- // 如果签名者是在审核流程中并已审批通过(个人通过,非期通过),则也需要显示
|
|
|
|
- if (role_rel.signature_name === sCell.signature_name) {
|
|
|
|
- // 处理签章
|
|
|
|
- if (!Array.isArray(role_rel.sign_output)) {
|
|
|
|
- role_rel.sign_output = [];
|
|
|
|
- role_rel.sign_output.push(NORMAL_SIGN_STR);
|
|
|
|
- }
|
|
|
|
- for (const signType of role_rel.sign_output) {
|
|
|
|
- switch (signType) {
|
|
|
|
- case NORMAL_SIGN_STR:
|
|
|
|
- sCell.path = role_rel.sign_path;
|
|
|
|
- sCell.pre_path = role_rel.sign_path;
|
|
|
|
- if (setPic) {
|
|
|
|
- sCell.pic = role_rel.sign_pic; // 有些场景(如:批量归档)需要直接设置签名数据
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
- case COMPANY_SIGN_STR:
|
|
|
|
- case PRIVATE_SIGN_STR:
|
|
|
|
- // 搬到了mergetStamp方法那去处理了
|
|
|
|
- break;
|
|
|
|
- default:
|
|
|
|
|
|
+ for (const role of currRoleRelList) {
|
|
|
|
+ const role_rel = getTheRightRole(role, pageIdx);
|
|
|
|
+ if (!checkAudit || checkAudit && rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
|
|
+ // 如果签名者是在审核流程中并已审批通过(个人通过,非期通过),则也需要显示
|
|
|
|
+ if (role_rel.signature_name === sCell.signature_name) {
|
|
|
|
+ // 处理签章
|
|
|
|
+ if (!Array.isArray(role_rel.sign_output)) {
|
|
|
|
+ role_rel.sign_output = [];
|
|
|
|
+ role_rel.sign_output.push(NORMAL_SIGN_STR);
|
|
|
|
+ }
|
|
|
|
+ for (const signType of role_rel.sign_output) {
|
|
|
|
+ switch (signType) {
|
|
|
|
+ case NORMAL_SIGN_STR:
|
|
|
|
+ sCell.path = role_rel.sign_path;
|
|
|
|
+ sCell.pre_path = role_rel.sign_path;
|
|
|
|
+ if (setPic) {
|
|
|
|
+ sCell.pic = role_rel.sign_pic; // 有些场景(如:批量归档)需要直接设置签名数据
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
|
|
+ case COMPANY_SIGN_STR:
|
|
|
|
+ case PRIVATE_SIGN_STR:
|
|
|
|
+ // 搬到了mergetStamp方法那去处理了
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
- break;
|
|
|
|
}
|
|
}
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- //
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -936,7 +935,7 @@ let rptSignatureHelper = {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- resetDummySignature: async function(pageData, roleRel, ifPushRoleRel = false, checkAudit = false) {
|
|
|
|
|
|
+ resetDummySignature: async function(pageData, roleRels, ifPushRoleRel = false, checkAudit = false) {
|
|
// 备注:计算草图等其他图形需要额外做些处理
|
|
// 备注:计算草图等其他图形需要额外做些处理
|
|
let dummySignIdx = 0;
|
|
let dummySignIdx = 0;
|
|
const stampPicKeys = [], stampPicFeatures = [];
|
|
const stampPicKeys = [], stampPicFeatures = [];
|
|
@@ -948,18 +947,15 @@ let rptSignatureHelper = {
|
|
let passAuditChk = true;
|
|
let passAuditChk = true;
|
|
if (checkAudit) {
|
|
if (checkAudit) {
|
|
passAuditChk = false;
|
|
passAuditChk = false;
|
|
- if (roleRel) {
|
|
|
|
- for (const role_rel of roleRel) {
|
|
|
|
- if (role_rel.type !== '流程') {
|
|
|
|
- if (role_rel.signature_name === signatureCell.signatureName) {
|
|
|
|
- // signatureName(非signature_name)是印章cell特意给的属性,还有isStamp属性
|
|
|
|
- if (rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
|
|
- passAuditChk = true;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
|
|
+ if (roleRels) {
|
|
|
|
+ for (const role of roleRels) {
|
|
|
|
+ const role_rel = getTheRightRole(role, pageIdx);
|
|
|
|
+ if (role_rel.signature_name === signatureCell.signatureName) {
|
|
|
|
+ // signatureName(非signature_name)是印章cell特意给的属性,还有isStamp属性
|
|
|
|
+ if (rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
|
|
+ passAuditChk = true;
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- //
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -984,7 +980,7 @@ let rptSignatureHelper = {
|
|
// 如果签章信息中存在位置信息,则不执行该方法
|
|
// 如果签章信息中存在位置信息,则不执行该方法
|
|
if(!signatureCell.isSaveSignature) _resetStampArea(pageData[JV.NODE_CONTROL_COLLECTION][signatureCell[JV.PROP_CONTROL]], signatureCell, roleRelItem);
|
|
if(!signatureCell.isSaveSignature) _resetStampArea(pageData[JV.NODE_CONTROL_COLLECTION][signatureCell[JV.PROP_CONTROL]], signatureCell, roleRelItem);
|
|
}
|
|
}
|
|
- if (ifPushRoleRel) roleRel.push(roleRelItem);
|
|
|
|
|
|
+ if (ifPushRoleRel) roleRels.push(roleRelItem);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -998,84 +994,82 @@ let rptSignatureHelper = {
|
|
const reg4 = new RegExp('\r', 'g');
|
|
const reg4 = new RegExp('\r', 'g');
|
|
const reg5 = new RegExp('<br/>', 'g');
|
|
const reg5 = new RegExp('<br/>', 'g');
|
|
const reg6 = new RegExp('<br>', 'g');
|
|
const reg6 = new RegExp('<br>', 'g');
|
|
- for (const page of pageData.items) {
|
|
|
|
|
|
+ for (let pageIdx = 0; pageIdx < pageData.items.length; pageIdx++) {
|
|
|
|
+ const page = pageData.items[pageIdx];
|
|
if (page.signature_audit_cells) {
|
|
if (page.signature_audit_cells) {
|
|
for (const sCell of page.signature_audit_cells) {
|
|
for (const sCell of page.signature_audit_cells) {
|
|
sCell.Value = ''; // 这里要先清除原有信息
|
|
sCell.Value = ''; // 这里要先清除原有信息
|
|
- for (const role_rel of currRoleRelList) {
|
|
|
|
- if (role_rel.type !== '流程') {
|
|
|
|
- if (!checkAudit || checkAudit && rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
|
|
- // 如果签名者是在审核流程中并已审批通过(个人通过,非期通过),则也需要显示
|
|
|
|
- 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) {
|
|
|
|
- const isOrAudit = this._chkOrAudit(role_rel.acc_id);
|
|
|
|
- if (audit_rel.end_time > preDate && audit_rel.status === 3 || isOrAudit) {
|
|
|
|
- sCell.Value = audit_rel.opinion;
|
|
|
|
- if (typeof sCell.Value === 'string') {
|
|
|
|
- sCell.Value = sCell.Value.replace(reg1, '|').replace(reg2, '|').replace(reg3, '|').replace(reg4, '|').replace(reg5, '|').replace(reg6, '|');
|
|
|
|
- }
|
|
|
|
- sCell.Value = (sCell.Value === '' && isOrAudit) ? '同意' : sCell.Value;
|
|
|
|
- preDate = audit_rel.end_time;
|
|
|
|
- } else {
|
|
|
|
- sCell.Value = ''; // 如有匹配,但又不能输出,则需要清空
|
|
|
|
|
|
+ for (const role of currRoleRelList) {
|
|
|
|
+ const role_rel = getTheRightRole(role, pageIdx);
|
|
|
|
+ if (!checkAudit || checkAudit && rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
|
|
+ // 如果签名者是在审核流程中并已审批通过(个人通过,非期通过),则也需要显示
|
|
|
|
+ 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) {
|
|
|
|
+ const isOrAudit = this._chkOrAudit(role_rel.acc_id);
|
|
|
|
+ if (audit_rel.end_time > preDate && audit_rel.status === 3 || isOrAudit) {
|
|
|
|
+ sCell.Value = audit_rel.opinion;
|
|
|
|
+ if (typeof sCell.Value === 'string') {
|
|
|
|
+ sCell.Value = sCell.Value.replace(reg1, '|').replace(reg2, '|').replace(reg3, '|').replace(reg4, '|').replace(reg5, '|').replace(reg6, '|');
|
|
}
|
|
}
|
|
- //不能break,实际会有多个审核意见,以最后一个为准
|
|
|
|
|
|
+ sCell.Value = (sCell.Value === '' && isOrAudit) ? '同意' : sCell.Value;
|
|
|
|
+ preDate = audit_rel.end_time;
|
|
|
|
+ } else {
|
|
|
|
+ sCell.Value = ''; // 如有匹配,但又不能输出,则需要清空
|
|
}
|
|
}
|
|
|
|
+ //不能break,实际会有多个审核意见,以最后一个为准
|
|
}
|
|
}
|
|
- break;
|
|
|
|
}
|
|
}
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- // 流程的处理还得看实际数据
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ _setDftDate: function (role_rel, isMergeOrgAlso = false) {
|
|
|
|
+ if (role_rel.acc_id && (role_rel.sign_date === undefined || role_rel.sign_date === null || role_rel.sign_date === '')) {
|
|
|
|
+ let dftDate = _getSignDateByAllScenarios(role_rel.acc_id);
|
|
|
|
+ if (dftDate !== '' && dftDate.length >= 10) {
|
|
|
|
+ dftDate = new Date(dftDate); // 不Format,保留时分秒
|
|
|
|
+ } else if (dftDate === '') {
|
|
|
|
+ if (current_stage_id <= -300 && current_stage_id > -400 && BGL_OBJ && BGL_OBJ.currentBz && BGL_OBJ.currentBz.status === 3) {
|
|
|
|
+ if (STAGE_AUDIT && STAGE_AUDIT.length > 0) {
|
|
|
|
+ dftDate = new Date(STAGE_AUDIT[STAGE_AUDIT.length - 1].end_time);
|
|
|
|
+ } else {
|
|
|
|
+ dftDate = new Date();
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ dftDate = new Date();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ role_rel.sign_date = dftDate;
|
|
|
|
+ if (isMergeOrgAlso) {
|
|
|
|
+ for (const orgRR of rptSignatureHelper.originalRoleRelList) {
|
|
|
|
+ if (orgRR.signature_name === role_rel.signature_name) {
|
|
|
|
+ orgRR.sign_date = dftDate;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // rptSignatureHelper.originalRoleRelList[rridx].sign_date = dftDate; // 这个在实际情况下originalRoleRelList不一定与currRoleRelList一致
|
|
|
|
+ //备注:在多选导出的情况下,originalRoleRelList不需要merge
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
mergeSignDate: function (pageData, currRoleRelList, isMergeOrgAlso, checkAudit = false) {
|
|
mergeSignDate: function (pageData, currRoleRelList, isMergeOrgAlso, checkAudit = false) {
|
|
if (currRoleRelList && currRoleRelList.length > 0 && STAGE_AUDIT && STAGE_AUDIT.length > 0) {
|
|
if (currRoleRelList && currRoleRelList.length > 0 && STAGE_AUDIT && STAGE_AUDIT.length > 0) {
|
|
for (let rridx = 0; rridx < currRoleRelList.length; rridx++) {
|
|
for (let rridx = 0; rridx < currRoleRelList.length; rridx++) {
|
|
const role_rel = currRoleRelList[rridx];
|
|
const role_rel = currRoleRelList[rridx];
|
|
if (role_rel.type !== '流程') {
|
|
if (role_rel.type !== '流程') {
|
|
- // if (role_rel.sign_date === undefined || role_rel.sign_date === null || role_rel.sign_date === '' || this._chkIfOrgRpt(role_rel.acc_id)) {
|
|
|
|
- // if (role_rel.sign_date === undefined || role_rel.sign_date === null || role_rel.sign_date === '') {
|
|
|
|
- if (role_rel.acc_id && (role_rel.sign_date === undefined || role_rel.sign_date === null || role_rel.sign_date === '')) {
|
|
|
|
- let dftDate = _getSignDateByAllScenarios(role_rel.acc_id);
|
|
|
|
- if (dftDate !== '' && dftDate.length >= 10) {
|
|
|
|
- dftDate = new Date(dftDate); // 不Format,保留时分秒
|
|
|
|
- } else if (dftDate === '') {
|
|
|
|
- if (current_stage_id <= -300 && current_stage_id > -400 && BGL_OBJ && BGL_OBJ.currentBz && BGL_OBJ.currentBz.status === 3) {
|
|
|
|
- if (STAGE_AUDIT && STAGE_AUDIT.length > 0) {
|
|
|
|
- dftDate = new Date(STAGE_AUDIT[STAGE_AUDIT.length - 1].end_time);
|
|
|
|
- } else {
|
|
|
|
- dftDate = new Date();
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- dftDate = new Date();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- role_rel.sign_date = dftDate;
|
|
|
|
- if (isMergeOrgAlso) {
|
|
|
|
- for (const orgRR of rptSignatureHelper.originalRoleRelList) {
|
|
|
|
- if (orgRR.signature_name === role_rel.signature_name) {
|
|
|
|
- orgRR.sign_date = dftDate;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- // rptSignatureHelper.originalRoleRelList[rridx].sign_date = dftDate; // 这个在实际情况下originalRoleRelList不一定与currRoleRelList一致
|
|
|
|
- //备注:在多选导出的情况下,originalRoleRelList不需要merge
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- //
|
|
|
|
|
|
+ rptSignatureHelper._setDftDate(role_rel, isMergeOrgAlso);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- for (const page of pageData.items) {
|
|
|
|
|
|
+ for (let pageIdx = 0; pageIdx < pageData.items.length; pageIdx++) {
|
|
|
|
+ const page = pageData.items[pageIdx];
|
|
if (page.signature_date_cells) {
|
|
if (page.signature_date_cells) {
|
|
for (const sCell of page.signature_date_cells) {
|
|
for (const sCell of page.signature_date_cells) {
|
|
if (typeof sCell.Value === 'string' && sCell.Value.replace(/ /g, '') === '年月日') {
|
|
if (typeof sCell.Value === 'string' && sCell.Value.replace(/ /g, '') === '年月日') {
|
|
@@ -1083,7 +1077,9 @@ let rptSignatureHelper = {
|
|
} else {
|
|
} else {
|
|
sCell.Value = '';
|
|
sCell.Value = '';
|
|
}
|
|
}
|
|
- for (const role_rel of currRoleRelList) {
|
|
|
|
|
|
+ for (const role of currRoleRelList) {
|
|
|
|
+ const role_rel = getTheRightRole(role, pageIdx);
|
|
|
|
+ if (role.type === '流程') rptSignatureHelper._setDftDate(role_rel, false);
|
|
if (sCell.signature_name === role_rel.signature_name + '_签字日期') {
|
|
if (sCell.signature_name === role_rel.signature_name + '_签字日期') {
|
|
if (!checkAudit || rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
if (!checkAudit || rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
// 如果签名者是在审核流程中并已审批通过(个人通过,非期通过),则也需要显示
|
|
// 如果签名者是在审核流程中并已审批通过(个人通过,非期通过),则也需要显示
|
|
@@ -1375,7 +1371,68 @@ function _createDummyCell() {
|
|
return rst;
|
|
return rst;
|
|
}
|
|
}
|
|
|
|
|
|
-function resetStampSignature(pageData, roleRelList, checkAudit = false) {
|
|
|
|
|
|
+function prepareRightFlowRoles(pageData, roleRelList = [], stg_audit = [], ledgerList = []) {
|
|
|
|
+ // 争取在这里一次过把所有页面的流程签名数据整理完毕,方便后面的工序能简单处理
|
|
|
|
+ const flowRole = roleRelList.find(role => { return role.type === '流程'; });
|
|
|
|
+ for (const role of roleRelList) {
|
|
|
|
+ if (role.type === '流程') role.flowAccList = []; // 这里直接清理流程签名信息
|
|
|
|
+ }
|
|
|
|
+ if (flowRole) {
|
|
|
|
+ const ledgerCache = {}; // 生成台账信息cache对象,提高查找效率
|
|
|
|
+ ledgerList.forEach(ledger => {
|
|
|
|
+ ledgerCache[ledger.id] = ledger;
|
|
|
|
+ ledgerCache[`_${ledger.ledger_id}`] = ledger;
|
|
|
|
+ })
|
|
|
|
+ const auditCache = {}; // 生成stage审核cache对象,提高查找效率
|
|
|
|
+ stg_audit.forEach(audit => {
|
|
|
|
+ if (audit.audit_type === 4) {
|
|
|
|
+ auditCache[`_${audit.aid}`] = `${audit.audit_ledger_id}`; // 统一用string类型来判断
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ pageData.items.forEach((page, index) => {
|
|
|
|
+ if (page.extend_flow_options && page.extend_flow_options !== '') {
|
|
|
|
+ for (const role of roleRelList) {
|
|
|
|
+ if (role.type === '流程') {
|
|
|
|
+ role.flowAccList.push(-1); // !!! 每一页都要有一个流程签名指引,-1表示没有
|
|
|
|
+ let preLen = -1; //
|
|
|
|
+ for (let assIdx = 0; assIdx < role.assFlowInfos.length; assIdx++) {
|
|
|
|
+ const assRole = role.assFlowInfos[assIdx];
|
|
|
|
+ if (auditCache[`_${assRole.acc_id}`]) {
|
|
|
|
+ const ledgerIdStr = `_${auditCache[`_${assRole.acc_id}`]}`;
|
|
|
|
+ const rootLedgerPath = ledgerCache[ledgerIdStr].full_path;
|
|
|
|
+ const thisLedgerPath = ledgerCache[page.extend_flow_options].full_path || '';
|
|
|
|
+ // 这里用了一个取巧的判断,就是子项的code一定完整包括父项的code,且父项code是在最前。
|
|
|
|
+ // 万一以后设计有所变化或台账改了,那么得换判断逻辑,目前先让逻辑跑通
|
|
|
|
+ if (thisLedgerPath.indexOf(rootLedgerPath) === 0) {
|
|
|
|
+ role.flowAccList[role.flowAccList.length - 1] = assIdx;
|
|
|
|
+ if (thisLedgerPath.length > preLen) {
|
|
|
|
+ preLen = thisLedgerPath.length; // 还要考虑到嵌套的情况
|
|
|
|
+ } else break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // role.flowAccList
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function getTheRightRole(role, pageIdx) {
|
|
|
|
+ let rst = role;
|
|
|
|
+ if (role.type === '流程') {
|
|
|
|
+ if (role.flowAccList && role.flowAccList.length > pageIdx) {
|
|
|
|
+ if (role.flowAccList[pageIdx] !== -1) {
|
|
|
|
+ rst = role.assFlowInfos[role.flowAccList[pageIdx]];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return rst;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function resetStampSignature(pageData, roleRelList, checkAudit = false, stg_audit = [], ledgerList = []) {
|
|
|
|
+ prepareRightFlowRoles(pageData, roleRelList, stg_audit, ledgerList);
|
|
const dupPicPaths = [];
|
|
const dupPicPaths = [];
|
|
const _getMaxRect = function(page) {
|
|
const _getMaxRect = function(page) {
|
|
const rect = [100000000, 100000000, 0, 0];
|
|
const rect = [100000000, 100000000, 0, 0];
|
|
@@ -1388,55 +1445,53 @@ function resetStampSignature(pageData, roleRelList, checkAudit = false) {
|
|
return rect;
|
|
return rect;
|
|
};
|
|
};
|
|
|
|
|
|
- for (const page of pageData.items) {
|
|
|
|
|
|
+ for (let pageIdx = 0; pageIdx < pageData.items.length; pageIdx++) {
|
|
|
|
+ const page = pageData.items[pageIdx];
|
|
const maxRect = _getMaxRect(page);
|
|
const maxRect = _getMaxRect(page);
|
|
if (page.signature_cells) {
|
|
if (page.signature_cells) {
|
|
const newStampCells = [];
|
|
const newStampCells = [];
|
|
for (let scIdx = 0; scIdx < page.signature_cells.length; scIdx++) {
|
|
for (let scIdx = 0; scIdx < page.signature_cells.length; scIdx++) {
|
|
const sCell = page.signature_cells[scIdx];
|
|
const sCell = page.signature_cells[scIdx];
|
|
- for (const role_rel of roleRelList) {
|
|
|
|
- if (role_rel.type !== '流程') {
|
|
|
|
- if (!checkAudit || rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
|
|
- 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 = OSS_PATH + stampPath;
|
|
|
|
- if (dupPicPaths.indexOf(stampPath) < 0) {
|
|
|
|
- dupPicPaths.push(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 || {Left: sCell.area.Left, Right: sCell.area.Right, Top: sCell.area.Top, Bottom: sCell.area.Bottom},
|
|
|
|
- signatureName: role_rel.signature_name, // 节点名称
|
|
|
|
- signType, // 签章信息
|
|
|
|
- isSaveSignature: !!signatureArea, // 是否有签章位置信息
|
|
|
|
- };
|
|
|
|
- newStampCells.push(newStampCell);
|
|
|
|
- break;
|
|
|
|
- default: break;
|
|
|
|
- }
|
|
|
|
|
|
+ for (const role of roleRelList) {
|
|
|
|
+ const role_rel = getTheRightRole(role, pageIdx);
|
|
|
|
+ if (!checkAudit || rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
|
|
+ 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 = OSS_PATH + stampPath;
|
|
|
|
+ if (dupPicPaths.indexOf(stampPath) < 0) {
|
|
|
|
+ dupPicPaths.push(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 || {Left: sCell.area.Left, Right: sCell.area.Right, Top: sCell.area.Top, Bottom: sCell.area.Bottom},
|
|
|
|
+ signatureName: role_rel.signature_name, // 节点名称
|
|
|
|
+ signType, // 签章信息
|
|
|
|
+ isSaveSignature: !!signatureArea, // 是否有签章位置信息
|
|
|
|
+ };
|
|
|
|
+ newStampCells.push(newStampCell);
|
|
|
|
+ break;
|
|
|
|
+ default: break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- // 流程数据不一样的判断处理
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1457,7 +1512,8 @@ function resetStampSignature(pageData, roleRelList, checkAudit = false) {
|
|
}
|
|
}
|
|
|
|
|
|
function resetTextSignature(pageData, checkAudit = false) {
|
|
function resetTextSignature(pageData, checkAudit = false) {
|
|
- for (const page of pageData.items) {
|
|
|
|
|
|
+ for (let pageIdx = 0; pageIdx < pageData.items.length; pageIdx++) {
|
|
|
|
+ const page = pageData.items[pageIdx];
|
|
for (let sCell of page.signature_cells) {
|
|
for (let sCell of page.signature_cells) {
|
|
if (!sCell.isStamp) {
|
|
if (!sCell.isStamp) {
|
|
let fitCell = null;
|
|
let fitCell = null;
|
|
@@ -1471,19 +1527,16 @@ function resetTextSignature(pageData, checkAudit = false) {
|
|
if (fitCell) {
|
|
if (fitCell) {
|
|
fitCell.Value = '';
|
|
fitCell.Value = '';
|
|
for (let role of ROLE_REL_LIST) {
|
|
for (let role of ROLE_REL_LIST) {
|
|
- if (role_rel.type !== '流程') {
|
|
|
|
- if (!checkAudit || rptSignatureHelper._chkIfAudit(role)) {
|
|
|
|
- if (sCell.signature_name === role.signature_name) {
|
|
|
|
- if (role.sign_output && role.sign_output.indexOf(NORMAL_SIGN_STR) >= 0) {
|
|
|
|
- fitCell.Value = role.user_name;
|
|
|
|
- } else {
|
|
|
|
- fitCell.Value = '';
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ const role_rel = getTheRightRole(role, pageIdx);
|
|
|
|
+ if (!checkAudit || rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
|
|
+ if (sCell.signature_name === role_rel.signature_name) {
|
|
|
|
+ if (role_rel.sign_output && role_rel.sign_output.indexOf(NORMAL_SIGN_STR) >= 0) {
|
|
|
|
+ fitCell.Value = role_rel.user_name;
|
|
|
|
+ } else {
|
|
|
|
+ fitCell.Value = '';
|
|
}
|
|
}
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- //
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
@@ -1497,15 +1550,12 @@ function resetTextSignature(pageData, checkAudit = false) {
|
|
};
|
|
};
|
|
if (ROLE_REL_LIST) {
|
|
if (ROLE_REL_LIST) {
|
|
for (let role of ROLE_REL_LIST) {
|
|
for (let role of ROLE_REL_LIST) {
|
|
- if (role_rel.type !== '流程') {
|
|
|
|
- if (!checkAudit || rptSignatureHelper._chkIfAudit(role)) {
|
|
|
|
- if (sCell.signature_name === role.signature_name && role.sign_output && role.sign_output.indexOf(NORMAL_SIGN_STR) >= 0) {
|
|
|
|
- newCell.Value = role.user_name;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
|
|
+ const role_rel = getTheRightRole(role, pageIdx);
|
|
|
|
+ if (!checkAudit || rptSignatureHelper._chkIfAudit(role_rel)) {
|
|
|
|
+ if (sCell.signature_name === role_rel.signature_name && role_rel.sign_output && role_rel.sign_output.indexOf(NORMAL_SIGN_STR) >= 0) {
|
|
|
|
+ newCell.Value = role_rel.user_name;
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- //
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|