From 2f183a6b0a83ec3f7d35375d5d25d200efc2a3e1 Mon Sep 17 00:00:00 2001 From: Li Jun <buli@deloitte.com.cn> Date: 星期二, 19 四月 2022 18:46:18 +0800 Subject: [PATCH] 20220419FixIssue --- force-app/main/default/pages/NewAndEditInquiryForm.page | 224 +++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 167 insertions(+), 57 deletions(-) diff --git a/force-app/main/default/pages/NewAndEditInquiryForm.page b/force-app/main/default/pages/NewAndEditInquiryForm.page index d4208cc..6e125ae 100644 --- a/force-app/main/default/pages/NewAndEditInquiryForm.page +++ b/force-app/main/default/pages/NewAndEditInquiryForm.page @@ -63,8 +63,9 @@ //payloadJson.AWS_Data_Id__c = r.object[0].dataId; payloadJson.AWS_Data_Id__c = '{!AWSDataId}'; - if (isNewMode) { + if (isNewMode || {!isCloneMode}) { payloadJson.AWS_Data_Id__c = r.object[0].dataId; + delete payloadJson.OwnerId; } else { payloadJson.AWS_Data_Id__c = '{!AWSDataId}'; } @@ -128,7 +129,7 @@ var VLookUpFields = {! VLookUpFieldsJson}; function ProcessPI(sobjJson, payloadForNewPI) { blockme(); - if ({!isNewMode}) { + if ({!isNewMode} || {!isCloneMode}) { NewPIToAWS(sobjJson, payloadForNewPI) }else { UpdatePIToAWS(sobjJson, payloadForNewPI) @@ -228,20 +229,26 @@ } else if (ele.type == 'checkbox') { result[field_api_name] = ele.checked; } else if (ele.type == 'select-multiple') { - //field_api_name - let multiple = field_api_name; - let targets = ""; - //InquiryForm鐗规畩澶勭悊 - if(multiple == "Product1__c"){ - targets = GetEleByClass(config.ApiPrefix+'_'+field_api_name).parentNode.children[1].rows[1].cells[2].innerText; - }else if(multiple == "Request1__c"){ - targets = GetEleByClass(config.ApiPrefix+'_'+field_api_name).parentNode.children[2].rows[1].cells[2].innerText; - }else{ - targets = GetEleByClass(config.ApiPrefix+'_'+field_api_name).parentNode.children[1].children[0].children[1].children[2].children[0].innerText; + //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); + } } - targets = targets.replace(/\n/g, ";"); - console.log('targets = ' + targets); - result[field_api_name] = targets; + 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[field_api_name] = ele.value; } @@ -382,18 +389,21 @@ accountValue = document.getElementById(accountNodeId).value; } console.log(accountValue); + + let searchContactKeyWord = document.querySelector("[data-id='Contact_Name__c']").value; if(accountValue !='000000000000000'){ - suffixUrl = "?contactId="+contactNodeId+"&accountId="+accountValue; + suffixUrl = "?contactId=" + contactNodeId + "&accountId=" + accountValue+"&searchContactKeyWord=" + searchContactKeyWord; + let baseUrl = "/apex/SearchContactPage"; + 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{ - suffixUrl = "?contactId="+contactNodeId; + // suffixUrl = "?contactId="+contactNodeId+"&searchContactKeyWord=" + searchContactKeyWord; + alertErrorMessage('璇峰厛閫夋嫨绉戝鍚�'); } - let baseUrl = "/apex/SearchContactPage"; - 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; } //绐楀彛鍏抽棴鏃跺彂鐢� function closePopupWindow() { @@ -413,10 +423,12 @@ let lookUpNode = htmlToElement(contactHtmlString); console.log(lookUpNode); let eleContactValue = document.querySelector("[data-id='Contact_Name__c']").parentNode.parentNode.children[0].value; - if (!{!isNewMode} || (eleContactValue != '000000000000000')) { - //1. Query Contact from AWS by AWSDataId - queryContactName() - } + if (eleContactValue) { + if (!{!isNewMode} || (eleContactValue != '000000000000000')) { + //1. Query Contact from AWS by AWSDataId + queryContactName() + } + } 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]); @@ -425,15 +437,7 @@ function queryContactName() { let sfId = document.getElementById(document.querySelector("[data-id='Contact_Name__c']").id + '_lkid').value; let contactsInfo = JSON.parse('{!LookUpOverrideFieldsMapJson}'); - // if (contactsInfo == null){ - // contactsInfo = JSON.parse('{!urlCheckContactAWSid}'); - // } let dataId = contactsInfo[sfId]; - // let dataId = JSON.parse('{!urlCheckContactAWSid}') - // if (dataId == '') { - // let contactsInfo = JSON.parse('{!LookUpOverrideFieldsMapJson}'); - // dataId = contactsInfo[sfId]; - // } let queryContactBack = function(data){ //To Do later console.log('ContactData = ' + data.object); @@ -473,7 +477,8 @@ function searchLead(leadNodeId){ // let accountValue = ""; // let suffixUrl = ""; - let suffixUrl = "?leadId="+leadNodeId; + let searchLeadKeyWord = document.querySelector("[data-id='Lead_link__c']").value; + let suffixUrl = "?leadId="+leadNodeId+"&searchLeadKeyWord=" + searchLeadKeyWord; let baseUrl = "/apex/SearchLeadPage"; let newSearchLeadParam = 'height=600,width=800,left=100,top=100,dialogHide=true,resizable=no,scrollbars=yes,toolbar=no,status=no'; newSearchLeadWindow = window.open(baseUrl+suffixUrl, 'Popup', newSearchLeadParam); @@ -518,16 +523,15 @@ // document.querySelector("[data-id='Lead_link__c']").value = result.object.lastName; // }) } - </script> <div class="bPageTitle"> <div class="ptBody"> <div class="content"> <img src="/img/s.gif" alt="{! SobjectLabel}" class="pageTitleIcon" title="{! SobjectLabel}" /> - <h1 class="pageType">{! SobjectLabel}<apex:outputText rendered="{!isNewMode}">{!$Label.New}</apex:outputText><apex:outputText rendered="{!not(isNewMode)}">{!$Label.Edit}</apex:outputText> + <h1 class="pageType">{! SobjectLabel}<apex:outputText rendered="{!isNewMode || isCloneMode}">{!$Label.New}</apex:outputText><apex:outputText rendered="{!not(isNewMode || isCloneMode)}">{!$Label.Edit}</apex:outputText> <span class="titleSeparatingColon">:</span> </h1> - <h2 class="pageDescription"> <apex:outputText rendered="{!isNewMode}">{!$Label.New}</apex:outputText><apex:outputText rendered="{!not(isNewMode)}">{!$Label.Edit}</apex:outputText>{! SobjectLabel}</h2> + <h2 class="pageDescription"> <apex:outputText rendered="{!isNewMode || isCloneMode}">{!$Label.New}</apex:outputText><apex:outputText rendered="{!not(isNewMode || isCloneMode)}">{!$Label.Edit}</apex:outputText>{! SobjectLabel}</h2> <div class="blank"> </div> </div> <div class="links"> @@ -550,9 +554,9 @@ <tr> <td class="pbTitle"> <img src="/img/s.gif" alt="" class="minWidth" title="" width="1" height="1" /> - <h2 class="mainTitle">{! SobjectLabel}<apex:outputText rendered="{!isNewMode}">{!$Label.New}</apex:outputText><apex:outputText rendered="{!not(isNewMode)}">{!$Label.Edit}</apex:outputText></h2> + <h2 class="mainTitle">{! SobjectLabel}<apex:outputText rendered="{!isNewMode || isCloneMode}">{!$Label.New}</apex:outputText><apex:outputText rendered="{!not(isNewMode || isCloneMode)}">{!$Label.Edit}</apex:outputText></h2> </td> - <td class="pbButton" id="topButtonRow"> + <td class="pbButton" id="topButtonRow" style="pointer-events: none; opacity: 0.4;"> <input class="btn" type="Button" value="{!$Label.Save}" onclick="saveSobjectProcess()" /> <input class="btn" type="Button" value="{!$Label.SaveAndNew}" onclick="saveSobjectProcess(1)" /> <apex:commandButton action="{!cancel}" value="{!$Label.Cancel}" /> @@ -574,8 +578,9 @@ <!--Each section has layoutFields, let's iterate them as well--> <apex:repeat value="{!layoutSection.layoutFields}" var="layoutField"> - <apex:inputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Inquiry_form__c[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)}" - required="{!layoutField.isRequired}" /> + <apex:inputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Inquiry_form__c[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&&isNewMode}" required="{!layoutField.isRequired}" /> + <apex:inputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Inquiry_form__c[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&¬(isNewMode)&&layoutField.fieldAPI!='RecordTypeId'}" required="{!layoutField.isRequired}" /> + <apex:outputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Inquiry_form__c[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&¬(isNewMode)&&layoutField.fieldAPI=='RecordTypeId'}" /> <apex:pageblocksectionitem rendered="{!layoutField.isPlaceHolder}"> </apex:pageblocksectionitem> </apex:repeat> @@ -583,14 +588,35 @@ </apex:pageBlockSection> </apex:repeat> <script> + var api_id_map={}; sfdcPage.appendToOnloadQueue(function () { + var init_nodes = document.getElementsByClassName("PIBackApi"); + for(let ei in init_nodes){ + let e = init_nodes[ei]; + if(IsFormElement(e)){ + if(e.getAttribute("multiple") != 'multiple' || e.style.display == 'none' && e.id.indexOf('selected') < 0){ + api_id_map[GetEleApiName(e)] = e.id; + } + } + } + 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) { - document.querySelector("[data-id='"+layoutField.fieldAPI+"']").disabled = !(layoutField.editableField); + 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"); + }else if (e.tagName == 'DIV') { + e.classList.add("disabledbutton"); + }else if (VLookUpFields.indexOf(layoutField.fieldAPI) >= 0) { + e.parentNode.classList.add("disabledbutton"); + } + } } } } @@ -621,18 +647,12 @@ replaceSearchLeadLookup(); document.querySelectorAll("[data-id='OwnerId']")[0].classList.add("disabledbutton"); // document.querySelectorAll("[data-id='OwnerId']")[1].classList.add("disabledbutton"); - + document.getElementById('topButtonRow').style = ''; + document.getElementById('bottomButtonRow').style = ''; jQuery('a[data-id="OwnerId"]').remove(); - 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(['Hospital_Name__c','Hospital__c','OwnerId'].indexOf(dataid) > -1) return; - jQuery(e).children(":last-child").before('<img class="closeIcon" data-id="'+dataid+'" generate="" alt="Clear" src="/s.gif" style="display: inline-block;">'); - }) + //Updated by Li Jun 20220322 Start + /* jQuery(".lookupInput").on("mouseenter","img[generate]",function(e){ this.className = "closeIconOn"; @@ -652,8 +672,98 @@ hidden.value = ''; } } - }); + });*/ + //Updated by Li Jun 20220322 End + let previous_value = {}; + jQuery(".lookupInput input").each(function(i,e){ + let je =jQuery(e); + + let dataid = je.attr('data-id'); + if(['Contact_Name__c','Lead_link__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','Hospital__c']; + setVlookup(ls,hospitalNameValue); + }else{ + clearVlookup('Department_Class__c'); + clearVlookup('Hospital__c'); + } + }, 50); + }); }); + + function setVlookup(lookups, lookup_id){ + let controllerSaveMethod = '{!$RemoteAction.NewAndEditInquiryFormController.queryAccount}'; + Visualforce.remoting.Manager.invokeAction( + controllerSaveMethod, + JSON.stringify(lookups), lookup_id, + function (result, event) { + console.log("result = " + result); + if (result != null && result != '{}'){ + 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;"; + } + + } + }else { + clearVlookup('Department_Class__c'); + clearVlookup('Hospital__c'); + } + }, + { 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"> @@ -661,7 +771,7 @@ <tr> <td class="pbTitle"> <img src="/img/s.gif" alt="" class="minWidth" title="" width="1" height="1" /> </td> - <td class="pbButtonb" id="bottomButtonRow"> + <td class="pbButtonb" id="bottomButtonRow" style="pointer-events: none; opacity: 0.4;"> <input class="btn" type="Button" value="{!$Label.Save}" onclick="saveSobjectProcess()" /> <input class="btn" type="Button" value="{!$Label.SaveAndNew}" onclick="saveSobjectProcess()" /> <apex:commandButton action="{!cancel}" value="{!$Label.Cancel}" /> -- Gitblit v1.9.1