From 8baef49505113fb3edee372c370e9c859cd7c762 Mon Sep 17 00:00:00 2001 From: Li Jun <buli@deloitte.com.cn> Date: 星期一, 09 五月 2022 11:50:04 +0800 Subject: [PATCH] PageBackup0509 --- force-app/main/default/pages/NewAndEditRepairSubOrder.page | 195 ++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 161 insertions(+), 34 deletions(-) diff --git a/force-app/main/default/pages/NewAndEditRepairSubOrder.page b/force-app/main/default/pages/NewAndEditRepairSubOrder.page index 2a393ec..bf52bee 100644 --- a/force-app/main/default/pages/NewAndEditRepairSubOrder.page +++ b/force-app/main/default/pages/NewAndEditRepairSubOrder.page @@ -1,6 +1,6 @@ <apex:page standardController="RepairSubOrder__c" extensions="NewAndEditRepairSubOrderController" id="page"> <apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" /> - <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)}"/> @@ -19,6 +19,7 @@ SaveAndNew:false, AWSToSobjectMap:{!AWSToSobjectMapJson}, AWSToSobjectNonEncryptedMap:{!AWSToSobjectNonEncryptedMapJson}, + AWSToSobjectNonEncryptedMapKeySet:{!AWSToSobjectNonEncryptedMapKeySet}, AWSToSobjectEncryptedMap:{!AWSToSobjectEncryptedMapJson}, SobjectToAWSModel:function (sobjJson) { let leadPayloadList = []; @@ -67,27 +68,36 @@ } else { payloadJson.AWS_Data_Id__c = '{!AWSDataId}'; } + if('{!rtTypeId}'){ + payloadJson.RecordTypeId = '{!rtTypeId}';//Add by zhj for Record Type Issue 20220421 + } return payloadJson; }, queryBack:function (data) { console.log('data = ' + data); if(data.object){ - for(let f in config.AWSToSobjectNonEncryptedMap){ - let ele = GetEleByClass(config.ApiPrefix + "_"+ config.AWSToSobjectNonEncryptedMap[f]); + 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){ // 澶氶�夌壒娈婂鐞� if(ele.type == 'select-multiple'){ //let me = GetEleByClass(config.ApiPrefix+'_'+field_api_name); - if(ele && data.object[f]){ - let arr = data.object[f].split(';'); - - // 缁欓殣钘忕殑select璧嬪�� - for(let op of ele.options){ - op.selected = arr.indexOf(op.value)>-1; + if(ele ){ + //_unselected + let v = ''; + if(data.object[f]){ + v = data.object[f]; } - // 鍒╃敤鎸夐挳缁欐樉绀虹殑select璧嬪�� + let arr = v.split(';'); + + 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'); if(ra){ ra.click(); @@ -96,6 +106,10 @@ } }else{ ele.value = data.object[f]; + } + + if(ele.type.indexOf("select")>-1 && ele.value){ + jQuery(ele).change() } } @@ -140,7 +154,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+'_',''); } @@ -149,11 +164,14 @@ } function IsFormTag(tag_name){ + if (!tag_name) { + return false; + } return ['input','select','textarea'].indexOf(tag_name.toLowerCase())>-1; } - function IsFormElement(tag_name){ - return ['input','select','textarea'].indexOf(tag_name)>-1; + function IsFormElement(e){ + return IsFormTag(e.tagName); } function getPIPayload(sobjJson) { @@ -163,20 +181,32 @@ function validateFieldValueFormate() { let error_msg = ''; // let textEmail = "[data-id='Email']"; - let textPhone = "[data-id='RepairApplicantTel__c']"; + //let textPhone = "[data-id='RepairApplicantTel__c']"; //Email // let email = document.querySelector(textEmail); // if(email && !/^[\w-]{3,12}@[\da-zA-Z]{2,16}\.[a-zA-Z]+$/.test(email.value)){ // error_msg += ';閭欢鏍煎紡閿欒'; // } - let phone = document.querySelector(textPhone); + // let phone = document.querySelector(textPhone); - if(phone && !/^1[3|5|8|7][0-9]\d{4,8}$/.test(phone.value)){ - error_msg += ';鐢佃瘽鍙风爜閿欒'; - } + // if(phone ){ + // 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 += ';涓嬫媺妗嗕笉鑳戒富鍔ㄩ�夋嫨瀵嗘枃閫夐」'; } @@ -194,11 +224,12 @@ let nodelist = document.getElementsByClassName(config.ApiPrefix); let result = {} - for (let index = 0; index < nodelist.length; index++) { - let ele = nodelist[index]; - let field_api_name = GetEleApiName(ele); + for (let index in api_id_map) { + let ele = document.getElementById(api_id_map[index]); + + let field_api_name = index; let tag_name = ele.tagName.toLowerCase(); - if(!IsFormElement(tag_name)){ + if(!IsFormTag(tag_name)){ console.log('tag_name='+tag_name+',field_api_name'+field_api_name+' is not a form element'); continue; } @@ -215,9 +246,9 @@ v = ele.value; } - if(v && v != "000000000000000"){ + // if(v && v != "000000000000000"){ result[field_api_name] = v; - } + // } } } else if (ele.type == 'checkbox') { @@ -233,6 +264,9 @@ result[field_api_name] = ele.value; } } + if(api_id_map['AssetType__c']){ + result.AssetType__c= document.getElementById(api_id_map['AssetType__c']).value!='_\x01_'?document.getElementById(api_id_map['AssetType__c']).value:''; + } return result; } function QuerySobjectFromAWS() { @@ -243,7 +277,18 @@ config.queryBack(data); unblockUI(); }; + 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 insertOrUpdateBack(payloadJson, result, isNewMode) { console.log(result); @@ -301,6 +346,7 @@ return blankRequiredFields; } function saveSobjectProcess(save_and_new) { + EditButton(true); if(save_and_new){ config.SaveAndNew = true; } @@ -320,7 +366,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 @@ -337,8 +383,10 @@ function alertErrorMessage(errorMsg) { let errorMsgNode = document.getElementById("page:form:block:msgContent"); + errorMsg = '閿欒锛氭棤鏁堟暟鎹��' + '\n' + errorMsg; errorMsgNode.innerText = errorMsg; errorMsgNode.className = 'pbError'; + EditButton(false); } function hiddenErrorMsgNode() { let errorMsgNode = document.getElementById("page:form:block:msgContent"); @@ -351,7 +399,9 @@ var closeField = ''; function replaceSearchContactLookup() { - if (!{!isNewMode}) { + let eleContactValue = document.querySelector("[data-id='Receiver__c']").parentNode.parentNode.children[0].value; + let eleContactsValue = document.querySelector("[data-id='Applicanter__c']").parentNode.parentNode.children[0].value; + if (!{!isNewMode} || (eleContactValue != '000000000000000') || (eleContactsValue != '000000000000000')) { //1. Query Contact from AWS by AWSDataId queryContactName() } @@ -498,7 +548,7 @@ <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> </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}" /> @@ -520,8 +570,12 @@ <!--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="{!RepairSubOrder__c[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)}" + <apex:inputField styleClass="PIBackApi PIBackApi_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!RepairSubOrder__c[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&&isNewMode}" required="{!layoutField.isRequired}" /> + <apex:inputField styleClass="PIBackApi PIBackApi_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!RepairSubOrder__c[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&¬(isNewMode)&&layoutField.fieldAPI!='RecordTypeId'}" + required="{!layoutField.isRequired}" /> + <apex:outputField styleClass="PIBackApi PIBackApi_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!RepairSubOrder__c[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)&¬(isNewMode)&&layoutField.fieldAPI=='RecordTypeId'}" + /> <apex:pageblocksectionitem rendered="{!layoutField.isPlaceHolder}"> </apex:pageblocksectionitem> </apex:repeat> @@ -531,14 +585,37 @@ <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)){ - api_id_map[GetEleApiName(e)] = e.id; + 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 () { + 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 = '濮撳悕'; //2. Query AWS Data by dataId @@ -551,7 +628,57 @@ replaceSearchContactLookup(); //3. Set Readonly Attribute 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','Department_Class__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;">'); + }) + + 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 = ''; + } + } + }); + */ + let previous_value = {}; + jQuery(".lookupInput input").each(function(i,e){ + let je =jQuery(e); + + let dataid = je.attr('data-id'); + if(['ContactId'].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 = ''; + } + }) + }) }); </script> <div class="pbBottomButtons"> @@ -560,7 +687,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