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/NewAndEditContact.page | 138 ++++++++++++++++++++++++++++++---------------- 1 files changed, 90 insertions(+), 48 deletions(-) diff --git a/force-app/main/default/pages/NewAndEditContact.page b/force-app/main/default/pages/NewAndEditContact.page index ef36178..8eed654 100644 --- a/force-app/main/default/pages/NewAndEditContact.page +++ b/force-app/main/default/pages/NewAndEditContact.page @@ -1,9 +1,9 @@ -<apex:page standardController="Contact" extensions="NewAndEditContactController" id="page"> - <apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" /> +<apex:page standardController="Contact" extensions="NewAndEditContactController" id="page" action="{!PageLoad}"> <script src="../../soap/ajax/53.0/connection.js" type="text/javascript"></script> <apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}"/> <apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}"/> <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}"/> + <apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" /> <script> var config = {}; @@ -61,8 +61,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}'; } @@ -71,7 +72,8 @@ queryBack:function (data) { console.log('data = ' + data); if(data.object){ - for(let f of config.AWSToSobjectNonEncryptedMapKeySet){ + for(let fi in config.AWSToSobjectNonEncryptedMapKeySet){ + let f = config.AWSToSobjectNonEncryptedMapKeySet[fi]; let ele = document.getElementById(api_id_map[config.AWSToSobjectNonEncryptedMap[f]]) if(data.object.hasOwnProperty(f) && ele){ @@ -86,32 +88,10 @@ } let arr = v.split(';'); - - // 娓呯┖宸叉湁閫夐」 - /* - let sl = document.getElementById(ele.id + '_selected'); - if(sl){ - for(let op of sl.options){ - op.selected = true; - } - let la = document.getElementById(ele.id + '_left_arrow'); - if(la){ - la.click(); - } - } - // 璧嬪�兼柊閫夐」 - let us = document.getElementById(ele.id + '_unselected'); - if(us){ - for(let op of us.options){ - op.selected = arr.indexOf(op.value)>-1; - } - let ra = document.getElementById(ele.id + '_right_arrow'); - if(ra){ - ra.click(); - } - }*/ - for(let op of ele.options){ + for(let opi in ele.options){ + let op = ele.options[opi]; + if(!op)continue; op.selected = arr.indexOf(op.value)>-1; } let ra = document.getElementById(ele.id + '_right_arrow'); @@ -155,7 +135,7 @@ var VLookUpFields = {! VLookUpFieldsJson}; function ProcessPI(sobjJson, payloadForNewPI) { blockme(); - if ({!isNewMode}) { + if ({!isNewMode} || {!isCloneMode}) { NewPIToAWS(sobjJson, payloadForNewPI) }else { UpdatePIToAWS(sobjJson, payloadForNewPI) @@ -169,7 +149,8 @@ } var GetEleApiName = function(ele){ - for(let c of ele.classList){ + for(let ci in ele.classList){ + let c = ele.classList[ci]; if(c.indexOf(config.ApiPrefix+'_')>-1){ return c.replace(config.ApiPrefix+'_',''); } @@ -178,6 +159,9 @@ } function IsFormTag(tag_name){ + if (!tag_name) { + return false; + } return ['input','select','textarea'].indexOf(tag_name.toLowerCase())>-1; } @@ -195,17 +179,37 @@ let textPhone = "[data-id='Phone']"; //Email let email = document.querySelector(textEmail); - if(email && email.previousSibling && email.previousSibling.className.indexOf('requiredBlock')>-1 && !/^[\w-]{3,12}@[\da-zA-Z]{2,16}\.[a-zA-Z]+$/.test(email.value)){ - error_msg += ';閭欢鏍煎紡閿欒'; + if(email ){ + if(email.value){ + if(!/^[\w-]{3,12}@[\da-zA-Z]{2,16}\.[a-zA-Z]+$/.test(email.value)){ + error_msg += ';閭欢鏍煎紡閿欒'; + } + }else{ + if(email.previousSibling && email.previousSibling.className.indexOf('requiredBlock')>-1){ + error_msg += ';閭欢鏍煎紡閿欒'; + } + } } let phone = document.querySelector(textPhone); - if(phone && phone.previousSibling && phone.previousSibling.className.indexOf('requiredBlock')>-1 && !/^1[3|5|8|7][0-9]\d{4,8}$/.test(phone.value)){ - error_msg += ';鐢佃瘽鍙风爜閿欒'; + if(phone && false ){ + if(phone.value){ + if(!/^1[3|5|8|7][0-9]\d{4,8}$/.test(phone.value)){ + error_msg += ';鐢佃瘽鍙风爜閿欒'; + } + }else{ + if(phone.previousSibling && phone.previousSibling.className.indexOf('requiredBlock')>-1){ + error_msg += ';鐢佃瘽鍙风爜閿欒'; + } + } } - for(let e of document.getElementsByTagName('select')){ - for(let op of e.options){ + 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 += ';涓嬫媺妗嗕笉鑳戒富鍔ㄩ�夋嫨瀵嗘枃閫夐」'; } @@ -244,9 +248,9 @@ v = ele.value; } - if(v && v != "000000000000000"){ + // if(v && v != "000000000000000"){ result[field_api_name] = v; - } + // } } } else if (ele.type == 'checkbox') { @@ -354,7 +358,7 @@ // Check Required Field let checkRequiredFieldMsgResult = checkRequiredFieldMsg(sobjJson); if (checkRequiredFieldMsgResult) { - alertErrorMessage('requiredErrorMsg' + checkRequiredFieldMsgResult); + alertErrorMessage('{! $Label.Input_Required_Field_Msg}' + checkRequiredFieldMsgResult); return } // //3. Prepare the payload for New PI API To AWS - To Do @@ -371,6 +375,7 @@ function alertErrorMessage(errorMsg) { let errorMsgNode = document.getElementById("page:form:block:msgContent"); + errorMsg = '閿欒锛氭棤鏁堟暟鎹��' + '\n' + errorMsg; errorMsgNode.innerText = errorMsg; errorMsgNode.className = 'pbError'; } @@ -384,10 +389,10 @@ <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"> @@ -409,9 +414,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}" /> @@ -433,8 +438,9 @@ <!--Each section has layoutFields, let's iterate them as well--> <apex:repeat value="{!layoutSection.layoutFields}" var="layoutField"> - <apex:inputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Contact[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)}" - required="{!layoutField.isRequired}" /> + <apex:inputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Contact[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&&isNewMode}" required="{!layoutField.isRequired}" /> + <apex:inputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Contact[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&¬(isNewMode)&&layoutField.fieldAPI!='RecordTypeId'}" required="{!layoutField.isRequired}" /> + <apex:outputField styleClass="{!ApiPrefix} {!ApiPrefix}_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Contact[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&¬(isNewMode)&&layoutField.fieldAPI=='RecordTypeId'}" /> <apex:pageblocksectionitem rendered="{!layoutField.isPlaceHolder}"> </apex:pageblocksectionitem> </apex:repeat> @@ -444,7 +450,8 @@ <script> var init_nodes = document.getElementsByClassName("PIBackApi"); var api_id_map={}; - for(let e of init_nodes){ + 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; @@ -454,6 +461,13 @@ } console.log(api_id_map); sfdcPage.appendToOnloadQueue(function () { + + jQuery('option').each(function(i,e){ + if(e.value == '_\x01_'){ + e.value = ''; + } + }) + //1. Set Last Name label //document.querySelector("[data-id='LastName']").parentNode.parentNode.parentNode.children[2].children[0].innerText = '濮撳悕'; //2. Query AWS Data by dataId @@ -461,7 +475,35 @@ if (!{!isNewMode}) { blockme(); QuerySobjectFromAWS(); + }else{ + let ot = jQuery('input[data-id="OwnerId"]'); + let oi = document.getElementById(ot.attr("id")+'_lkid'); + ot.val('{!CurrentUserName}'); + ot.attr("readonly",""); + ot.css("background","unset"); + ot.css("border","0"); + ot.css("outline","0"); + + if(oi){ + oi.value = '{!CurrentUserId}' + } } + document.getElementById('topButtonRow').style = ''; +聽 聽 聽 聽 聽 document.getElementById('bottomButtonRow').style = ''; + + jQuery('a[data-id="OwnerId"]').remove(); + + 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); + } + } + } + }); </script> <div class="pbBottomButtons"> @@ -470,7 +512,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