| 
					
				 | 
			
			
				@@ -172,7 +172,8 @@ let rptSignatureHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             roleRelObj.type = '流程'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             roleRelObj.flowOrder = order; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             roleRelObj.flow_name = `${assName}(协同)`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            roleRelObj.assFlowInfos = []; // 这里动态记录流程的协审信息(含:人名、单位、职位、签字签章、签字日期) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roleRelObj.assFlowInfos = []; // 这里动态记录流程的协审信息(含:人名、单位、职位、签字签章、签字日期, 其实相当于另一个完整的roleRel对象) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            roleRelObj.sign_output = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ROLE_REL_LIST.push(roleRelObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             STAGE_FLOW.forEach(sf => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 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.mergeSignature(zTreeOprObj.currentRptPageRst, ROLE_REL_LIST, true, getStageStatus() !== 3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         await rptSignatureHelper.resetDummySignature(zTreeOprObj.currentRptPageRst, ROLE_REL_LIST, getStageStatus() !== 3); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -888,7 +889,8 @@ let rptSignatureHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // const adHocScells = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (const sCell of page.signature_cells) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -897,38 +899,35 @@ let rptSignatureHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         sCell.pre_path = 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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const stampPicKeys = [], stampPicFeatures = []; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -948,18 +947,15 @@ let rptSignatureHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         let passAuditChk = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (checkAudit) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             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 (ifPushRoleRel) roleRel.push(roleRelItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if (ifPushRoleRel) roleRels.push(roleRelItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -998,84 +994,82 @@ let rptSignatureHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const reg4 = new RegExp('\r', 'g'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const reg5 = 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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (const sCell of page.signature_audit_cells) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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.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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (const sCell of page.signature_date_cells) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (typeof sCell.Value === 'string' && sCell.Value.replace(/ /g, '') === '年月日') { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1083,7 +1077,9 @@ let rptSignatureHelper = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         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 (!checkAudit || rptSignatureHelper._chkIfAudit(role_rel)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 // 如果签名者是在审核流程中并已审批通过(个人通过,非期通过),则也需要显示 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1375,7 +1371,68 @@ function _createDummyCell() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     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 _getMaxRect = function(page) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const rect = [100000000, 100000000, 0, 0]; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1388,55 +1445,53 @@ function resetStampSignature(pageData, roleRelList, checkAudit = false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (page.signature_cells) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const newStampCells = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for (let scIdx = 0; scIdx < page.signature_cells.length; 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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!sCell.isStamp) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let fitCell = null; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1471,19 +1527,16 @@ function resetTextSignature(pageData, checkAudit = false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (fitCell) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     fitCell.Value = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     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 { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1497,15 +1550,12 @@ function resetTextSignature(pageData, checkAudit = false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (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 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 |