| | |
| | | <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"; |
| | | 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) |
| | | // } |
| | | // }); |
| | | // } |
| | | 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) |
| | | } |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | 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')); |
| | |
| | | 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); |
| | | document.querySelector("[data-id='LastName']").value = data.object.lastName == null ? '' : data.object.lastName; |
| | | document.querySelector("[data-id='Phone']").value = data.object.phone == null ? '' : data.object.phone; |
| | | 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 |
| | | document.querySelector("[data-id='Phone']").value = data.object.phone == null ? '' : data.object.phone; |
| | | 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}'; |
| | | } |
| | | 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; |
| | | 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){ |
| | | 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); |
| | | } |
| | | </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> |
| | |
| | | <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)}" |
| | | required="{!layoutField.isRequired}" /> |
| | | <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:pageblocksectionitem rendered="{!layoutField.isPlaceHolder}"> |
| | | </apex:pageblocksectionitem> |
| | | </apex:repeat> |
| | |
| | | </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"); |
| | | |
| | | //是否解密联系人 |
| | | if('{!isDecryptContact}' == '1'){ |
| | | queryContactName2(); |
| | | } |
| | | |
| | | |
| | | //如果是产品咨询单过来的 |
| | | if ('{!ifc}' != '') { |
| | | blockme(); |
| | | //状态 |
| | | document.querySelector("[data-id='Status']").value = '未跟进' |
| | | //会议询问单 |
| | | if ('{!ifc.Id}') |
| | | 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']").value = '{!ifc.Name}' |
| | | //客户姓名 |
| | | if ('{!ifc.Contact_Id__c}') |
| | | document.getElementById(document.querySelector("[data-id='Contact_Name__c']").id + '_lkid').value = '{!ifc.Contact_Id__c}' |
| | | //医院 |
| | | if ('{!ifc.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.getElementById(document.querySelector("[data-id='Hospital_Name__c']").id+'_lkid').value = '{!ifc.Hospital_ID__c}' |
| | | //战略科室分类 |
| | | if ('{!ifc.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.getElementById(document.querySelector("[data-id='Department_Class__c']").id+'_lkid').value = '{!ifc.Department_ID__c}' |
| | | //已有询价名称 |
| | | if ('{!ifc.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.getElementById(document.querySelector("[data-id='Opp_Name_Search__c']").id + '_lkid').value = '{!ifc.Opp_Name_Search_ID__c}' |
| | | //主要学会 |
| | | if ('{!ifc.Campaign__c}') |
| | | document.getElementById(document.querySelector("[data-id='Campaign__c']").id +'_lkold').value = '{!ifc.Campaign__c}' |
| | | if ('{!ifc.Campaign_ID__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']").value = '{!ifc.Cancel_Reason__c}' |
| | | //电话 |
| | | if ('{!ifc.Phone__c}') |
| | | document.querySelector("[data-id='Phone']").value = '{!ifc.Phone__c}' |
| | | //邮件 |
| | | if ('{!ifc.Email__c}') |
| | | 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']").value = '{!ifc.Opportunity_Division__c}' |
| | | //委托事项 |
| | | if ('{!ifc.Request1__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']").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(); |
| | | //解密 |
| | | 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"> |
| | |
| | | <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> |