From ea5686cada5a3e63edaa0d3e8c2db8def4f9ff31 Mon Sep 17 00:00:00 2001
From: Li Jun <buli@deloitte.com.cn>
Date: 星期一, 11 四月 2022 11:52:41 +0800
Subject: [PATCH] PIPLCloneButton

---
 force-app/main/default/pages/NewRepair.page |  268 ++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 232 insertions(+), 36 deletions(-)

diff --git a/force-app/main/default/pages/NewRepair.page b/force-app/main/default/pages/NewRepair.page
index eefaed7..4db1fd5 100644
--- a/force-app/main/default/pages/NewRepair.page
+++ b/force-app/main/default/pages/NewRepair.page
@@ -2,7 +2,7 @@
   @description       : 
   @author            : ChangeMeIn@UserSettingsUnder.SFDoc
   @group             : 
-  @last modified on  : 03-17-2022
+  @last modified on  : 03-30-2022
   @last modified by  : ChangeMeIn@UserSettingsUnder.SFDoc
 -->
 <apex:page standardController="Repair__c" extensions="NewRepairController" id="page">
@@ -19,6 +19,8 @@
     </style>
     <script>
         //Initial Required Information
+        var staticResourceContact = JSON.parse('{!staticResourceContact}');
+        var staticResourceAddress = JSON.parse('{!staticResourceAddress}');
         var staticResources = JSON.parse('{!staticResource}');
         var requiredFieldAPIList = JSON.parse('{!requiredFieldAPIListStr}');
         var fieldAPIToLabelMap = JSON.parse('{!fieldAPIToLabelMapStr}');
@@ -28,29 +30,50 @@
 
         //Redirect Required Parameter
         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=' + '{!sobjectId}' + '&retURL=/' + '{!sobjectPrefix}' + '/o&save_new_url=/' + '{!sobjectPrefix}' + '/e?retURL=%2F' + '{!sobjectPrefix}' + '%2Fo', '_self');
-                }
-            } else {
-                // alert(errorMessage);
+            if(sfId){
+                Visualforce.remoting.Manager.invokeAction(
+                   'NewRepairController.EncryptUpdate', // example
+                   sfId,
+                   function (result, event) {
+                       console.log(result);
+                       if(result.message){
+                       	alert(result.message);
+                       }
+                        if (redirectMode == 'Save') {
+                            window.open('/' + sfId, '_self');
+                        } else if (redirectMode == 'SaveAndNew') {
+                            window.open('/setup/ui/recordtypeselect.jsp?ent=' + '{!sobjectId}' + '&retURL=/' + '{!sobjectPrefix}' + '/o&save_new_url=/' + '{!sobjectPrefix}' + '/e?retURL=%2F' + '{!sobjectPrefix}' + '%2Fo', '_self');
+                        }
+                       
+                   },
+                   { escape: true }
+               );
+               
+            }else{
                 alertErrorMessage(errorMessage);
             }
         }
+        function GetEleApiName(ele){
+            for(let ci in ele.classList){
+                let c = ele.classList[ci];
+                if(c.indexOf('PIBackApi_')>-1){
+                    return c.replace('PIBackApi_','');
+                }
+            }
+            return '';
+        }
 
         //Query Required Parameter
