| | |
| | | <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); |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <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> <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> |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | <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> |
| | | |