Li Jun
2022-05-09 8baef49505113fb3edee372c370e9c859cd7c762
force-app/main/default/pages/NewAndEditContact.page
@@ -1,9 +1,15 @@
<apex:page standardController="Contact" extensions="NewAndEditContactController" id="page" action="{!PageLoad}">
    <script src="../../soap/ajax/53.0/connection.js" type="text/javascript"></script>
    <apex:includeScript value="{!URLFOR($Resource.connection20)}"/>
    <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') }" />
    <style>
        .disabledbutton {
            pointer-events: none;
            opacity: 0.4;
        }
    </style>
    <script>
        
        var config = {};
@@ -133,10 +139,24 @@
        var fieldAPIToLabelMap = JSON.parse('{!fieldAPIToLabelMapStr}');
        console.log('{!staticResource}');
        var VLookUpFields = {! VLookUpFieldsJson};
        function EditButton(isDisabled){
            var topele = document.getElementById('topButtonRow');
            var bottomele = document.getElementById('bottomButtonRow');
            if (isDisabled) {
                topele.classList.add("disabledbutton");
                bottomele.classList.add("disabledbutton");
            }else {
                topele.classList.remove("disabledbutton");
                bottomele.classList.remove("disabledbutton");
            }
        }
        function ProcessPI(sobjJson, payloadForNewPI) {
            blockme();
            if ({!isNewMode} || {!isCloneMode}) {
               NewPIToAWS(sobjJson, payloadForNewPI)
                NewPIToAWS(sobjJson, payloadForNewPI)
            }else {
                UpdatePIToAWS(sobjJson, payloadForNewPI)
            }
@@ -164,8 +184,8 @@
            }
            return ['input','select','textarea'].indexOf(tag_name.toLowerCase())>-1;
        }
       function IsFormElement(e){
        function IsFormElement(e){
            return IsFormTag(e.tagName);
        }
@@ -175,34 +195,34 @@
        function validateFieldValueFormate() {
            let error_msg = '';
            let textEmail = "[data-id='Email']";
            let textPhone = "[data-id='Phone']";
            //Email
            let email = document.querySelector(textEmail);
            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);
            // let textEmail = "[data-id='Email']";
            // let textPhone = "[data-id='Phone']";
            // //Email
            // let email = document.querySelector(textEmail);
            // 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 && 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 += ';电话号码错误';
                    }
                }
            }
            // 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 += ';电话号码错误';
            //         }
            //     }
            // }
            let es = document.getElementsByTagName('select')
            for(let ei in es){
@@ -268,7 +288,7 @@
                
                // let e1 = document.getElementById(api_id_map[field_api_name]);
                // if(!result[field_api_name] && e1 && e1.value){
                //    result[field_api_name] = e1.value;
                //  result[field_api_name] = e1.value;
                // }
            }
            return result;
@@ -303,7 +323,6 @@
                    window.open('/' + sfId, '_self');
                }
            }
        }
        function UpdatePIToAWS(sobjJson, payloadForNewPI) {
@@ -339,6 +358,8 @@
            return blankRequiredFields;
        }
        function saveSobjectProcess(save_and_new) {
            EditButton(true);
            if(save_and_new){
                config.SaveAndNew = true;
            }
@@ -378,6 +399,7 @@
            errorMsg = '错误:无效数据。' + '\n' + errorMsg;
            errorMsgNode.innerText = errorMsg;
            errorMsgNode.className = 'pbError';
            EditButton(false);
        }
        function hiddenErrorMsgNode() {
            let errorMsgNode = document.getElementById("page:form:block:msgContent");
@@ -416,7 +438,7 @@
                                <img src="/img/s.gif" alt="" class="minWidth" title="" width="1" height="1" />
                                <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}" />
@@ -438,8 +460,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)&&not(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)&&not(isNewMode)&&layoutField.fieldAPI=='RecordTypeId'}" />
                        <apex:pageblocksectionitem rendered="{!layoutField.isPlaceHolder}">
                        </apex:pageblocksectionitem>
                    </apex:repeat>
@@ -451,20 +474,20 @@
            var api_id_map={};
            for(let ei in init_nodes){
                let e = init_nodes[ei];
               if(IsFormElement(e)){
                if(IsFormElement(e)){
                    if(e.getAttribute("multiple") != 'multiple' || e.style.display == 'none' && e.id.indexOf('selected') < 0){
                        api_id_map[GetEleApiName(e)] = e.id;
                    }
                }
            }
            console.log(api_id_map);
            sfdcPage.appendToOnloadQueue(function () {
                
                jQuery('option').each(function(i,e){
                   if(e.value == '_\x01_'){
                      e.value = '';
                   }
                    if(e.value == '_\x01_'){
                        e.value = '';
                    }
                })
                
                //1. Set Last Name label
@@ -475,7 +498,7 @@
                    blockme();
                    QuerySobjectFromAWS();
                }else{
                   let ot = jQuery('input[data-id="OwnerId"]');
                    let ot = jQuery('input[data-id="OwnerId"]');
                    let oi = document.getElementById(ot.attr("id")+'_lkid');
                    ot.val('{!CurrentUserName}');
                    ot.attr("readonly","");
@@ -484,9 +507,12 @@
                    ot.css("outline","0");
                    
                    if(oi){
                       oi.value = '{!CurrentUserId}'
                        oi.value = '{!CurrentUserId}'
                    }
                }
                document.getElementById('topButtonRow').style = '';
                document.getElementById('bottomButtonRow').style = '';
                jQuery('a[data-id="OwnerId"]').remove();
                var layoutSections = JSON.parse('{!layoutSectionsStr}');
@@ -508,7 +534,7 @@
                        <tr>
                            <td class="pbTitle">
                                <img src="/img/s.gif" alt="" class="minWidth" title="" width="1" height="1" />&nbsp;</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}" />