<apex:page standardController="Repair__c" extensions="NewRepairController" id="page">
|
<apex:includeScript value="{! URLFOR($Resource.AWSService, 'AWSService.js') }" />
|
<apex:stylesheet value="{!URLFOR($Resource.blockUIcss)}"/>
|
<apex:includeScript value="{!URLFOR($Resource.jquery183minjs)}"/>
|
<apex:includeScript value="{!URLFOR($Resource.PleaseWaitDialog)}"/>
|
<script src="../../soap/ajax/53.0/connection.js" type="text/javascript"></script>
|
<style>
|
.disabledbutton {
|
pointer-events: none;
|
opacity: 0.4;
|
}
|
</style>
|
<script>
|
//Initial Required Information
|
var staticResources = JSON.parse('{!staticResource}');
|
var requiredFieldAPIList = JSON.parse('{!requiredFieldAPIListStr}');
|
var fieldAPIToLabelMap = JSON.parse('{!fieldAPIToLabelMapStr}');
|
var VLookUpFields = new Set(['Delivered_Product__c','Hospital__c','Department_Class__c','Account__c','Dealer__c','Incharge_Staff_Contact__c','Maintenance_Contract__c','VM_Maintenance_Contract__c','Repair_Quotation_Id__c','RepairSubOrder__c','On_Call_ID__c','QIS_ID__c','InsReport__c','NFM108_Receipt__c','Rental_Apply_Equipment_Set_Detail__c']);
|
var userVLookUpFields = ['Incharge_Staff__c','Repair_Authenticator__c','OCSM_RC_CordingUser__c','OSH_Affirmant__c','OSHRAConfirmUser__c'];
|
var redirectMode = 'Save';
|
|
//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);
|
alertErrorMessage(errorMessage);
|
}
|
}
|
|
//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();
|
};
|
|
//Check If Insert Or Update
|
var insertOrUpdateBack = function insertOrUpdateBack(payloadJson, result, isNewMode) {
|
debugger
|
console.log(result);
|
let r = result;
|
console.log('Result from AWS' + JSON.stringify(r));
|
console.log('payloadJson=' + JSON.stringify(payloadJson));
|
payloadJson.address_Contacts__c = r.object[0].addressContacts;
|
payloadJson.address_Contacts_Name__c = r.object[0].addressContactsName;
|
payloadJson.address_Telephone__c = r.object[0].addressTelephone;
|
payloadJson.address_ZipCode__c = r.object[0].addressZipCode;
|
payloadJson.Detailed_Address__c = r.object[0].detailedAddress;
|
payloadJson.RepairApplicant__c = r.object[0].repairApplicant;
|
payloadJson.Address_Contacts_Encrypt__c = r.object[0].addressContactsEncrypt;
|
payloadJson.Address_Contacts_Name_Encrypt__c = r.object[0].addressContactsNameEncrypt;
|
payloadJson.Address_Telephone_Encrypt__c = r.object[0].addressTelephoneEncrypt;
|
payloadJson.Address_ZipCode_Encrypt__c = r.object[0].addressZipCodeEncrypt;
|
payloadJson.Detailed_Address_Encrypt__c = r.object[0].detailedAddressEncrypt;
|
payloadJson.Repair_Applicant_Encrypt__c = r.object[0].repairApplicantEncrypt;
|
payloadJson.AWS_Data_Id__c = '{!AWSDataId}';
|
if (isNewMode) {
|
payloadJson.AWS_Data_Id__c = r.object[0].dataId;
|
} else {
|
payloadJson.AWS_Data_Id__c = '{!AWSDataId}';
|
}
|
debugger
|
return payloadJson;
|
}
|
|
// New Or Edit
|
function ProcessPI(repairJson, payloadForNewPI) {
|
blockme();
|
if ({!isNewMode
|
}) {
|
NewPIToAWS(repairJson, payloadForNewPI)
|
}else {
|
UpdatePIToAWS(repairJson, payloadForNewPI)
|
}
|
}
|
|
//Get Sensitive Information
|
function getPIPayload(repairJson) {
|
let repairPayloadList = [];
|
let addressContacts = repairJson.address_Contacts__c;
|
let addressContactsName = repairJson.address_Contacts_Name__c;
|
let addressTelephone = repairJson.address_Telephone__c;
|
let addressZipCode = repairJson.address_ZipCode__c;
|
let detailedAddress = repairJson.Detailed_Address__c;
|
let repairApplicant = repairJson.RepairApplicant__c;
|
let repairPIData = new Object();
|
repairPIData.addressContacts = addressContacts;
|
repairPIData.addressContactsName = addressContactsName;
|
repairPIData.addressTelephone = addressTelephone;
|
repairPIData.addressZipCode = addressZipCode;
|
repairPIData.detailedAddress = detailedAddress;
|
repairPIData.repairApplicant = repairApplicant;
|
repairPIData.sfRecordId = '';
|
console.log('repair PI Data:' + JSON.stringify(repairPIData));
|
repairPayloadList.push(repairPIData);
|
console.log(JSON.stringify(repairPayloadList));
|
return JSON.stringify(repairPayloadList);
|
}
|
|
//Check Validate Field Value
|
function validateFieldValueFormate() {
|
return true;
|
}
|
|
//Get Page Information
|
function getRepairInformation() {
|
let nodelist = document.querySelectorAll("[data-id]");
|
let result = {}
|
for (let index = 0; index < nodelist.length; index++) {
|
if (VLookUpFields.has(nodelist[index].getAttribute("data-id"))) {
|
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;
|
}
|
} else if (nodelist[index].type == 'checkbox') {
|
result[nodelist[index].getAttribute("data-id")] = nodelist[index].checked;
|
} else if (nodelist[index].type == 'select-multiple') {
|
//nodelist[index].getAttribute("data-id")
|
let multiple = nodelist[index].getAttribute("data-id");
|
let targets = document.querySelector("[data-id=" + multiple + "]").parentNode.children[1].children[0].children[1].children[2].children[0].innerText;
|
targets = targets.replace(/\n/g, ";");
|
console.log('targets = ' + targets);
|
result[nodelist[index].getAttribute("data-id")] = targets;
|
} else {
|
result[nodelist[index].getAttribute("data-id")] = nodelist[index].value;
|
}
|
let x = index + 1;
|
if (x <= nodelist.length - 1 && (nodelist[x].getAttribute("data-id") == nodelist[index].getAttribute("data-id"))) {
|
index++;
|
}
|
}
|
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;
|
}
|
}
|
result.work_location_select__c = document.querySelector("[id='page:form:j_id30:j_id34:0:j_id35:j_id36:18:j_id37']").value;
|
// result.ProblemDescription__c = document.querySelector("[aria-describedby = 'cke_34']").contentWindow.document.getElementsByTagName('body')[0].innerHTML
|
console.log(JSON.stringify(result));
|
return result;
|
}
|
|
//Query from AWS
|
function QueryRepairFromAWS() {
|
AWSService.query(staticResources.queryUrl, '{!AWSDataId}', queryBack, staticResources.token);
|
}
|
|
//Update Sensitive Information to AWS
|
function UpdatePIToAWS(repairJson, payloadForNewPI) {
|
let controllerSaveMethod = '{!$RemoteAction.NewRepairController.saveRepair}';
|
let obj = JSON.parse(payloadForNewPI);
|
obj[0].dataId = '{!AWSDataId}';
|
let payloadForNewPIJson = JSON.stringify(obj);
|
AWSService.update(staticResources.updateUrl, repairJson, payloadForNewPIJson, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, false, insertOrUpdateBack, redirectCallBack);
|
}
|
|
//Insert Sensitive Information to AWS
|
function NewPIToAWS(repairJson, payloadForNewPI) {
|
let controllerSaveMethod = '{!$RemoteAction.NewRepairController.saveRepair}';
|
AWSService.insert(staticResources.newUrl, repairJson, payloadForNewPI, controllerSaveMethod, staticResources.token, staticResources.transactionUrl, true, insertOrUpdateBack, redirectCallBack);
|
}
|
|
//Check Required Fields
|
function checkRequiredFieldMsg(formData) {
|
let blankRequiredFields = '';
|
for (i = 0; i < requiredFieldAPIList.length; i++) {
|
if (formData[requiredFieldAPIList[i]]) {
|
continue;
|
} else {
|
if (blankRequiredFields == '') {
|
blankRequiredFields = blankRequiredFields + fieldAPIToLabelMap[requiredFieldAPIList[i]];
|
} else {
|
blankRequiredFields = blankRequiredFields + ',' + fieldAPIToLabelMap[requiredFieldAPIList[i]];
|
}
|
|
}
|
}
|
return blankRequiredFields;
|
}
|
|
//Base Process
|
function saveRepairProcess(saveMode) {
|
redirectMode = saveMode;
|
console.log('redirectMode' + redirectMode);
|
hiddenErrorMsgNode();
|
//1. Get repair Information from Form
|
let repairJson = getRepairInformation();
|
//2. Validate the repair field value formate, for example the email formate or phone formate
|
let validationResultMessage = validateFieldValueFormate();
|
console.log(validationResultMessage);
|
if (!validationResultMessage) {
|
//Popup error message. - To Do After POC
|
alertErrorMessage('邮箱格式输入有误,请重新输入!');
|
return
|
}
|
// Check Required Field
|
let checkRequiredFieldMsgResult = checkRequiredFieldMsg(repairJson);
|
if (checkRequiredFieldMsgResult) {
|
alertErrorMessage('{!Input_Required_Field_Msg}' + checkRequiredFieldMsgResult);
|
return
|
}
|
//3. Prepare the payload for New PI API To AWS - To Do
|
let payloadForNewPI = getPIPayload(repairJson);
|
|
//4. repair to AWS
|
ProcessPI(repairJson, payloadForNewPI);
|
}
|
|
//Alert Error Message
|
function alertErrorMessage(errorMsg) {
|
let errorMsgNode = document.getElementById("page:form:msgContent");
|
errorMsg = '错误:无效数据。' + '\n' + errorMsg;
|
errorMsgNode.innerText = errorMsg;
|
errorMsgNode.className = 'pbError';
|
unblockUI();
|
}
|
|
//Hide Error Message
|
function hiddenErrorMsgNode() {
|
let errorMsgNode = document.getElementById("page:form:msgContent");
|
errorMsgNode.innerText = '';
|
errorMsgNode.className = '';
|
}
|
</script>
|
<div class="bPageTitle">
|
<div class="ptBody">
|
<div class="content">
|
<img src="/img/s.gif" alt="修理" class="pageTitleIcon" title="修理" />
|
<h1 class="pageType">修理编辑
|
<span class="titleSeparatingColon">:</span>
|
</h1>
|
<h2 class="pageDescription">新建修理</h2>
|
<div class="blank"> </div>
|
</div>
|
<div class="links">
|
<a href="javascript:openPopupFocusEscapePounds(%27https://help.salesforce.com/apex/htdoor?loc=help&target=repairs_edit.htm&section=repairs&language=zh_CN&release=234.18.8&instance=CS117&showSplash=true%27, %27Help%27, 700, 600, %27width=700,height=600,resizable=yes,toolbar=yes,status=no,scrollbars=yes,menubar=yes,directories=no,location=no,dependant=no%27, false, false);"
|
title="此页面的帮助 (新窗口)">
|
<span class="helpLink">此页面的帮助</span>
|
<img src="/img/s.gif" alt="" class="helpIcon" />
|
</a>
|
</div>
|
</div>
|
<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 >
|
<div class="pbHeader">
|
<table cellspacing="0" cellpadding="0" border="0">
|
<tbody>
|
<tr>
|
<td class="pbTitle">
|
<img src="/img/s.gif" alt="" class="minWidth" title="" width="1" height="1" />
|
<h2 class="mainTitle">修理编辑</h2>
|
</td>
|
<td class="pbButton" id="topButtonRow">
|
<input class="btn" type="Button" value="保存" onclick="saveRepairProcess('Save')" />
|
<input class="btn" type="Button" value="保存并新建" onclick="saveRepairProcess('SaveAndNew')" />
|
<apex:commandButton action="{!cancel}" value="取消" />
|
</td>
|
</tr>
|
</tbody>
|
</table>
|
</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)}"
|
required="{!layoutField.isRequired}" />
|
<apex:pageblocksectionitem rendered="{!layoutField.isPlaceHolder}">
|
</apex:pageblocksectionitem>
|
</apex:repeat>
|
|
</apex:pageBlockSection>
|
</apex:repeat>
|
<script>
|
//Append Page
|
sfdcPage.appendToOnloadQueue(function () {
|
//2. Query AWS Data by dataId
|
console.log('Mode for repair Page:' + {!isNewMode});
|
if (!{!isNewMode}) {
|
blockme();
|
QueryRepairFromAWS();
|
};
|
document.querySelector("[data-id='OwnerId']").classList.add("disabledbutton");
|
});
|
</script>
|
<div class="pbBottomButtons">
|
<table cellspacing="0" cellpadding="0" border="0">
|
<tbody>
|
<tr>
|
<td class="pbTitle">
|
<img src="/img/s.gif" alt="" class="minWidth" title="" width="1" height="1" /> </td>
|
<td class="pbButtonb" id="bottomButtonRow">
|
<input class="btn" type="Button" value="保存" onclick="saveRepairProcess('Save')" />
|
<input class="btn" type="Button" value="保存并新建" onclick="saveRepairProcess('SaveAndNew')" />
|
<apex:commandButton action="{!cancel}" value="取消" />
|
</td>
|
</tr>
|
</tbody>
|
</table>
|
</div>
|
</apex:pageblock>
|
|
</apex:form>
|
</apex:page>
|