|  |  | 
 |  |  | <apex:page standardController="Contact" extensions="NewAndEditContactController" id="page" action="{!PageLoad}"> | 
 |  |  |     <script src="../../soap/ajax/53.0/connection.js" type="text/javascript"></script> | 
 |  |  |     <apex:includeScript value="{!URLFOR($Resource.connection20)}"/> | 
 |  |  |     <apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}"/> | 
 |  |  |     <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}"/> | 
 |  |  |     <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}"/> | 
 |  |  | 
 |  |  |         } | 
 |  |  |     </style> | 
 |  |  |     <script> | 
 |  |  |          | 
 |  |  |         //zhj MEBG新方案改造 2022-11-25 start | 
 |  |  |         var accountName = ''; | 
 |  |  |         var dataIdManageCodeMap = {}; | 
 |  |  |         var staticResourceContactV2 = JSON.parse('{!staticResourceContactV2}'); | 
 |  |  |         //zhj MEBG新方案改造 2022-11-25 end | 
 |  |  |         var config = {}; | 
 |  |  |         config = { | 
 |  |  |             SobjectName : "{!SobjectName}", | 
 |  |  | 
 |  |  |                 return JSON.stringify(leadPayloadList); | 
 |  |  |             }, | 
 |  |  |             insertOrUpdateBack:function(payloadJson, r, isNewMode){ | 
 |  |  |                  | 
 |  |  |                 for(let f in config.AWSToSobjectMap){ | 
 |  |  |                 //zhj MEBG新方案改造 2022-11-25 start | 
 |  |  |                 debugger | 
 |  |  |                 if(r.status == '129'){ | 
 |  |  |                     alertErrorMessage('客户 [ '+accountName+ ' ],已存在相同名字的联系人 人员管理编码 ['+dataIdManageCodeMap[r.object[0].dataId]+' ] ,不能重复创建,请了解'); | 
 |  |  |                     unblockUI(); | 
 |  |  |                     return | 
 |  |  |                 } | 
 |  |  |                 if(r.status == '130'){ | 
 |  |  |                     if(r.object[0] && r.object[0].sfRecordId != null && r.object[0].sfRecordId != '') | 
 |  |  |                         alertErrorMessage('已找到重复值: UniqueNumber__c 与记录值重复,ID 为: '+r.object[0].sfRecordId+'客户人员信息'); | 
 |  |  |                     else | 
 |  |  |                         alertErrorMessage('数据中存在重复的电话号码'); | 
 |  |  |                     unblockUI(); | 
 |  |  |                     return | 
 |  |  |                 } | 
 |  |  |                 for(let f in config.AWSToSobjectNonEncryptedMap){ | 
 |  |  |                     if(r.object[0].hasOwnProperty(f)){ | 
 |  |  |                         payloadJson[config.AWSToSobjectMap[f]] = r.object[0][f]; | 
 |  |  |                         payloadJson[config.AWSToSobjectNonEncryptedMap[f]] = r.object[0][f]; | 
 |  |  |                     } | 
 |  |  |                     else{ | 
 |  |  |                         console.log(f + 'is not in r.object[0]'); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 console.log('payloadJson = ' + payloadJson); | 
 |  |  |                 // for(let f in config.AWSToSobjectMap){ | 
 |  |  |                 //     if(r.object[0].hasOwnProperty(f)){ | 
 |  |  |                 //         payloadJson[config.AWSToSobjectMap[f]] = r.object[0][f]; | 
 |  |  |                 //     } | 
 |  |  |                 //     else{ | 
 |  |  |                 //         console.log(f + 'is not in r.object[0]'); | 
 |  |  |                 //     } | 
 |  |  |                 // } | 
 |  |  |  | 
 |  |  |                 for(let f in config.AWSToSobjectEncryptedMap){ | 
 |  |  |                     if(r.object[0].hasOwnProperty(f)){ | 
 |  |  |                         payloadJson[config.AWSToSobjectEncryptedMap[f]] = r.object[0][f]; | 
 |  |  |                     } | 
 |  |  |                     else{ | 
 |  |  |                         console.log(f + 'is not in r.object[0]'); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 // for(let f in config.AWSToSobjectEncryptedMap){ | 
 |  |  |                 //     if(r.object[0].hasOwnProperty(f)){ | 
 |  |  |                 //         payloadJson[config.AWSToSobjectEncryptedMap[f]] = r.object[0][f]; | 
 |  |  |                 //     } | 
 |  |  |                 //     else{ | 
 |  |  |                 //         console.log(f + 'is not in r.object[0]'); | 
 |  |  |                 //     } | 
 |  |  |                 // } | 
 |  |  |                 //zhj MEBG新方案改造 2022-11-25 end | 
 |  |  |                  | 
 |  |  |                 if('{!rtTypeId}'){ | 
 |  |  |                     payloadJson.RecordTypeId = '{!rtTypeId}'; | 
 |  |  | 
 |  |  |             queryBack:function (data) { | 
 |  |  |                 console.log('data = ' + data); | 
 |  |  |                 if(data.object){ | 
 |  |  |                     for(let i=0; i < config.AWSToSobjectNonEncryptedMapKeySet.length ; i++){ | 
 |  |  |                         if(config.AWSToSobjectNonEncryptedMapKeySet[i] == 'type'){ | 
 |  |  |                             let temp = config.AWSToSobjectNonEncryptedMapKeySet[0]; | 
 |  |  |                             config.AWSToSobjectNonEncryptedMapKeySet[0] = config.AWSToSobjectNonEncryptedMapKeySet[i]; | 
 |  |  |                             config.AWSToSobjectNonEncryptedMapKeySet[i] = temp; | 
 |  |  |                             break; | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     for(let fi in config.AWSToSobjectNonEncryptedMapKeySet){ | 
 |  |  |                         let f = config.AWSToSobjectNonEncryptedMapKeySet[fi]; | 
 |  |  |                         let ele = document.getElementById(api_id_map[config.AWSToSobjectNonEncryptedMap[f]]) | 
 |  |  | 
 |  |  |                 // document.querySelector("[data-id='Email']").value = data.object.email; | 
 |  |  |             }, | 
 |  |  |             updateMethod:"NewAndEditContactController.saveContact", | 
 |  |  |             insertMethod:"NewAndEditContactController.saveContact" | 
 |  |  |             insertMethod:"NewAndEditContactController.saveContact", | 
 |  |  |             //zhj MEBG新方案改造 2022-11-24 start | 
 |  |  |             searchContactByAccountId:"NewAndEditContactController.searchContactByAccountId" | 
 |  |  |             //zhj MEBG新方案改造 2022-11-24 end | 
 |  |  |         } | 
 |  |  |      | 
 |  |  |         AWSService.sfSessionId = '{!GETSESSIONID()}'; | 
 |  |  | 
 |  |  |         function ProcessPI(sobjJson, payloadForNewPI) { | 
 |  |  |             blockme(); | 
 |  |  |             if ({!isNewMode} || {!isCloneMode}) { | 
 |  |  |                NewPIToAWS(sobjJson, payloadForNewPI) | 
 |  |  |                 NewPIToAWS(sobjJson, payloadForNewPI) | 
 |  |  |             }else { | 
 |  |  |                 UpdatePIToAWS(sobjJson, payloadForNewPI) | 
 |  |  |             } | 
 |  |  | 
 |  |  |             } | 
 |  |  |             return ['input','select','textarea'].indexOf(tag_name.toLowerCase())>-1; | 
 |  |  |         } | 
 |  |  |     	 | 
 |  |  |        function IsFormElement(e){ | 
 |  |  |          | 
 |  |  |         function IsFormElement(e){ | 
 |  |  |             return IsFormTag(e.tagName); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | 
 |  |  |             // if(email ){ | 
 |  |  |             //     if(email.value){ | 
 |  |  |             //         if(!/^[\w-]{3,12}@[\da-zA-Z]{2,16}\.[a-zA-Z]+$/.test(email.value)){ | 
 |  |  |             //            error_msg += ';邮件格式错误'; | 
 |  |  |             //          error_msg += ';邮件格式错误'; | 
 |  |  |             //         } | 
 |  |  |             //     }else{ | 
 |  |  |             //         if(email.previousSibling && email.previousSibling.className.indexOf('requiredBlock')>-1){ | 
 |  |  | 
 |  |  |             // if(phone && false ){ | 
 |  |  |             //     if(phone.value){ | 
 |  |  |             //         if(!/^1[3|5|8|7][0-9]\d{4,8}$/.test(phone.value)){ | 
 |  |  |             //            error_msg += ';电话号码错误'; | 
 |  |  |             //          error_msg += ';电话号码错误'; | 
 |  |  |             //         } | 
 |  |  |             //     }else{ | 
 |  |  |             //         if(phone.previousSibling && phone.previousSibling.className.indexOf('requiredBlock')>-1){ | 
 |  |  | 
 |  |  |                  | 
 |  |  |                 // let e1 = document.getElementById(api_id_map[field_api_name]); | 
 |  |  |                 // if(!result[field_api_name] && e1 && e1.value){ | 
 |  |  |                 //    result[field_api_name] = e1.value; | 
 |  |  |                 //  result[field_api_name] = e1.value; | 
 |  |  |                 // } | 
 |  |  |             } | 
 |  |  |             return result; | 
 |  |  | 
 |  |  |             let obj = JSON.parse(payloadForNewPI); | 
 |  |  |             obj[0].dataId = '{!AWSDataId}'; | 
 |  |  |             let payloadForNewPIJson = JSON.stringify(obj); | 
 |  |  |             AWSService.update(staticResources.updateUrl, sobjJson, payloadForNewPIJson, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, false, insertOrUpdateBack,redirectCallBack); | 
 |  |  |             //AWSService.update(staticResources.updateUrl, sobjJson, payloadForNewPIJson, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, false, insertOrUpdateBack,redirectCallBack); | 
 |  |  |             //zhj MEBG新方案改造 2022-11-25 start | 
 |  |  |             AWSService.update(staticResourceContactV2.updateUrl, sobjJson, payloadForNewPIJson, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, false, insertOrUpdateBack,redirectCallBack); | 
 |  |  |             //zhj MEBG新方案改造 2022-11-25 end | 
 |  |  |              | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         function NewPIToAWS(sobjJson, payloadForNewPI) { | 
 |  |  |             let controllerSaveMethod = config.insertMethod; | 
 |  |  |             AWSService.insert(staticResources.newUrl, sobjJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, true, insertOrUpdateBack,redirectCallBack); | 
 |  |  |             //AWSService.insert(staticResources.newUrl, sobjJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, true, insertOrUpdateBack,redirectCallBack); | 
 |  |  |             //zhj MEBG新方案改造 2022-11-25 start | 
 |  |  |             AWSService.insert(staticResourceContactV2.newUrl, sobjJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, true, insertOrUpdateBack,redirectCallBack); | 
 |  |  |             //zhj MEBG新方案改造 2022-11-25 end | 
 |  |  |              | 
 |  |  |         } | 
 |  |  |          | 
 |  |  | 
 |  |  |         function checkRequiredFieldMsg(formData) { | 
 |  |  |             let blankRequiredFields = ''; | 
 |  |  |             for(i = 0;i<requiredFieldAPIList.length;i++){ | 
 |  |  |                 if(formData[requiredFieldAPIList[i]]){ | 
 |  |  |                 if(formData[requiredFieldAPIList[i]] && (VLookUpFields.indexOf(requiredFieldAPIList[i]) == -1)){ | 
 |  |  |                     continue; | 
 |  |  |                 }else if((VLookUpFields.indexOf(requiredFieldAPIList[i]) != -1) && formData[requiredFieldAPIList[i]] != '000000000000000'){ | 
 |  |  |                     continue; | 
 |  |  |                 }else{ | 
 |  |  |                     if(blankRequiredFields == ''){ | 
 |  |  | 
 |  |  |             // //4. Get Authentication Information for AWS | 
 |  |  |             // loadAWSAuthentication(); | 
 |  |  |  | 
 |  |  |             //zhj MEBG新方案改造 2022-11-24 start | 
 |  |  |             //新增contactIds字段,在AWS进行contact的唯一性校验,替换ContactTriggerHandler里面的mobileNumberVerification方法 | 
 |  |  |             if('{!rtTypeId}'){ | 
 |  |  |                 var RecordTypeId = '{!rtTypeId}'; | 
 |  |  |             } | 
 |  |  |             var Isactive = document.querySelector("[data-id='Isactive__c']").value; | 
 |  |  |             console.log('Isactive = ' + Isactive); | 
 |  |  |             console.log('RecordTypeId = ' + RecordTypeId); | 
 |  |  |             Visualforce.remoting.Manager.invokeAction( | 
 |  |  |                 config.searchContactByAccountId,  | 
 |  |  |                 sobjJson.AccountId, | 
 |  |  |                 RecordTypeId, | 
 |  |  |                 Isactive, | 
 |  |  |                 function (result, event) { | 
 |  |  |                     if(result.status == 'fail'){ | 
 |  |  |                         alertErrorMessage(result.message); | 
 |  |  |                         return | 
 |  |  |                     } | 
 |  |  |                     console.log('result = ' + JSON.stringify(result)); | 
 |  |  |                     accountName = result.accountName; | 
 |  |  |                     dataIdManageCodeMap = result.dataIdManageCodeMap; | 
 |  |  |                     var contactList = ''; | 
 |  |  |                     for(var i = 0; i<result.contactList.length; i++){ | 
 |  |  |                         if(result.contactList[i].AWS_Data_Id__c) | 
 |  |  |                             contactList += ',' + result.contactList[i].AWS_Data_Id__c; | 
 |  |  |                     } | 
 |  |  |                     contactList = contactList.substring(1); | 
 |  |  |                      | 
 |  |  |                     payloadForNewPI = JSON.parse(payloadForNewPI); | 
 |  |  |                     payloadForNewPI[0].contactIds = contactList; | 
 |  |  |                     payloadForNewPI[0].isMobileVerif = result.isMobileVerif; | 
 |  |  |                     payloadForNewPI[0].isNameMobileVerif = result.isNameMobileVerif; | 
 |  |  |                     payloadForNewPI = JSON.stringify(payloadForNewPI); | 
 |  |  |                     ProcessPI(sobjJson, payloadForNewPI); | 
 |  |  |                 }, | 
 |  |  |                 { escape: true } | 
 |  |  |             ); | 
 |  |  |              | 
 |  |  |  | 
 |  |  |             // //5. lead to AWS  | 
 |  |  |             ProcessPI(sobjJson, payloadForNewPI); | 
 |  |  |             //ProcessPI(sobjJson, payloadForNewPI); | 
 |  |  |             //zhj MEBG新方案改造 2022-11-24 end | 
 |  |  |  | 
 |  |  |             // awsToken = TestToken; | 
 |  |  |             // NewPIToAWS(sobjJson,awsToken, payloadForNewPI) | 
 |  |  |         } | 
 |  |  | 
 |  |  |             var api_id_map={}; | 
 |  |  |             for(let ei in init_nodes){ | 
 |  |  |                 let e = init_nodes[ei]; | 
 |  |  |                if(IsFormElement(e)){ | 
 |  |  |                 if(IsFormElement(e)){ | 
 |  |  |                     if(e.getAttribute("multiple") != 'multiple' || e.style.display == 'none' && e.id.indexOf('selected') < 0){ | 
 |  |  |                         api_id_map[GetEleApiName(e)] = e.id; | 
 |  |  |                     } | 
 |  |  |                 	  | 
 |  |  |                       | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             console.log(api_id_map); | 
 |  |  |             sfdcPage.appendToOnloadQueue(function () { | 
 |  |  |                  | 
 |  |  |                 jQuery('option').each(function(i,e){ | 
 |  |  |                    if(e.value == '_\x01_'){ | 
 |  |  |                       e.value = ''; | 
 |  |  |                    } | 
 |  |  |                     if(e.value == '_\x01_'){ | 
 |  |  |                         e.value = ''; | 
 |  |  |                     } | 
 |  |  |                 }) | 
 |  |  |                  | 
 |  |  |                 //1. Set Last Name label | 
 |  |  | 
 |  |  |                     blockme(); | 
 |  |  |                     QuerySobjectFromAWS(); | 
 |  |  |                 }else{ | 
 |  |  |                    let ot = jQuery('input[data-id="OwnerId"]'); | 
 |  |  |                     let ot = jQuery('input[data-id="OwnerId"]'); | 
 |  |  |                     let oi = document.getElementById(ot.attr("id")+'_lkid'); | 
 |  |  |                     ot.val('{!CurrentUserName}'); | 
 |  |  |                     ot.attr("readonly",""); | 
 |  |  | 
 |  |  |                     ot.css("outline","0"); | 
 |  |  |                      | 
 |  |  |                     if(oi){ | 
 |  |  |                        oi.value = '{!CurrentUserId}' | 
 |  |  |                         oi.value = '{!CurrentUserId}' | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 document.getElementById('topButtonRow').style = ''; |