-        var queryBack = function queryBack(data) {
-            console.log('data = ' + data);
-            document.querySelector("[data-id='address_Contacts__c']").value = data.object.addressContacts;
-            document.querySelector("[data-id='address_Contacts_Name__c']").value = data.object.addressContactsName;
-            document.querySelector("[data-id='address_Telephone__c']").value = data.object.addressTelephone;
-            document.querySelector("[data-id='address_ZipCode__c']").value = data.object.addressZipCode;
-            document.querySelector("[data-id='Detailed_Address__c']").value = data.object.detailedAddress;
-            document.querySelector("[data-id='RepairApplicant__c']").value = data.object.repairApplicant;
-            unblockUI();
-        };
+        // var queryBack = function queryBack(data) {
+        //     console.log('data = ' + data);
+        //     document.querySelector("[data-id='address_Contacts__c']").value = data.object.addressContacts;
+        //     document.querySelector("[data-id='address_Contacts_Name__c']").value = data.object.addressContactsName;
+        //     document.querySelector("[data-id='address_Telephone__c']").value = data.object.addressTelephone;
+        //     document.querySelector("[data-id='address_ZipCode__c']").value = data.object.addressZipCode;
+        //     document.querySelector("[data-id='Detailed_Address__c']").value = data.object.detailedAddress;
+        //     document.querySelector("[data-id='RepairApplicant__c']").value = data.object.repairApplicant;
+        //     unblockUI();
+        // };
 
         //Check If Insert Or Update
         var insertOrUpdateBack = function insertOrUpdateBack(payloadJson, result, isNewMode) {
@@ -129,8 +152,10 @@
                     console.log(nodelist[index].id.indexOf('lkwgt'));
                     if (nodelist[index].id.indexOf('lkwgt') == -1) {
                         let vlookUpNodeId = nodelist[index].id + '_lkid';
-                        let vlookUpNodeValue = document.getElementById(vlookUpNodeId).value;
-                        result[nodelist[index].getAttribute("data-id")] = vlookUpNodeValue;
+                        if(document.getElementById(vlookUpNodeId)!=null){
+                            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;
@@ -150,14 +175,60 @@
                 }
             }
             for (let i = 0; i < userVLookUpFields.length; i++) {
-                let userVlookUpNodeValue = document.querySelector("[data-id='" + userVLookUpFields[i] + "']").children[1].value;
-                console.log('userVlookUpNodeValue:'+userVlookUpNodeValue);
-                if(userVlookUpNodeValue!='000000000000000'){
-                    result[userVLookUpFields[i]] = userVlookUpNodeValue;
+                if(document.querySelector("[data-id='" + userVLookUpFields[i] + "']")!=null){
+                    // let userVlookUpNodeValue = document.querySelector("[data-id='" + userVLookUpFields[i] + "']").children[1].value;
+                    let e = document.getElementById(jQuery('[data-id="'+userVLookUpFields[i]+'"] .lookupInput input').attr('id')+'_lkid');
+                    //let userVlookUpNodeValue = jQuery('[data-id="Incharge_Staff__c"] .lookupInput input').val()
+                    // console.log('userVlookUpNodeValue:'+e.value);
+                    if(e && e.value!='000000000000000'){
+                        result[userVLookUpFields[i]] =  e.value;
+                    }
                 }               
             }
-            result.work_location_select__c = document.querySelector("[id='page:form:j_id30:j_id34:1:j_id35:j_id36:18:j_id37']").value;
+            // result.work_location_select__c = document.querySelector("[id='page:form:block:j_id34:1:j_id35:j_id36:18:j_id37']").value;
             // result.ProblemDescription__c = document.querySelector("[aria-describedby = 'cke_34']").contentWindow.document.getElementsByTagName('body')[0].innerHTML
+            /*
+            if(result.engineerSendDate__c){
+                result.engineerSendDate__c = result.engineerSendDate__c.replace(/\//g, '-')+':00';
+            }
+            */
+           let e = null;
+           e = document.getElementById(jQuery('[data-id="Incharge_Staff__c"] .lookupInput input').attr('id')+'_lkid');
+           if(e){
+            result.Incharge_Staff__c = e.value;
+           }
+
+           e = document.getElementById(api_id_map['work_location_select__c']);
+           if(e){
+            result.work_location_select__c = e.value;
+           }
+           e = document.getElementById(jQuery('[data-id="OCSM_RC_CordingUser__c"] .lookupInput input').attr('id')+'_lkid');
+           if(e){
+            result.OCSM_RC_CordingUser__c = e.value;
+           }
+           
+           e = document.getElementById(jQuery('[data-id="OSH_Affirmant__c"] .lookupInput input').attr('id')+'_lkid');
+           if(e){
+            result.OSH_Affirmant__c = e.value;
+           }
+           e = document.getElementById(jQuery('[data-id="OSHRAConfirmUser__c"] .lookupInput input').attr('id')+'_lkid');
+           if(e){
+            result.OSHRAConfirmUser__c = e.value;
+           }
+           e = document.getElementById(jQuery('[data-id="Repair_Authenticator__c"] .lookupInput input').attr('id')+'_lkid');
+           if(e){
+            result.Repair_Authenticator__c = e.value;
+           }
+           e = document.getElementById(jQuery('[data-id="Repair_Determine_result_ConfirmationUser__c"] .lookupInput input').attr('id')+'_lkid');
+           if(e){
+            result.Repair_Determine_result_ConfirmationUser__c = e.value;
+           }
+           //鏈慨鐞嗗綊杩樼悊鐢�
+           //page:form:block:j_id34:17:j_id35:j_id36:2:j_id37
+           //page:form:block:j_id34:17:j_id35:j_id36:2:j_id37
+           if(document.getElementById('page:form:block:j_id34:17:j_id35:j_id36:2:j_id37')){
+               result.Return_Without_Repair_Reason__c = document.getElementById('page:form:block:j_id34:17:j_id35:j_id36:2:j_id37').value;
+           }
             console.log(JSON.stringify(result));
             return result;
         }
@@ -166,6 +237,27 @@
         function QueryRepairFromAWS() {
             AWSService.query(staticResources.queryUrl, '{!AWSDataId}', queryBack, staticResources.token);
         }
+
+        var queryBack = function queryBack(data) {
+                    console.log(data);
+                    document.querySelector("[data-id='address_Contacts__c']").value = data.object.addressContacts;
+                    document.querySelector("[data-id='address_Contacts_Name__c']").value = data.object.addressContactsName;
+                    document.querySelector("[data-id='address_Telephone__c']").value = data.object.addressTelephone;
+                    document.querySelector("[data-id='address_ZipCode__c']").value = data.object.addressZipCode;
+                    document.querySelector("[data-id='Detailed_Address__c']").value = data.object.detailedAddress;
+                    document.querySelector("[data-id='RepairApplicant__c']").value = data.object.repairApplicant;
+                    AWSService.query(staticResourceAddress.queryUrl, '{!DecryptAWSDataId}', queryBackDecrypt, staticResourceAddress.token);
+                };
+        var queryBackContact = function queryBack(data) {
+                    console.log(data);
+                    document.querySelector("[data-id='address_Contacts__c']").value = data.object.lastName;
+                };
+        var queryBackDecrypt = function queryBack(data) {
+                    document.querySelector("[data-id='Detailed_Address__c']").value = data.object.detailedAddress;
+                    document.querySelector("[data-id='address_ZipCode__c']").value = data.object.zipCode;
+                    document.querySelector("[data-id='address_Telephone__c']").value = data.object.telephone;
+                    AWSService.query(staticResourceContact.queryUrl, '{!ContactAWSDataId}', queryBackContact, staticResourceContact.token);
+                }
 
         //Update Sensitive Information to AWS
         function UpdatePIToAWS(repairJson, payloadForNewPI) {
@@ -230,7 +322,7 @@
 
         //Alert Error Message
         function alertErrorMessage(errorMsg) {
-            let errorMsgNode = document.getElementById("page:form:msgContent");
+            let errorMsgNode = document.getElementById("page:form:block:msgContent");
             errorMsg = '閿欒锛氭棤鏁堟暟鎹��' + '\n' + errorMsg;
             errorMsgNode.innerText = errorMsg;
             errorMsgNode.className = 'pbError';
@@ -239,7 +331,7 @@
 
         //Hide Error Message
         function hiddenErrorMsgNode() {
-            let errorMsgNode = document.getElementById("page:form:msgContent");
+            let errorMsgNode = document.getElementById("page:form:block:msgContent");
             errorMsgNode.innerText = '';
             errorMsgNode.className = '';
         }
@@ -265,11 +357,7 @@
         <div class="ptBreadcrumb"></div>
     </div>
     <apex:form id="form">
-        <!-- Error Msg-->
-        <apex:outputPanel id="errorMsg">
-            <apex:pageMessages id="msgContent" escape="false" />
-        </apex:outputPanel>
-        <apex:pageblock >
+        <apex:pageblock id="block">
             <div class="pbHeader">
                 <table cellspacing="0" cellpadding="0" border="0">
                     <tbody>
@@ -287,13 +375,19 @@
                     </tbody>
                 </table>
             </div>
+            <!-- Error Msg-->
+            <div style="text-align: center;">
+                <apex:outputPanel id="errorMsg">
+                    <apex:pageMessages id="msgContent" escape="false" />
+                </apex:outputPanel>
+            </div>
             <!-- 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}">
 
                     <!--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="{!Repair__c[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)}"
+                        <apex:inputField html-title="{!layoutField.fieldAPI}" styleClass="PIBackApi PIBackApi_{!layoutField.fieldAPI}" html-data-id="{!layoutField.fieldAPI}" value="{!Repair__c[layoutField.fieldAPI]}" rendered="{!not(layoutField.isPlaceHOlder)}"
                             required="{!layoutField.isRequired}" />
                         <apex:pageblocksectionitem rendered="{!layoutField.isPlaceHolder}">
                         </apex:pageblocksectionitem>
@@ -302,6 +396,28 @@
                 </apex:pageBlockSection>
             </apex:repeat>
             <script>
+                function IsFormTag(tag_name){
+                if (!tag_name) {
+                    return false;
+                }
+                    return ['input','select','textarea'].indexOf(tag_name.toLowerCase())>-1;
+                }
+                
+                function IsFormElement(e){
+                    return IsFormTag(e.tagName);
+                }
+                var init_nodes = document.getElementsByClassName("PIBackApi");
+                var api_id_map={};
+                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;
+                        }
+                        
+                    }
+                }
+                
                 //Append Page
                 sfdcPage.appendToOnloadQueue(function () {
                     var layoutSections = JSON.parse('{!layoutSectionsStr}');
@@ -310,7 +426,16 @@
                         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");
+                                    }
+                                    if (e.tagName == 'DIV') {
+                                        e.classList.add("disabledbutton");
+                                    }
+                                }
                             }
                         }
                     }
