From b776940205e893302f77d24c4285613f228b44c6 Mon Sep 17 00:00:00 2001 From: Li Jun <buli@deloitte.com.cn> Date: 星期三, 11 五月 2022 17:14:29 +0800 Subject: [PATCH] Page Enhance 0511 --- force-app/main/default/pages/NewAndEditLead.page | 903 ++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 622 insertions(+), 281 deletions(-) diff --git a/force-app/main/default/pages/NewAndEditLead.page b/force-app/main/default/pages/NewAndEditLead.page index 41e3771..3698107 100644 --- a/force-app/main/default/pages/NewAndEditLead.page +++ b/force-app/main/default/pages/NewAndEditLead.page @@ -1,49 +1,68 @@ -<apex:page standardController="Lead" extensions="NewAndEditLeadController"> - <script src="../../soap/ajax/53.0/connection.js" type="text/javascript"></script> +<apex:page standardController="Lead" extensions="NewAndEditLeadController" id="page"> + <apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}" /> + <apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" /> + <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}" /> + <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}" /> + <apex:includeScript value="{!URLFOR($Resource.connection20)}"/> + <style> + .disabledbutton { + pointer-events: none; + opacity: 0.4; + } + </style> <script> - var TestToken = 'eyJhbGciOiJIUzUxMiJ9.eyJjcmVhdGVkIjoxNjQzMDk5NDgyNjA2LCJhcHBpZCI6IjZMeml6Y1JmN2g4eUx4MjgiLCJleHAiOjE2NDM3MDQyODJ9.V_94zxiDwEa1jZpOphw9W4QfjmqqKQcjCZ4z31KsDe7SjCF9sxKSKiZe6rp8ML6-namlVSyzqpTeZQ6NJi88Og'; - var AWSAppId = '6LzizcRf7h8yLx28'; - var AWSAppSecret = 'UkLohQcHNjg164SdRc7gnS4rgu4d7FjINM3mtzRbyTS6IrUP5V'; - var NewLeadURL = 'https://52.83.101.205/api/lead/insert'; - var UpdateLeadURL = ''; - var QueryLeadURL = 'https://52.83.101.205/api/lead/query'; - var TransactionURL = "https://52.83.101.205/api/tx/confirm"; - var VLookUpFields = new Set(['Hospital_Name__c', 'Department_Class__c', 'Contact_Name__c', 'Campaign__c']); - var LeadIdPage = "https://ocsm--stagefull--c.visualforce.com/apex/NewAndEditLead?RecordType=01210000000QiRa"; - // function ProcessPI(payloadForNewPI) { - // let TokenURL = "https://52.83.101.205/api/token/getToken?app_id=" + AWSAppId + "&app_secret=" + AWSAppSecret; - // console.log('Get Token Process'); - // fetch(TokenURL, { - // method: 'GET', - // mode: 'no-cors', - // headers: { - // 'Content-Type': 'application/json' - // } - // }).then((data) => { - // console.log(data.text()) - // return data.text() - // }).then((awsToken) => { - // if({!isNewMode}){ - // NewPIToAWS(awsToken, payloadForNewPI) - // }else{ - // UpdatePIToAWS(awsToken, payloadForNewPI) - // } - // }); - // } - - function loadAWSAuthentication() { - console.log('Get Sesion Session'); - sforce.connection.sessionId = '{!GETSESSIONID()}'; - let awsConfiguration = "SELECT App_Id__c,App_Secret__c,New_Lead_URL__c FROM AWS_Integration_Info__mdt WHERE DeveloperName = 'AWS_Integration_Configuration'"; - let awsConfigurationResult = sforce.connection.query(awsConfiguration); - let recordsAWSConfiguration = awsConfigurationResult.getArray("records"); - if (recordsAWSConfiguration && recordsAWSConfiguration.length > 0) { - recordAWSConfiguration = recordsAWSConfiguration[0]; - AWSAppId = recordAWSConfiguration.App_Id__c; - AWSAppSecret = recordAWSConfiguration.App_Secret__c; - NewLeadURL = recordAWSConfiguration.New_Lead_URL__c; + AWSService.sfSessionId = '{!GETSESSIONID()}'; + var staticResources = JSON.parse('{!staticResource}'); + var staticResourcesContact = JSON.parse('{!staticResourceContact}'); + var staticResourceInquiryForm = JSON.parse('{!staticResourceInquiryForm}'); + var requiredFieldAPIList = JSON.parse('{!requiredFieldAPIListStr}'); + var fieldAPIToLabelMap = JSON.parse('{!fieldAPIToLabelMapStr}'); + var redirectMode = 'Save';//1. Save 2. SaveAndNew + var requiredAPIToChangedLabelMap = new Map(); + requiredAPIToChangedLabelMap.set('LastName', '{!PIPL_Name_Label}'); + var VLookUpFields = new Set(['Hospital_Name__c', 'Department_Class__c', 'Contact_Name__c', 'Campaign__c', 'Lead_Inquiry_form__c', 'Opp_Name_Search__c']); + function ProcessPI(leadJson, payloadForNewPI) { + blockme(); + if ({!isNewMode} || {!isCloneMode}) { + NewPIToAWS(leadJson, payloadForNewPI) + }else { + UpdatePIToAWS(leadJson, payloadForNewPI) } - console.log('AWS Configuration:' + AWSAppId + '----- APP Secret:' + AWSAppSecret); + } + + 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 enableButton(obj) { + obj.classList.remove("btnDisabled"); + } + + function disableButton(obj) { + obj.classList.add("btnDisabled"); + } + + function disableButtonStatus() { + let btnList = document.getElementsByClassName('btn'); + for (let i = 0; i < btnList.length; i++) { + disableButton(btnList[i]); + } + } + + function enableButtonStatus() { + let btnList = document.getElementsByClassName('btn'); + for (let i = 0; i < btnList.length; i++) { + enableButton(btnList[i]); + } } function getPIPayload(leadJson) { @@ -63,44 +82,44 @@ } function validateFieldValueFormate() { + let error_msg = ''; let textEmail = "[data-id='Email']"; let textPhone = "[data-id='Phone']"; //Email - let email = document.querySelector(textEmail).value; - let phone = document.querySelector(textPhone).value; + // let email = document.querySelector(textEmail); + // if (email.value != '' && !/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/.test(email.value)) { + // error_msg += ';閭欢鏍煎紡閿欒'; + // } + // let phone = document.querySelector(textPhone); - let regEmail = /^[\w-]{3,12}@[\da-zA-Z]{2,6}\.[a-zA-Z]+$/; - let regPhone = /^1[3|5|8|7][0-9]\d{4,8}$/; + // if (phone.value != '' && !/^1[3|5|8|7][0-9]\d{4,8}$/.test(phone.value)) { + // error_msg += ';鐢佃瘽鍙风爜閿欒'; + // } - let emailFormate = regEmail.test(email); - let phoneFormate = regPhone.test(phone); - - console.log(emailFormate); - console.log(phoneFormate); - - - email.oninput = function () { - //email - if (emailFormate) { - //phone - phone.oninput = function () { - if (phoneFormate) { - return true; - } else { - return false; - } + let es = document.getElementsByTagName('select') + for(let ei in es){ + let e = es[ei]; + for(let opi in e.options){ + let op = e.options[opi]; + if(!op)continue; + if(op.value == "*****" && op.selected){ + error_msg += ';涓嬫媺妗嗕笉鑳戒富鍔ㄩ�夋嫨瀵嗘枃閫夐」'; } - } else { - return false; } } - return true; + + if (error_msg.length > 0 && error_msg[0] == ';') { + error_msg = error_msg.substring(1); + } + + return error_msg; } function getLeadInformation() { let nodelist = document.querySelectorAll("[data-id]"); let result = {} + result.RecordTypeId = '{!rtTypeId}'; for (let index = 0; index < nodelist.length; index++) { if (VLookUpFields.has(nodelist[index].getAttribute("data-id"))) { console.log(nodelist[index].id.indexOf('lkwgt')); @@ -109,220 +128,288 @@ let vlookUpNodeValue = document.getElementById(vlookUpNodeId).value; result[nodelist[index].getAttribute("data-id")] = vlookUpNodeValue; } + } else if (nodelist[index].type == 'checkbox') { + result[nodelist[index].getAttribute("data-id")] = nodelist[index].checked; + } else if (nodelist[index].type == 'select-multiple') { + //After Update By zhj 20220411 Start + let multiple = nodelist[index].getAttribute("data-id"); + let targets = document.querySelector("[data-id=" + multiple + "]").options; + let selValues = []; + for(i=0; i < targets.length; i++){ + if(targets[i].selected){ + selValues.push(targets[i].value); + } + } + let setValuesStr = JSON.stringify(selValues); + setValuesStr = setValuesStr.substring(1,setValuesStr.length-1); + if(setValuesStr){ + setValuesStr = setValuesStr.replace(/"/g,""); + if(setValuesStr.indexOf(',')!=-1){ + setValuesStr = setValuesStr.replace(/,/g,";"); + } + } + console.log('targets = ' + setValuesStr); + result[nodelist[index].getAttribute("data-id")] = setValuesStr; + //After Update By zhj 20220411 end } else { result[nodelist[index].getAttribute("data-id")] = nodelist[index].value; } + let x = index + 1; + if (x <= nodelist.length - 1 && (nodelist[x].getAttribute("data-id") == nodelist[index].getAttribute("data-id"))) { + index++; + } } - console.log(JSON.stringify(result)); - console.log('lead Number:' + result.Lead_No__c); - let leadJson = JSON.stringify(result); - let transId = "11111"; - let AWSDataId = "22222"; - - // Visualforce.remoting.Manager.invokeAction( - // '{!$RemoteAction.NewAndEditLeadController.saveLead}', - // leadJson, transId,{!isNewMode}, - // function (result, event) { - // console.log("result: " + result); - // window.open('/' + result.recordId, "_self"); - // }, - // { escape: true } - // ); return result; - - - //绗簩绉� - // let leadJson = {}; - // let fieldApiList = '{!fieldApiListStr}'.substring(1, '{!fieldApiListStr}'.length - 1).replace(/\"/g, "").split(','); - // for (var i in fieldApiList) { - // if(document.querySelector("[data-id=\"" + fieldApiList[i] + "\"]") != null){ - // leadJson[fieldApiList[i]] = document.querySelector("[data-id=\"" + fieldApiList[i] + "\"]").value; - // }else{ - // leadJson[fieldApiList[i]] = ''; - // } - // } - // return leadJson; } - function QueryLeadFromAWS(awsDataId) { - fetch(QueryLeadURL + '?dataId=' + awsDataId, { - method: 'GET', - headers: { - 'Content-Type': 'application/json', - 'pi_token': TestToken - } - }).then((data) => { - console.log('data = ' + data); - document.querySelector("[data-id='LastName']").value = data.object[0].lastName; - document.querySelector("[data-id='phone']").value = data.object[0].phone; - document.querySelector("[data-id='email']").value = data.object[0].email; - }) + function QueryLeadFromAWS() { + AWSService.query(staticResources.queryUrl, '{!AWSDataId}', queryBack, staticResources.token); } - function UpdatePIToAWS(awsToken, payloadForNewPI) { - fetch(UpdateLeadURL, { - method: 'POST', - body: payloadForNewPI, - headers: { - 'Content-Type': 'application/json', - //'token': awsToken + function QueryLeadFromAWSIFS() { + //staticResourceInquiryForm + AWSService.query(staticResourceInquiryForm.queryUrl, '{!AWSDataIdInquiryForm}', queryBackIFS, staticResourceInquiryForm.token); + } + var queryBack = function queryBack(data) { + console.log('data = ' + data); + if(document.querySelector("[data-id='LastName']")) + document.querySelector("[data-id='LastName']").value = data.object.lastName == null ? '' : data.object.lastName; + if(document.querySelector("[data-id='Phone']")) + document.querySelector("[data-id='Phone']").value = data.object.phone == null ? '' : data.object.phone; + if(document.querySelector("[data-id='Email']")) + document.querySelector("[data-id='Email']").value = data.object.email == null ? '' : data.object.email; + unblockUI(); + }; + var queryBackIFS = function queryBackIFS(data) { + console.log('data = ' + data); + //document.querySelector("[data-id='LastName']").value = document.querySelector("[data-id='Contact_Name__c']").value + if(document.querySelector("[data-id='Phone']")) + document.querySelector("[data-id='Phone']").value = data.object.phone == null ? '' : data.object.phone; + if(document.querySelector("[data-id='Email']")) + document.querySelector("[data-id='Email']").value = data.object.email == null ? '' : data.object.email; + unblockUI(); + }; + + var insertOrUpdateBack = function insertOrUpdateBack(payloadJson, result, isNewMode) { + console.log(result); + let r = result; + console.log('Result from AWS' + r); + console.log('payloadJson=' + payloadJson); + payloadJson.LastName = r.object[0].lastName; + payloadJson.Phone = r.object[0].phone; + payloadJson.Email = r.object[0].email; + payloadJson.Name_Encrypted__c = r.object[0].lastNameEncrypt; + payloadJson.Phone_Encrypted__c = r.object[0].phoneEncrypt; + payloadJson.Email_Encrypted__c = r.object[0].emailEncrypt; + //payloadJson.AWS_Data_Id__c = r.object[0].dataId; + payloadJson.AWS_Data_Id__c = '{!AWSDataId}'; + if (isNewMode || {!isCloneMode}) { + payloadJson.AWS_Data_Id__c = r.object[0].dataId; + delete payloadJson.OwnerId; + } else { + payloadJson.AWS_Data_Id__c = '{!AWSDataId}'; + } + if('{!rtTypeId}'){ + payloadJson.RecordTypeId = '{!rtTypeId}';//Add by zhj for Record Type Issue 20220421 + }else{ + delete payloadJson.RecordTypeId; + } + return payloadJson; + } + + var redirectCallBack = function redirectCallBack(sfId, errorMessage) { + if (sfId) { + if (redirectMode == 'Save') { + window.open('/' + sfId, '_self'); + } else if (redirectMode == 'SaveAndNew') { + window.open('/setup/ui/recordtypeselect.jsp?ent=' + '{!sobjecttypeForFrontEnd}' + '&retURL=/' + '{!sobjectPrefix}' + '/o&save_new_url=/' + '{!sobjectPrefix}' + '/e?retURL=%2F' + '{!sobjectPrefix}' + '%2Fo', '_self'); } - }).then((data) => { return data.json() }).then((result) => { - let r = JSON.parse(result); - console.log('Result from AWS' + r); - leadJson.lastName = r.object[0].lastName; - leadJson.phone = r.object[0].phone; - leadJson.email = r.object[0].email; - leadJson.Name_Encrypted__c = r.object[0].lastNameEncrypt; - leadJson.Phone_Encrypted__c = r.object[0].phoneEncrypt; - leadJson.Email_Encrypted__c = r.object[0].emailEncrypt; - leadJson.AWS_Data_Id__c = '{!AWSDataId}'; - let transId = result.txId; - let AWSDataId = r.object[0].dataId; + } else { + // alert(errorMessage); + alertErrorMessage(errorMessage); + } + } - // Assign the value to NonPII Data Payload - //7. New NonPII Data To Salesforce - Visualforce.remoting.Manager.invokeAction( - '{!$RemoteAction.NewAndEditLeadController.saveLead}', - leadJson, transId, {!isNewMode}, - function (result, event) { - if (event.status) { - if (result.stauts == 'success') { - //get Lead Id from sf backend - let leadId = result.recordId; - //8. Confirm Trans to AWS - transParameters = { - txId: transId, - isSuccess: event.status - }; - fetch(TransactionURL, { - method: 'POST', - body: JSON.stringify(transParameters), - headers: { - 'Content-Type': 'application/json', - // 'token': awsToken - } - }).then((result) => { - if (JSON.parse(result).status == 0) { - //9. Redirect to lead Id page. - window.location.href = LeadIdPage; - // let data = { - // transId:result.txId, - // dataId:dataId, - // status:result.status - // } - // return JSON.stringify(data); - } - }) - // window.open(LeadIdPage); - // console.log(result); - // window.location.href = LeadIdPage; - } else { - //result.stauts == 'fail' - } + function UpdatePIToAWS(leadJson, payloadForNewPI) { + let controllerSaveMethod = '{!$RemoteAction.NewAndEditLeadController.saveLead}'; + let obj = JSON.parse(payloadForNewPI); + obj[0].dataId = '{!AWSDataId}'; + let payloadForNewPIJson = JSON.stringify(obj); + AWSService.update(staticResources.updateUrl, leadJson, payloadForNewPIJson, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, false, insertOrUpdateBack, redirectCallBack); + } + + function NewPIToAWS(leadJson, payloadForNewPI) { + let controllerSaveMethod = '{!$RemoteAction.NewAndEditLeadController.saveLead}'; + AWSService.insert(staticResources.newUrl, leadJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, true, insertOrUpdateBack, redirectCallBack); + } + + function checkRequiredFieldMsg(formData) { + let blankRequiredFields = ''; + for (i = 0; i < requiredFieldAPIList.length; i++) { + if (formData[requiredFieldAPIList[i]] && !VLookUpFields.has(requiredFieldAPIList[i])) { + continue; + }else if(VLookUpFields.has(requiredFieldAPIList[i]) && formData[requiredFieldAPIList[i]] != '000000000000000'){ + continue; + } else { + let fieldAPIValue = requiredFieldAPIList[i] + let fieldLabelValue = fieldAPIToLabelMap[fieldAPIValue]; + if (requiredAPIToChangedLabelMap.has(fieldAPIValue)) { + fieldLabelValue = requiredAPIToChangedLabelMap.get(fieldAPIValue); } - }, - { escape: true } - ); - }).catch (error => { - console.log(error); - }); - } - function NewPIToAWS(leadJson,awsToken, payloadForNewPI) { - console.log('Process New PI Data'); - console.log(JSON.stringify(payloadForNewPI)); - fetch(NewLeadURL, { - method: 'POST', - body: payloadForNewPI, - headers: { - 'Content-Type': 'application/json', - 'pi_token': awsToken - } - }).then((data) => { console.log('data='+data);return data.json() }).then((result) => { - console.log(result); - let r = result; - console.log('Result from AWS' + r); - console.log('leadJson='+leadJson); - leadJson.lastName = r.object[0].lastName; - leadJson.phone = r.object[0].phone; - leadJson.email = r.object[0].email; - leadJson.Name_Encrypted__c = r.object[0].lastNameEncrypt; - leadJson.Phone_Encrypted__c = r.object[0].phoneEncrypt; - leadJson.Email_Encrypted__c = r.object[0].emailEncrypt; - leadJson.AWS_Data_Id__c = 'testAWSID'; - let transId = result.txId + ''; - let AWSDataId = r.object[0].dataId; - - // Assign the value to NonPII Data Payload - //7. New NonPII Data To Salesforce - Visualforce.remoting.Manager.invokeAction( - '{!$RemoteAction.NewAndEditLeadController.saveLead}', - JSON.stringify(leadJson), transId, {!isNewMode}, - function (result, event) { - if (event.status) { - console.log('Lead Id from SF Backend:'+JSON.stringify(result)); - if (result.status == 'success') { - //get Lead Id from sf backend - let leadId = result.recordId; - window.open('/'+leadId,'_self'); - //8. Confirm Trans to AWS - // transParameters = { - // txId: transId, - // isSuccess: result.status - // }; - // fetch(TransactionURL, { - // method: 'POST', - // body: JSON.stringify(transParameters), - // headers: { - // 'Content-Type': 'application/json', - // 'pi_token': TestToken - // } - // }).then((result) => { - // if (JSON.parse(result).status == 0) { - // //9. Redirect to lead Id page. - // window.location.href = LeadIdPage; - // // let data = { - // // transId:result.txId, - // // dataId:dataId, - // // status:result.status - // // } - // // return JSON.stringify(data); - // } - // }) - // window.open(LeadIdPage); - // console.log(result); - // window.location.href = LeadIdPage; - } else { - //result.stauts == 'fail' - } + if (blankRequiredFields == '') { + blankRequiredFields = blankRequiredFields + fieldLabelValue; + } else { + blankRequiredFields = blankRequiredFields + ',' + fieldLabelValue; } - }, - { escape: true } - ); - }).catch (error => { - console.log(error); - }); + + } + } + return blankRequiredFields; } - function saveLeadProcess() { + function saveLeadProcess(saveMode) { + EditButton(true); + + disableButtonStatus(); + redirectMode = saveMode; + console.log('redirectMode' + redirectMode); + hiddenErrorMsgNode(); //1. Get Lead Information from Form let leadJson = getLeadInformation(); //2. Validate the Lead field value formate, for example the email formate or phone formate - // let validationResultMessage = validateFieldValueFormate(); - // console.log(validationResultMessage); - // if (!validationResultMessage) { - // //Popup error message. - To Do After POC - // alert('閭鎴栫數璇濆彿鐮佹牸寮忔湁璇�'); - // } - - // //3. Prepare the payload for New PI API To AWS - To Do + let validationResultMessage = validateFieldValueFormate(); + console.log(validationResultMessage); + if (validationResultMessage) { + //Popup error message. - To Do After POC + alertErrorMessage(validationResultMessage); + return + } + // Check Required Field + let checkRequiredFieldMsgResult = checkRequiredFieldMsg(leadJson); + if (checkRequiredFieldMsgResult) { + alertErrorMessage('{!Input_Required_Field_Msg}' + checkRequiredFieldMsgResult); + return + } + //3. Prepare the payload for New PI API To AWS - To Do let payloadForNewPI = getPIPayload(leadJson); - // //4. Get Authentication Information for AWS - // loadAWSAuthentication(); + //4. lead to AWS + ProcessPI(leadJson, payloadForNewPI); + } - // //5. lead to AWS - //ProcessPI(payloadForNewPI); - awsToken = TestToken; - NewPIToAWS(leadJson,awsToken, payloadForNewPI) + function alertErrorMessage(errorMsg) { + enableButtonStatus(); + let errorMsgNode = document.getElementById("page:form:block:msgContent"); + errorMsg = '閿欒锛氭棤鏁堟暟鎹��' + '\n' + errorMsg; + errorMsgNode.innerText = errorMsg; + errorMsgNode.className = 'pbError'; + unblockUI(); + EditButton(false); + } + function hiddenErrorMsgNode() { + let errorMsgNode = document.getElementById("page:form:block:msgContent"); + errorMsgNode.innerText = ''; + errorMsgNode.className = ''; + } + var newSearchContactWindow = null; + var contactHtmlString = '<img src="/img/s.gif" onclick="searchContact(\'page:form:contactId\')" alt="Reference Document Number Lookup" class="lookupIcon" title="Reference Document Number Lookup (New Window)"/>'; + function htmlToElement(html) { + var template = document.createElement('template'); + html = html.trim(); // Never return a text node of whitespace as the result + template.innerHTML = html; + return template.content.firstChild; + } + function searchContact(contactNodeId) { + //1. Check account value + let accountNodeId = document.querySelector("[data-id='Hospital_Name__c']").id + '_lkid'; + let accountValue = document.getElementById(accountNodeId).value; + let searchContactKeyWord = document.querySelector("[data-id='Contact_Name__c']").value; + console.log(accountValue); + if (accountValue != '000000000000000') { + let baseUrl = "/apex/SearchContactPage"; + let suffixUrl = "?contactId=" + contactNodeId + "&accountId=" + accountValue+"&searchContactKeyWord=" + searchContactKeyWord; + let newSearchContactParam = 'height=600,width=800,left=100,top=100,dialogHide=true,resizable=no,scrollbars=yes,toolbar=no,status=no'; + newSearchContactWindow = window.open(baseUrl + suffixUrl, 'Popup', newSearchContactParam); + if (window.focus) { + newSearchContactWindow.focus(); + } + return false; + } else { + //alertErrorMessage('{!PIPL_Input_Account_Error_Msg}'); + alertErrorMessage('璇峰厛閫夋嫨鍖婚櫌鍚�'); + } + } + function closePopupWindow() { + if (null != newSearchContactWindow) { + newSearchContactWindow.close(); + } + let contactInfoStr = document.getElementById('page:form:contactId').value; + console.log('closePopup:' + contactInfoStr); + let contactInfo = JSON.parse(contactInfoStr); + let contactNodeId = document.querySelector("[data-id='Contact_Name__c']").id + '_lkid'; + document.getElementById(contactNodeId).value = contactInfo.ContactId; + document.querySelector("[data-id='Contact_Name__c']").value = contactInfo.Name; + document.querySelector("[data-id='LastName']").value = contactInfo.Name; + } + function replaceSearchContactLookup() { + let lookUpNode = htmlToElement(contactHtmlString); + console.log(lookUpNode); + if (!{!isNewMode}) { + //1. Query Contact from AWS by AWSDataId + queryContactName() + //document.querySelector("[data-id='Contact_Name__c']").value = '鐜嬪'; + } + let parentNode = document.querySelector("[data-id='Contact_Name__c']").parentNode; + document.querySelector("[data-id='Contact_Name__c']").removeAttribute("onchange"); + parentNode.replaceChild(lookUpNode, document.querySelector("[data-id='Contact_Name__c']").parentNode.children[2]); + } + + function queryContactName() { + let sfId = document.getElementById(document.querySelector("[data-id='Contact_Name__c']").id + '_lkid').value; + let dataId = ''; + if ('{!contactsInfo}' != '') { + let contactsInfo = JSON.parse('{!contactsInfo}'); + dataId = contactsInfo[sfId]; + } else if ('{!contactDataId}' != '') { + dataId = '{!contactDataId}'; + } + let queryBackContactName = function queryBackContactName(result){ + document.querySelector("[data-id='Contact_Name__c']").value = result.object.lastName; + //document.querySelector("[data-id='LastName']").value = result.object.lastName; + }; + AWSService.query(staticResourcesContact.queryUrl, dataId, queryBackContactName, staticResourcesContact.token); + + // let url = staticResourcesContact.queryUrl + '?dataId=' + dataId; + // fetch(url, { + // method: 'GET', + // headers: { + // 'Content-Type': 'application/json', + // 'pi-token': staticResources.token + // } + // }).then((data) => { + // return data.json(); + // }).then((result) => { + // document.querySelector("[data-id='Contact_Name__c']").value = result.object.lastName; + // }) + } + function queryContactName2() { + let sfId = document.getElementById(document.querySelector("[data-id='Contact_Name__c']").id + '_lkid').value; + let dataId = ''; + if ('{!contactsInfo}' != '') { + let contactsInfo = JSON.parse('{!contactsInfo}'); + dataId = contactsInfo[sfId]; + } else if ('{!contactDataId}' != '') { + dataId = '{!contactDataId}'; + }else{ + //娌℃湁杩涜鍔犲瘑 + document.querySelector("[data-id='LastName']").value = document.querySelector("[data-id='Contact_Name__c']").value; + return; + } + let queryBackContactName = function queryBackContactName(result){ + if(document.querySelector("[data-id='Contact_Name__c']")) + document.querySelector("[data-id='Contact_Name__c']").value = result.object.lastName; + if(document.querySelector("[data-id='LastName']")) + document.querySelector("[data-id='LastName']").value = result.object.lastName; + }; + AWSService.query(staticResourcesContact.queryUrl, dataId, queryBackContactName, staticResourcesContact.token); } </script> <div class="bPageTitle"> @@ -345,10 +432,9 @@ </div> <div class="ptBreadcrumb"></div> </div> - <apex:form > - <!-- Error Msg--> - <apex:pageMessages /> - <apex:pageblock > + <apex:form id="form"> + <apex:inputHidden value="{!contactId}" id="contactId" /> + <apex:pageblock id="block"> <div class="pbHeader"> <table cellspacing="0" cellpadding="0" border="0"> <tbody> @@ -357,23 +443,38 @@ <img src="/img/s.gif" alt="" class="minWidth" title="" width="1" height="1" /> <h2 class="mainTitle">鎰忓悜缂栬緫</h2> </td> - <td class="pbButton" id="topButtonRow"> - <input class="btn" type="Button" value="淇濆瓨" onclick="saveLeadProcess()" /> - <input class="btn" type="Button" value="淇濆瓨骞舵柊寤�" onclick="saveLeadProcess()" /> + <td class="pbButton" id="topButtonRow" style="pointer-events: none; opacity: 0.4;"> + <input class="btn" type="Button" value="淇濆瓨" onclick="saveLeadProcess('Save')" /> + <input class="btn" type="Button" value="淇濆瓨骞舵柊寤�" onclick="saveLeadProcess('SaveAndNew')" /> <apex:commandButton action="{!cancel}" value="鍙栨秷" /> </td> </tr> </tbody> </table> </div> + <!-- Error Msg--> + <div style="text-align: center;"> + <apex:outputPanel id="errorMsg"> + <apex:pageMessages id="msgContent" escape="false" /> + </apex:outputPanel> + </div> + <br/> <!-- Iterate the layoutSections, which is a list of sections --> <apex:repeat value="{!layoutSections}" var="layoutSection"> - <apex:pageBlockSection title="{!layoutSection.name}" collapsible="{!layoutSection.allowCollapse}" columns="{!layoutSection.columns}"> + <apex:pageBlockSection title="{!layoutSection.name}" showHeader="{!layoutSection.useHeader}" collapsible="{!layoutSection.allowCollapse}" + columns="{!layoutSection.columns}"> <!--Each section has layoutFields, let's iterate them as well--> <apex:repeat value="{!layoutSection.layoutFields}" var="layoutField"> - <apex:inputField html-data-id="{!layoutField.fieldAPI}" value="{!Lead[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)}" + <!-- <apex:inputField html-data-id="{!layoutField.fieldAPI}" value="{!Lead[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&&isNewMode}" required="{!layoutField.isRequired}" /> + <apex:inputField html-data-id="{!layoutField.fieldAPI}" value="{!Lead[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&&layoutField.fieldAPI!='RecordTypeId'}" required="{!layoutField.isRequired}" /> + <apex:outputField html-data-id="{!layoutField.fieldAPI}" value="{!Lead[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&&layoutField.fieldAPI=='RecordTypeId'}" /> --> + <apex:inputField styleClass="PIBackApi PIBackApi_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Lead[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&&isNewMode}" required="{!layoutField.isRequired}" /> + <apex:inputField styleClass="PIBackApi PIBackApi_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Lead[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&¬(isNewMode)&&layoutField.fieldAPI!='RecordTypeId'}" + required="{!layoutField.isRequired}" /> + <apex:outputField styleClass="PIBackApi PIBackApi_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Lead[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&¬(isNewMode)&&layoutField.fieldAPI=='RecordTypeId'}" + /> <apex:pageblocksectionitem rendered="{!layoutField.isPlaceHolder}"> </apex:pageblocksectionitem> </apex:repeat> @@ -382,17 +483,257 @@ </apex:repeat> <script> sfdcPage.appendToOnloadQueue(function () { + + //鍒ゆ柇鏄惁涓哄彧璇婚�夐」 + var layoutSections = JSON.parse('{!layoutSectionsStr}'); + for (let m = 0; m < layoutSections.length; m++) { + let layoutSection = layoutSections[m].layoutFields; + for (let n = 0; n < layoutSection.length; n++) { + let layoutField = layoutSection[n]; + if (layoutField.fieldAPI != '' && document.querySelector("[data-id='"+layoutField.fieldAPI+"']") != null) { + let e = document.querySelector("[data-id='"+layoutField.fieldAPI+"']"); + e.disabled = !(layoutField.editableField); + if (!(layoutField.editableField)) { + if (e.getAttribute("multiple") && e.getAttribute("multiple") == 'multiple') { + e.parentNode.classList.add("disabledbutton"); + } + if (e.tagName == 'DIV') { + e.classList.add("disabledbutton"); + } + } + } + } + } + //1. Set Last Name label - document.querySelector("[data-id='LastName']").parentNode.parentNode.parentNode.children[2].children[0].innerText = '濮撳悕'; + console.log('NameLabel = ' + '{!PIPL_Name_Label}') + document.querySelector("[data-id='LastName']").parentNode.parentNode.parentNode.children[0].children[0].innerText = '{!PIPL_Name_Label}'; //2. Query AWS Data by dataId console.log('Mode for Lead Page:' + {!isNewMode}); if (!{!isNewMode}) { - //2.1. Query AWS Data by - let leadPIData = QueryLeadFromAWS({!awsDataId}); - //2.2. Update the value to Front-End - //document.querySelector("[data-id='LastName']").value = '234234'; - } + blockme();//for loading search by Li Jun 20220218 + QueryLeadFromAWS(); + } + //Replace Vlookup Field + replaceSearchContactLookup(); + //3. Set Readonly Attribute + document.querySelector("[data-id='OwnerId']").classList.add("disabledbutton"); + + //鏄惁瑙e瘑鑱旂郴浜� + if('{!isDecryptContact}' == '1'){ + queryContactName2(); + } + + + //濡傛灉鏄骇鍝佸挩璇㈠崟杩囨潵鐨� + if ('{!ifc}' != '') { + blockme(); + //鐘舵�� + if(document.querySelector("[data-id='Status']")) + document.querySelector("[data-id='Status']").value = '鏈窡杩�' + //浼氳璇㈤棶鍗� + if ('{!ifc.Id}' && document.querySelector("[data-id='Lead_Inquiry_form__c']")) + document.getElementById(document.querySelector("[data-id='Lead_Inquiry_form__c']").id+'_lkid').value = '{!ifc.Id}' + if ('{!ifc.Name}' && document.querySelector("[data-id='Lead_Inquiry_form__c']")) + document.querySelector("[data-id='Lead_Inquiry_form__c']").value = '{!ifc.Name}' + //瀹㈡埛濮撳悕 + if ('{!ifc.Contact_Id__c}' && document.querySelector("[data-id='Contact_Name__c']")) + document.getElementById(document.querySelector("[data-id='Contact_Name__c']").id + '_lkid').value = '{!ifc.Contact_Id__c}' + //鍖婚櫌 + if ('{!ifc.Hospital_Name__c}' && document.querySelector("[data-id='Hospital_Name__c']")) + document.getElementById(document.querySelector("[data-id='Hospital_Name__c']").id+'_lkold').value = '{!ifc.Hospital_Name__c}' + if ('{!ifc.Hospital_ID__c}' && document.querySelector("[data-id='Hospital_Name__c']")) + document.getElementById(document.querySelector("[data-id='Hospital_Name__c']").id+'_lkid').value = '{!ifc.Hospital_ID__c}' + //鎴樼暐绉戝鍒嗙被 + if ('{!ifc.Department_Class__c}' && document.querySelector("[data-id='Department_Class__c']")) + document.getElementById(document.querySelector("[data-id='Department_Class__c']").id+'_lkold').value = '{!ifc.Department_Class__c}' + if ('{!ifc.Department_ID__c}' && document.querySelector("[data-id='Department_Class__c']")) + document.getElementById(document.querySelector("[data-id='Department_Class__c']").id+'_lkid').value = '{!ifc.Department_ID__c}' + //宸叉湁璇环鍚嶇О + if ('{!ifc.Opp_Name_Search__c}' && document.querySelector("[data-id='Opp_Name_Search__c']")) + document.getElementById(document.querySelector("[data-id='Opp_Name_Search__c']").id + '_lkold').value = '{!ifc.Opp_Name_Search__c}' + if ('{!ifc.Opp_Name_Search_ID__c}' && document.querySelector("[data-id='Opp_Name_Search__c']")) + document.getElementById(document.querySelector("[data-id='Opp_Name_Search__c']").id + '_lkid').value = '{!ifc.Opp_Name_Search_ID__c}' + //涓昏瀛︿細 + if ('{!ifc.Campaign__c}' && document.querySelector("[data-id='Campaign__c']")) + document.getElementById(document.querySelector("[data-id='Campaign__c']").id +'_lkold').value = '{!ifc.Campaign__c}' + if ('{!ifc.Campaign_ID__c}' && document.querySelector("[data-id='Campaign__c']")) + document.getElementById(document.querySelector("[data-id='Campaign__c']").id +'_lkid').value = '{!ifc.Campaign_ID__c}' + //鍙栨秷鍘熷洜 + if ('{!ifc.Cancel_Reason__c}' && document.querySelector("[data-id='Cancel_Reason__c']")) + document.querySelector("[data-id='Cancel_Reason__c']").value = '{!ifc.Cancel_Reason__c}' + //鐢佃瘽 + if ('{!ifc.Phone__c}' && document.querySelector("[data-id='Phone']")) + document.querySelector("[data-id='Phone']").value = '{!ifc.Phone__c}' + //閭欢 + if ('{!ifc.Email__c}' && document.querySelector("[data-id='Email']")) + document.querySelector("[data-id='Email']").value = '{!ifc.Email__c}' + //鍜ㄨ鍗曟潵婧� + if ('{!ifc.LeadSource__c}' && document.querySelector("[data-id='LeadSource']")) + document.querySelector("[data-id='LeadSource']").value = '{!ifc.LeadSource__c}' + //鎰忓悜鍖哄垎 + if ('{!ifc.Opportunity_Division__c}' && document.querySelector("[data-id='Opportunity_Division__c']")) + document.querySelector("[data-id='Opportunity_Division__c']").value = '{!ifc.Opportunity_Division__c}' + //濮旀墭浜嬮」 + if ('{!ifc.Request1__c}' && document.querySelector("[data-id='Request__c']")) { + var Request1__c = '{!ifc.Request1__c}'; + //璧嬪�肩粰绗簩涓閫夋 + var array = Request1__c.split(';'); + //璧嬪�肩粰绗簩涓閫夋 + for (var i = 0; i < array.length; i++) { + for (var j = document.querySelector("[data-id='Request__c']").parentNode.children[1].children[0].children[1].children[0].children[0].options.length - 1; j >= 0; j--) { + if (array[i] == document.querySelector("[data-id='Request__c']").parentNode.children[1].children[0].children[1].children[0].children[0].options[j].innerHTML) { + var option = new Option(); + option.text = array[i]; + option.value = j; + document.querySelector("[data-id='Request__c']").parentNode.children[1].children[0].children[1].children[2].children[0].add(option); + } + } + } + //鍒犻櫎绗竴涓閫夋鐨勯噸澶嶅�� + for (var i = 0; i < array.length; i++) { + for (var j = document.querySelector("[data-id='Request__c']").parentNode.children[1].children[0].children[1].children[0].children[0].options.length - 1; j >= 0; j--) { + if (array[i] == document.querySelector("[data-id='Request__c']").parentNode.children[1].children[0].children[1].children[0].children[0].options[j].innerHTML) { + document.querySelector("[data-id='Request__c']").parentNode.children[1].children[0].children[1].children[0].children[0].options[j] = null; + } + } + } + } + //绱ф�� + if ('{!ifc.Urgent__c}' && document.querySelector("[data-id='urgent__c']")) + document.querySelector("[data-id='urgent__c']").checked = '{!ifc.Urgent__c}' == 'false' ? false : true; + //鍏徃锛堢瀹わ級 = 绉戝鍚嶇О + if(document.querySelector("[data-id='Company']") && document.querySelector("[data-id='Hospital_Name__c']").value != ''){ + document.querySelector("[data-id='Company']").value = document.querySelector("[data-id='Hospital_Name__c']").value; + } + //鏌ユ壘瀹㈡埛濮撳悕 + queryContactName2(); + //瑙e瘑 + QueryLeadFromAWSIFS(); + + unblockUI(); + } + + document.getElementById('topButtonRow').style = ''; +聽 聽 聽 聽 聽 document.getElementById('bottomButtonRow').style = ''; + let previous_value = {}; + jQuery(".lookupInput input").each(function(i,e){ + let je =jQuery(e); + + let dataid = je.attr('data-id'); + if(['Contact_Name__c'].indexOf(dataid) < 0) return; + + jQuery(e).focus(function(){ + previous_value[this.id] = this.value; + }) + + jQuery(e).change(function(){ + if (previous_value[this.id] != jQuery(this).val()) { + document.getElementById(this.id+'_lkid').value = ''; + } + }) + }) + jQuery("body").on("change","input[data-id='Hospital_Name__c']",function(){ + setTimeout(() => { + console.log(document.getElementById(this.id+'_lkid').value); + var hospitalNameValue = document.getElementById(this.id+'_lkid').value; + if (hospitalNameValue != "000000000000000" && hospitalNameValue != '') { + console.log("hospitalNameValue = " + hospitalNameValue); + var ls = ['Department_Class__c']; + setVlookup(ls,hospitalNameValue); + }else{ + clearVlookup('Department_Class__c'); + } + }, 50); + }); + //Updated by Li Jun 20220323 Start + // jQuery(".lookupInput").each(function (i, e) { + // let je = jQuery(e).find('input'); + // je.attr("readonly", ""); + // je.css("background", "unset"); + + // let dataid = je.attr('data-id'); + // if (['Contact_Name__c'].indexOf(dataid) > -1) + // jQuery(e).children(":last-child").before('<img class="closeIcon" data-id="' + dataid + '" generate="" alt="Clear" src="/s.gif" style="display: inline-block;">'); + // }) + + // jQuery(".lookupInput").on("mouseenter", "img[generate]", function (e) { + // this.className = "closeIconOn"; + // }); + + // jQuery(".lookupInput").on("mouseleave", "img[generate]", function (e) { + // this.className = "closeIcon" + // }); + + + // jQuery(".lookupInput").on("click", "img[generate]", function (e) { + // let id = jQuery("input[data-id='" + jQuery(this).attr("data-id") + "']").attr("id"); + // let input = document.getElementById(id); + // if (input) { + // input.value = ''; + // let hidden = document.getElementById(id + '_lkid'); + // if (hidden) { + // hidden.value = ''; + // } + // } + // }); + //Updated by Li Jun 20220323 Start }); + + function setVlookup(lookups, lookup_id){ + //鍏徃锛堢瀹わ級 + document.querySelector("[data-id='Company']").value = document.querySelector("[data-id='Hospital_Name__c']").value; + let controllerSaveMethod = '{!$RemoteAction.NewAndEditLeadController.queryAccount}'; + Visualforce.remoting.Manager.invokeAction( + controllerSaveMethod, + JSON.stringify(lookups), lookup_id, + function (result, event) { + console.log("result = " + result); + if (result != null ){ + var obj = JSON.parse(result.replaceAll('&'+'quot;','"')); + for (let i = 0; i < lookups.length; i++) { + let lookup = lookups[i]; + if (!obj[lookup]) { + continue; + } + let ele = document.querySelector("[data-id='"+lookup+"']"); + let elei1 = document.getElementById(ele.id + '_lkid'); + let elei2 = document.getElementById(ele.id + '_lkold'); + + ele.value=obj[lookup].Name; + elei1.value = obj[lookup].Id; + elei2.value = obj[lookup].Name; + + let inputele = document.querySelector("[data-id='"+lookup+"']").parentNode; + if (inputele.childNodes.length > 4){ + inputele.childNodes[0].style = ""; + inputele.childNodes[1].style = "display: inline-block;"; + inputele.childNodes[2].style = "display: none;"; + } + + } + } + }, + { escape: true } + ); + }; + + function clearVlookup(lookup){ + let ele = document.querySelector("[data-id='"+lookup+"']"); + let elei1 = document.getElementById(ele.id + '_lkid'); + let elei2 = document.getElementById(ele.id + '_lkold'); + + ele.value=''; + elei1.value = ''; + elei2.value = ''; + + let inputele = document.querySelector("[data-id='"+lookup+"']").parentNode; + if (inputele.childNodes.length > 4){ + inputele.childNodes[0].style = "display: none;"; + inputele.childNodes[1].style = "display: none;"; + inputele.childNodes[2].style = ""; + } + } </script> <div class="pbBottomButtons"> <table cellspacing="0" cellpadding="0" border="0"> @@ -400,9 +741,9 @@ <tr> <td class="pbTitle"> <img src="/img/s.gif" alt="" class="minWidth" title="" width="1" height="1" /> </td> - <td class="pbButtonb" id="bottomButtonRow"> - <input class="btn" type="Button" value="淇濆瓨" onclick="saveLeadProcess()" /> - <input class="btn" type="Button" value="淇濆瓨骞舵柊寤�" onclick="saveLeadProcess()" /> + <td class="pbButton" id="bottomButtonRow" style="pointer-events: none; opacity: 0.4;"> + <input class="btn" type="Button" value="淇濆瓨" onclick="saveLeadProcess('Save')" /> + <input class="btn" type="Button" value="淇濆瓨骞舵柊寤�" onclick="saveLeadProcess('SaveAndNew')" /> <apex:commandButton action="{!cancel}" value="鍙栨秷" /> </td> </tr> -- Gitblit v1.9.1