buli
2022-05-13 08a21f49f2eaf9cfc19ceb67b196cc36ba689305
force-app/main/default/pages/SWOPageRead.page
@@ -5,8 +5,97 @@
   <apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}"/>
   <apex:includeScript value="{!URLFOR($Resource.connection20)}"/>
   <apex:includeScript value="{!URLFOR($Resource.apex20)}"/>
   <!-- Update 20220315 By Chen Yanan -->
   <apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" />
   <script>
      // 20220313 PI改造 by Chen Yanan start
      AWSService.sfSessionId = '{!GETSESSIONID()}';
      var staticResources = JSON.parse('{!staticResource}');
      var contactstaticResource = JSON.parse('{!contactstaticResource}');
      var aws_data = {};
      console.log('AWS' + '{!contactAWSDataId}');
      function Decrypt1(r,dataIds,callback){
         if (!(dataIds && dataIds.length)) {
            if(callback)callback();
            return;
         }
         let Foo = function(){
            for (const id of dataIds) {
               if (aws_data.hasOwnProperty(id)) {
                  let d = aws_data[id];
                  let $e =j$("[aws-id='"+d.dataId+ "']");
                  $e.each((i,e)=>{
                     j$(e).html(d[j$(e).attr("aws-api")]);
                     //j$(e).attr('value',d[j$(e).attr("aws-api")])
                  })
               }
            }
            if(callback)callback();
         }
         let ids = [];
         for (const id of dataIds) {
            if (!aws_data.hasOwnProperty(id)) {
               ids.push(id);
            }
         }
         if (ids.length > 0) {
            // AWSService.search(r.searchUrl,JSON.stringify({
            //    "dataIds":ids
            // }),function(data){
            AWSService.query(r.queryUrl,ids[0],function(data){
               console.log('data: ' + JSON.stringify(data));
               // if(data.object && data.object.length > 0){
               if(data.object){
                  // for(let d of data.object){
                  //    if(d.dataId){
                  //       aws_data[d.dataId] = d;
                  //    }
                  // }
                  aws_data[data.object.dataId] = data.object;
                  Foo();
               }else{
                  if(callback)callback();
               }
            },r.token);
         }else{
            Foo();
         }
      }
      function DecryptAll(callback){
         let dataIds1 = [];
         j$('[aws-id][aws-obj="Contact"]').each((i,e)=>{
            let v = j$(e).attr('aws-id');
            if (v) {
               dataIds1.push(v);
            }
         });
         Decrypt1(contactstaticResource,dataIds1,callback);
      }
      function DecryptSWOAll(callback) {
         let dataIds2 = [];
         j$('[aws-id][aws-obj="SWO__c"]').each((i,e)=>{
            let v = j$(e).attr('aws-id');
            if (v) {
               dataIds2.push(v);
            }
         });
         Decrypt1(staticResources,dataIds2,callback);
      }
      j$(function(){
         DecryptSWOAll();
         DecryptAll();
      })
      // 20220313 PI改造 by Chen Yanan end
      j$(document).ready(function() {
         var type = j$(escapeVfId("type")).value();
         clickColorChange(type);
@@ -252,7 +341,14 @@
            <tr>
              <td colspan="2"><apex:outputField value="{!swo.OFFICE__c}"/></td>
              <td></td>
              <td colspan="2"><apex:outputField value="{!swo.CONTACT_NAME_HIDDEN__c}"/></td>
            <!-- 20220315 PI改造 by Chen Yanan start -->
              <!-- <td colspan="2"><apex:outputField value="{!swo.CONTACT_NAME_HIDDEN__c}"/></td> -->
            <!-- <td colspan="2" align="left" ><apex:outputField html-aws-obj="SWO__C" html-aws-api="contactName" html-aws-id="{!swo.CONTACT_NAME_HIDDEN__c}" id="CONTACT_NAME_HIDDEN__c" value="{!swo.CONTACT_NAME_HIDDEN__c}"/></td> -->
            <td colspan="2" align="left" >
               <apex:inputHidden id="AWS_Data_Id__c" value="{!swo.AWS_Data_Id__c}"/>
               <apex:outputField html-aws-obj="SWO__c" html-aws-api="contactNameHidden" html-aws-id="{!swo.AWS_Data_Id__c}" id="CONTACT_NAME_HIDDEN__c" value="{!swo.CONTACT_NAME_HIDDEN__c}"/>
            </td>
            <!-- 20220315 PI改造 by Chen Yanan End -->
           </tr>
           <tr>
@@ -403,8 +499,12 @@
       <table style="width: 100%;border-collapse: collapse;">
          <tr class="title">
             <td id="titleProduct" class="title1"><apex:commandLink oncomplete="clickColorChange('Product')" action="{!setProduct}" reRender="table" value="Product Info" /></td>
             <td id="titleCase" class="title1"><apex:commandLink oncomplete="clickColorChange('Case')" action="{!setCase}" reRender="table" value="Case Info" /></td>
             <td id="titlemail" class="title1"><apex:commandLink oncomplete="clickColorChange('mail')" action="{!setMail}" reRender="table" value="Mail Merge" /></td>
             <!-- PIPL Update 20220414 By Chen Yanan Start -->
            <!-- <td id="titleCase" class="title1"><apex:commandLink oncomplete="clickColorChange('Case')" action="{!setCase}" reRender="table" value="Case Info" /></td> -->
             <!-- After -->
            <td id="titleCase" class="title1"><apex:commandLink oncomplete="clickColorChange('Case');DecryptAll();" action="{!setCase}" reRender="table" value="Case Info" /></td>
             <!-- PIPL Update 20220414 By Chen Yanan End -->
            <td id="titlemail" class="title1"><apex:commandLink oncomplete="clickColorChange('mail')" action="{!setMail}" reRender="table" value="Mail Merge" /></td>
             <td id="titleTracking" class="title1"><apex:commandLink oncomplete="clickColorChange('Tracking')" action="{!setTracking}" reRender="table" value="Tracking" /></td>
             <td id="titleTechnical" class="title1"><apex:commandLink oncomplete="clickColorChange('Technical')" action="{!setTechnical}" reRender="table" value="Technical Info" /></td>
             <td id="titleEstimation" class="title1"><apex:commandLink oncomplete="clickColorChange('Estimation')" action="{!setEstimation}" reRender="table" value="Estimation" /></td>
@@ -447,18 +547,18 @@
                   <td>INTERNAL ONLY</td>
                </tr>
                <apex:repeat value="{!mailList}" var="mail" id="lines">
                   <tr class="row">
                   <tr class="row" id="{!mail.mm.AWS_Data_Id__c}" onmouseover="showPI('{!mail.mm.AWS_Data_Id__c}')">
                      <td><apex:outputLink value="/apex/SendEmail?id={!mail.mm.ID}&type=SWO&typeid={!swoid}&openType=View">View</apex:outputLink>&nbsp;&nbsp;<apex:outputLink value="/apex/SendEmail?id={!mail.mm.ID}&type=SWO&typeid={!swoid}&openType=Reply">Reply</apex:outputLink></td> 
                      <td><apex:outputField value="{!mail.mm.DATE__c}" /></td>
                      <td><apex:outputField value="{!mail.mm.FROM__c}" /></td>
                      <td><apex:outputField value="{!mail.mm.MESSAGE__c}" /></td>
                      <td><apex:outputText value="{!mail.mm.EMAIL_SENT__c}" /></td>
                      <td><apex:outputField value="{!mail.mm.toName__c}" /></td>
                      <td><apex:outputField value="{!mail.mm.ccName__c}" /></td>
                      <td><apex:outputField value="{!mail.mm.DATE__c}"/></td>
                      <td id="{!mail.mm.AWS_Data_Id__c}_FROM"><apex:outputField value="{!mail.mm.FROM__c}" /></td>
                      <td><apex:outputField value="{!mail.mm.MESSAGE__c}"/></td>
                      <td><apex:outputText value="{!mail.mm.EMAIL_SENT__c}"/></td>
                      <td id="{!mail.mm.AWS_Data_Id__c}_toName"><apex:outputField value="{!mail.mm.toName__c}"/></td>
                      <td id="{!mail.mm.AWS_Data_Id__c}_ccName"><apex:outputField value="{!mail.mm.ccName__c}"/></td>
                      <td><apex:outputText value="{!mail.haveAtt}" /></td>
                      <td>
                         <apex:repeat value="{!mail.attList}" var="att" id="lines">
                            <apex:outputLink value="/{!att.Id}"><c:PDFWbr targetStr="{!att.Name}" /></apex:outputLink>
                            <apex:outputLink value="/{!att.Id}"><c:PDFWbr targetStr="{!att.FileName__c}" /></apex:outputLink>
                            <br/>
                         </apex:repeat>
                      </td>
@@ -648,7 +748,13 @@
                 </tr>
                 <tr>
                    <td><apex:outputField value="{!swo.CASE_NUMBER__c}" ></apex:outputField></td>
                    <td><apex:outputField value="{!swo.EMAIL__c}"/></td>
                  <!-- PIPL Update 20220414 By Chen Yanan Start -->
                    <!-- <td><apex:inputField value="{!swo.EMAIL__c}"/></td> -->
                  <td colspan="2" align="left" >
                     <apex:inputField html-aws-obj="Contact" html-aws-api="email" html-aws-id="{!contactAWSDataId}" value="{!swo.EMAIL__c}" />
                  </td>
                  <!-- PIPL Update 20220414 By Chen Yanan End -->
                 </tr>
                 <tr>
                    <td class="hand">{!$ObjectType.SWO__c.fields.COMPANY__c.label}</td>
@@ -663,7 +769,13 @@
                    <td class="hand">{!$ObjectType.SWO__c.fields.TRAN__c.label}</td>
                 </tr>
                 <tr>
                    <td><apex:outputField value="{!swo.CONTACT__c}" ></apex:outputField></td>
                  <!-- 20220315 PI改造 by Chen Yanan start -->
                    <!-- <td><apex:outputField value="{!swo.CONTACT__c}" ></apex:outputField></td> -->
                  <td colspan="2" align="left" >
                     <!-- <a href="/{!swo.CONTACT__c}" aws-obj="Contact" aws-api="lastName" aws-id="{!contactAWSDataId}">{!swo.CONTACT__r.Name}</a> -->
                     <a href="/{!swo.CONTACT__c}" aws-obj="Contact" aws-api="lastName" aws-id="{!contactAWSDataId}">{!contactName}</a>
                  </td>
                  <!-- 20220315 PI改造 by Chen Yanan End -->
                    <td><apex:outputField value="{!swo.TRAN__c}"/></td>
                 </tr>
             </table>
@@ -1329,9 +1441,10 @@
          </apex:outputPanel>
          <apex:outputPanel rendered="{!IF(type = 'General' || type = 'All',true,false)}">
            <!-- Before PIPL Update by Li Jun 20220414 Start -->
             <apex:commandButton value="Attach" action="{!uploadFile}"></apex:commandButton>
            <!-- Before PIPL Update by Li Jun 20220414 End -->
             <input class="btn" type="Button" value="PIPL Attach" onclick="window.open('/apex/SWOFileUploadPage')" />
             <table class="tableCss" style="border:1px solid #000000;width: 80%">   
                <tr style="text-align:center;">
                   <th style="text-align:center;width: 33%;">File Name</th>
@@ -1341,9 +1454,9 @@
                <apex:repeat id="attachmentList" value="{!attachmentList}" var="attachment">
                   <tr style="text-align:center; vertical-align: middle;">
                      <!-- <td><output value="{!attachment.Name}" readonly="readonly" style="border:none;"/></td> -->
                      <td><apex:outputLink value="/{!attachment.Id}">{!attachment.Name}</apex:outputLink></td>
                      <td><apex:outputLink value="/{!attachment.Id}">{!attachment.FileName__c}</apex:outputLink></td>
                      <td><apex:outputField value="{!attachment.CreatedDate}"/></td>
                      <td><apex:outputField value="{!attachment.BodyLength}"/></td>
                      <!-- <td><apex:outputField value="{!attachment.BodyLength}"/></td> -->
                   </tr>
                </apex:repeat>
             </table>
@@ -1721,6 +1834,167 @@
      <br/>
      <br/>
      <apex:commandButton action="{!edit}"  value="EDIT" style="width: 5%;"/> 
      <script>
   function stringbuilder() {
      this.arr = new Array();
      this.append = function (str) {
         this.arr.push(str);
      }
      this.tostring = function () {
         return this.arr.join('');
      }
   }
         function toJSONString(s) {
               var sb = new stringbuilder()
               for (var i = 0; i < s.length; i++) {
                  var c = s[i];
                  switch (c) {
                     case '\"':
                        sb.append("\\\"");
                        break;
                     case '\\':
                        sb.append("\\\\");
                        break;
                     case '/':
                        sb.append("\\/");
                        break;
                     case '\b':
                        sb.append("\\b");
                        break;
                     case '\f':
                        sb.append("\\f");
                        break;
                     case '\n':
                        sb.append("\\n");
                        break;
                     case '\r':
                        sb.append("\\r");
                        break;
                     case '\t':
                        sb.append("\\t");
                        break;
                     case '=':
                        sb.append("=");
                        break;
                     case '&':
                        sb.append("&");
                        break;
                     case '?':
                        sb.append("?");
                        break;
                     case '%':
                        sb.append("%");
                        break;
                     default:
                        if ((c >= 0 && c <= 31) || c == 127)//在ASCⅡ码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符
                        {
                        }
                        else {
                           sb.append(c);
                        }
                        break;
                  }
               }
               return sb.tostring()
            }
         console.log('{!mailListStr}'.replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\s+/g,"").replace("\"/g","\\\""))
         var mailListObj = JSON.parse('{!mailListStr}'.replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\s+/g,""))
         var staticResourceMailMerge = JSON.parse('{!staticResourceMailMerge}')
         var mailList = []
         var PIDataObjList = {}
         function showPI(awsId){
            if(awsId){
               document.getElementById(awsId).children[2].children[0].children[0].innerText = PIDataObjList[awsId].author
               document.getElementById(awsId).children[5].children[0].innerText = PIDataObjList[awsId].premaryRecipient
               document.getElementById(awsId).children[6].children[0].innerText = PIDataObjList[awsId].cc
            }
         }
         for(var i=0;i<mailListObj.length;i++){
            mailList.push(mailListObj[i].mm.AWS_Data_Id__c)
         }
         var queryBack = function queryBack(data){
            console.log(data)
            if (data.object) {
               for (var i=0;i<data.object.length;i++) {
                  // var PIDataObj = {};
                  // var d = {};
                  // PIDataObj.author = data.object[i].author
                  // PIDataObj.premaryRecipient = data.object[i].premaryRecipient
                  // PIDataObj.cc = data.object[i].cc
                  // d[data.object[i].dataId] = PIDataObj
                  // PIDataObjList.push(d)
                  var PIDataObj = {};
                  PIDataObj.author = data.object[i].author
                  PIDataObj.premaryRecipient = data.object[i].premaryRecipient
                  PIDataObj.cc = data.object[i].cc
                  PIDataObjList[data.object[i].dataId] = PIDataObj;
               }
            }
            unblockUI();
         };
          document.body.onload = function(){
                blockme();
                console.log('appendToOnloadQueue');
            let searchPayload = new Object();
            searchPayload.dataIds = mailList;
            AWSService.search(staticResourceMailMerge.searchUrl,JSON.stringify(searchPayload),queryBack,staticResourceMailMerge.token);
            }
      </script>
   </apex:form>