@@ -319,8 +444,79 @@
                     if (!{!isNewMode}) {
                         blockme();
                         QueryRepairFromAWS();
+                        unblockUI();
                     };
-                    document.querySelector("[data-id='OwnerId']").classList.add("disabledbutton");
+                    if(document.querySelector("[data-id='OwnerId']") != null)
+                    	document.querySelector("[data-id='OwnerId']").classList.add("disabledbutton");
+
+                    let previous_value = {};
+                    jQuery(".lookupInput input").each(function(i,e){
+                        let je =jQuery(e);
+
+                        let dataid = je.attr('data-id');
+                        if(['Incharge_Staff_Contact__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 = '';
+                            }
+                        })
+                    })
+
+                    //缁翠慨涓績
+                    if('{!workLocationSelect}' != ''){
+                        let wlNode = document.getElementById('page:form:block:j_id34:1:j_id35:j_id36:18:j_id37');
+                        if(wlNode){
+                           wlNode.removeAttribute("disabled")
+                            var o = new Option()
+                            o.text = '{!workLocationSelect}'
+                           wlNode.options.add(o)
+                           wlNode.value = '{!workLocationSelect}'
+                        }
+                    }
+
+                    //濡傛灉浠庢姤淇瓙鍗曡繃鏉ワ紝闇�瑕佽В瀵嗘姤淇汉
+                    if('{!RepairSubOrderAWSDataId}' != ''){
+                        var staticResourceRepairSubOrder = JSON.parse('{!staticResourceRepairSubOrder}');
+                        let queryBackRepairSubOrder = function queryBackRepairSubOrder(data) {
+                            document.querySelector("[data-id='RepairApplicant__c']").value = data.object.repairApplicantName;
+                        };
+                        AWSService.query(staticResourceRepairSubOrder.queryUrl, '{!RepairSubOrderAWSDataId}', queryBackRepairSubOrder, staticResourceRepairSubOrder.token);
+                    }
+
+                    // 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 = '';
+                    //         }
+                    //     }
+                    // });
                 });
             </script>
             <div class="pbBottomButtons">

--
Gitblit v1.9.1