From e6068da47c1bef5517c9e5fdc8c726766867ad4e Mon Sep 17 00:00:00 2001 From: buli <137736985@qq.com> Date: 星期五, 14 七月 2023 15:10:02 +0800 Subject: [PATCH] Merge branch 'master' into LEXUpgrade2023-Deloitte --- force-app/main/default/pages/NewAndEditContact.page | 236 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 175 insertions(+), 61 deletions(-) diff --git a/force-app/main/default/pages/NewAndEditContact.page b/force-app/main/default/pages/NewAndEditContact.page index f55f953..ff011ed 100644 --- a/force-app/main/default/pages/NewAndEditContact.page +++ b/force-app/main/default/pages/NewAndEditContact.page @@ -1,11 +1,21 @@ <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)}"/> <apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" /> + <style> + .disabledbutton { + pointer-events: none; + opacity: 0.4; + } + </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}", @@ -36,24 +46,48 @@ 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}'; @@ -72,6 +106,14 @@ 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]]) @@ -124,7 +166,10 @@ // 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()}'; @@ -133,10 +178,24 @@ var fieldAPIToLabelMap = JSON.parse('{!fieldAPIToLabelMapStr}'); console.log('{!staticResource}'); var VLookUpFields = {! VLookUpFieldsJson}; + + function EditButton(isDisabled){ + var topele = document.getElementById('topButtonRow'); + var bottomele = document.getElementById('bottomButtonRow'); + + if (isDisabled) { + topele.classList.add("disabledbutton"); + bottomele.classList.add("disabledbutton"); + }else { + topele.classList.remove("disabledbutton"); + bottomele.classList.remove("disabledbutton"); + } + } + function ProcessPI(sobjJson, payloadForNewPI) { blockme(); if ({!isNewMode} || {!isCloneMode}) { - NewPIToAWS(sobjJson, payloadForNewPI) + NewPIToAWS(sobjJson, payloadForNewPI) }else { UpdatePIToAWS(sobjJson, payloadForNewPI) } @@ -164,8 +223,8 @@ } return ['input','select','textarea'].indexOf(tag_name.toLowerCase())>-1; } - - function IsFormElement(e){ + + function IsFormElement(e){ return IsFormTag(e.tagName); } @@ -175,34 +234,34 @@ function validateFieldValueFormate() { let error_msg = ''; - let textEmail = "[data-id='Email']"; - let textPhone = "[data-id='Phone']"; - //Email - let email = document.querySelector(textEmail); - if(email ){ - if(email.value){ - if(!/^[\w-]{3,12}@[\da-zA-Z]{2,16}\.[a-zA-Z]+$/.test(email.value)){ - error_msg += ';閭欢鏍煎紡閿欒'; - } - }else{ - if(email.previousSibling && email.previousSibling.className.indexOf('requiredBlock')>-1){ - error_msg += ';閭欢鏍煎紡閿欒'; - } - } - } - let phone = document.querySelector(textPhone); + // let textEmail = "[data-id='Email']"; + // let textPhone = "[data-id='Phone']"; + // //Email + // let email = document.querySelector(textEmail); + // if(email ){ + // if(email.value){ + // if(!/^[\w-]{3,12}@[\da-zA-Z]{2,16}\.[a-zA-Z]+$/.test(email.value)){ + // error_msg += ';閭欢鏍煎紡閿欒'; + // } + // }else{ + // if(email.previousSibling && email.previousSibling.className.indexOf('requiredBlock')>-1){ + // error_msg += ';閭欢鏍煎紡閿欒'; + // } + // } + // } + // let phone = document.querySelector(textPhone); - if(phone && false ){ - if(phone.value){ - if(!/^1[3|5|8|7][0-9]\d{4,8}$/.test(phone.value)){ - error_msg += ';鐢佃瘽鍙风爜閿欒'; - } - }else{ - if(phone.previousSibling && phone.previousSibling.className.indexOf('requiredBlock')>-1){ - error_msg += ';鐢佃瘽鍙风爜閿欒'; - } - } - } + // if(phone && false ){ + // if(phone.value){ + // if(!/^1[3|5|8|7][0-9]\d{4,8}$/.test(phone.value)){ + // error_msg += ';鐢佃瘽鍙风爜閿欒'; + // } + // }else{ + // if(phone.previousSibling && phone.previousSibling.className.indexOf('requiredBlock')>-1){ + // error_msg += ';鐢佃瘽鍙风爜閿欒'; + // } + // } + // } let es = document.getElementsByTagName('select') for(let ei in es){ @@ -268,7 +327,7 @@ // 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; @@ -303,7 +362,6 @@ window.open('/' + sfId, '_self'); } } - } function UpdatePIToAWS(sobjJson, payloadForNewPI) { @@ -311,13 +369,19 @@ 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 } @@ -325,7 +389,9 @@ 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 == ''){ @@ -339,6 +405,8 @@ return blankRequiredFields; } function saveSobjectProcess(save_and_new) { + EditButton(true); + if(save_and_new){ config.SaveAndNew = true; } @@ -367,8 +435,49 @@ // //4. Get Authentication Information for AWS // loadAWSAuthentication(); + //zhj MEBG鏂版柟妗堟敼閫� 2022-11-24 start + //鏂板contactIds瀛楁锛屽湪AWS杩涜contact鐨勫敮涓�鎬ф牎楠岋紝鏇挎崲ContactTriggerHandler閲岄潰鐨刴obileNumberVerification鏂规硶 + 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) } @@ -378,6 +487,7 @@ errorMsg = '閿欒锛氭棤鏁堟暟鎹��' + '\n' + errorMsg; errorMsgNode.innerText = errorMsg; errorMsgNode.className = 'pbError'; + EditButton(false); } function hiddenErrorMsgNode() { let errorMsgNode = document.getElementById("page:form:block:msgContent"); @@ -416,7 +526,7 @@ <img src="/img/s.gif" alt="" class="minWidth" title="" width="1" height="1" /> <h2 class="mainTitle">{! SobjectLabel}<apex:outputText rendered="{!isNewMode || isCloneMode}">{!$Label.New}</apex:outputText><apex:outputText rendered="{!not(isNewMode || isCloneMode)}">{!$Label.Edit}</apex:outputText></h2> </td> - <td class="pbButton" id="topButtonRow"> + <td class="pbButton" id="topButtonRow" style="pointer-events: none; opacity: 0.4;"> <input class="btn" type="Button" value="{!$Label.Save}" onclick="saveSobjectProcess()" /> <input class="btn" type="Button" value="{!$Label.SaveAndNew}" onclick="saveSobjectProcess(1)" /> <apex:commandButton action="{!cancel}" value="{!$Label.Cancel}" /> @@ -438,8 +548,9 @@ <!--Each section has layoutFields, let's iterate them as well--> <apex:repeat value="{!layoutSection.layoutFields}" var="layoutField"> - <apex:inputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Contact[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)}" - required="{!layoutField.isRequired}" /> + <apex:inputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Contact[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&&isNewMode}" required="{!layoutField.isRequired}" /> + <apex:inputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Contact[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&¬(isNewMode)&&layoutField.fieldAPI!='RecordTypeId'}" required="{!layoutField.isRequired}" /> + <apex:outputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Contact[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&¬(isNewMode)&&layoutField.fieldAPI=='RecordTypeId'}" /> <apex:pageblocksectionitem rendered="{!layoutField.isPlaceHolder}"> </apex:pageblocksectionitem> </apex:repeat> @@ -451,20 +562,20 @@ 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 @@ -475,7 +586,7 @@ 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",""); @@ -484,9 +595,12 @@ ot.css("outline","0"); if(oi){ - oi.value = '{!CurrentUserId}' + oi.value = '{!CurrentUserId}' } } + document.getElementById('topButtonRow').style = ''; + document.getElementById('bottomButtonRow').style = ''; + jQuery('a[data-id="OwnerId"]').remove(); var layoutSections = JSON.parse('{!layoutSectionsStr}'); @@ -508,7 +622,7 @@ <tr> <td class="pbTitle"> <img src="/img/s.gif" alt="" class="minWidth" title="" width="1" height="1" /> </td> - <td class="pbButtonb" id="bottomButtonRow"> + <td class="pbButtonb" id="bottomButtonRow" style="pointer-events: none; opacity: 0.4;"> <input class="btn" type="Button" value="{!$Label.Save}" onclick="saveSobjectProcess()" /> <input class="btn" type="Button" value="{!$Label.SaveAndNew}" onclick="saveSobjectProcess()" /> <apex:commandButton action="{!cancel}" value="{!$Label.Cancel}" /> -- Gitblit v1.9.1