| | |
| | | <apex:page standardController="Lead" extensions="NewAndEditLeadController"> |
| | | <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)}"/> |
| | | <script src="../../soap/ajax/53.0/connection.js" type="text/javascript"></script> |
| | | <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"; |
| | | AWSService.sfSessionId = '{!GETSESSIONID()}'; |
| | | var staticResources = JSON.parse('{!staticResource}'); |
| | | var staticResourcesContact = JSON.parse('{!staticResourceContact}'); |
| | | 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}'); |
| | | console.log('{!contactsInfo}'); |
| | | 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 ProcessPI(leadJson, payloadForNewPI) { |
| | | blockme(); |
| | | if ({!isNewMode}) { |
| | | NewPIToAWS(leadJson, payloadForNewPI) |
| | | }else { |
| | | UpdatePIToAWS(leadJson, 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; |
| | | 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]); |
| | | } |
| | | console.log('AWS Configuration:' + AWSAppId + '----- APP Secret:' + AWSAppSecret); |
| | | } |
| | | |
| | | function enableButtonStatus() { |
| | | let btnList = document.getElementsByClassName('btn'); |
| | | for (let i = 0; i < btnList.length; i++) { |
| | | enableButton(btnList[i]); |
| | | } |
| | | } |
| | | |
| | | function getPIPayload(leadJson) { |
| | |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | for(let e of document.getElementsByTagName('select')){ |
| | | for(let op of e.options){ |
| | | 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')); |
| | |
| | | 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') { |
| | | //nodelist[index].getAttribute("data-id") |
| | | let multiple = nodelist[index].getAttribute("data-id"); |
| | | let targets = document.querySelector("[data-id=" + multiple + "]").parentNode.children[1].children[0].children[1].children[2].children[0].innerText; |
| | | targets = targets.replace(/\n/g, ";"); |
| | | console.log('targets = ' + targets); |
| | | result[nodelist[index].getAttribute("data-id")] = targets; |
| | | } 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 |
| | | var queryBack = function queryBack(data) { |
| | | console.log('data = ' + data); |
| | | document.querySelector("[data-id='LastName']").value = data.object.lastName.replace(/"/g,""); |
| | | document.querySelector("[data-id='Phone']").value = data.object.phone.replace(/"/g,""); |
| | | document.querySelector("[data-id='Email']").value = data.object.email.replace(/"/g,""); |
| | | 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) { |
| | | payloadJson.AWS_Data_Id__c = r.object[0].dataId; |
| | | } else { |
| | | payloadJson.AWS_Data_Id__c = '{!AWSDataId}'; |
| | | } |
| | | 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]]) { |
| | | 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) { |
| | | |
| | | 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(); |
| | | } |
| | | 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; |
| | | console.log(accountValue); |
| | | if (accountValue != '000000000000000') { |
| | | let baseUrl = "/apex/SearchContactPage"; |
| | | let suffixUrl = "?contactId=" + contactNodeId + "&accountId=" + accountValue; |
| | | 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; |
| | | } |
| | | 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 contactsInfo = JSON.parse('{!contactsInfo}'); |
| | | let dataId = contactsInfo[sfId]; |
| | | 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; |
| | | }) |
| | | } |
| | | </script> |
| | | <div class="bPageTitle"> |
| | |
| | | </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> |
| | |
| | | <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()" /> |
| | | <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"> |
| | |
| | | <script> |
| | | sfdcPage.appendToOnloadQueue(function () { |
| | | //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'; |
| | | } |
| | | if (!{!isNewMode}) { |
| | | 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"); |
| | | }); |
| | | </script> |
| | | <div class="pbBottomButtons"> |
| | |
| | | <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"> |
| | | <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> |