import { LightningElement,api,track,wire } from 'lwc';
|
import { CurrentPageReference } from 'lightning/navigation';
|
import initData from '@salesforce/apex/lexNewAndEditMCController.initData';
|
import { NavigationMixin } from 'lightning/navigation';
|
import { AWSService } from 'c/piUtils';
|
import { ShowToastEvent } from 'lightning/platformShowToastEvent';
|
import lexPIPLCustomStyle from '@salesforce/resourceUrl/lexPIPLCustomStyle'
|
import { loadStyle } from 'lightning/platformResourceLoader';
|
import { decodeDefaultFieldValues } from "lightning/pageReferenceUtils";
|
import mainTenance_record from '@salesforce/label/c.mainTenance_record';
|
|
export default class lexNewAndEditMaintenanceContract extends NavigationMixin(LightningElement) {
|
sobjectType = 'Maintenance_Contract__c';
|
|
@api recordId;
|
@wire(CurrentPageReference) pageRef;
|
@track layout = [];
|
@track labelMap = {};
|
|
title;
|
recordTypeId = '' ;
|
//recordtyId = '012C600000003IvIAI';//原环境id :01210000000gTYqAAM 新环境id : 012C600000003IvIAI
|
recordtyId = mainTenance_record;
|
staticResource;
|
AWSDataId = '';
|
txId = '';
|
isNewMode = false;
|
isCloneMode = false;
|
isEditMode = false;
|
isLoading = false;
|
isClone = false;
|
saveAndNew = false;
|
sectionName = [];
|
fieldNameList = ['Name','Hospital__c','Department_Class__c','Department__c','Estimate_Target__c'];
|
AWSToSobjectMap = {};
|
recordData = {};
|
AWSService;
|
contactIdMap = {};
|
defaultValues = {};
|
filedsObj = {};
|
recordCopyId;
|
@track CopyFlg;
|
@track copyOfMc;
|
|
connectedCallback(){
|
this.isLoading = true;
|
loadStyle(this, lexPIPLCustomStyle);
|
this.AWSService = new AWSService();
|
if (this.pageRef && this.pageRef.state) {
|
this.recordTypeId = this.pageRef.state.recordTypeId;
|
this.isClone = this.pageRef.state.c__isClone;
|
console.log('this.recordTypeId = ' + this.recordTypeId);
|
// 获取从其他页面带来的参数
|
if (this.pageRef.state.defaultFieldValues) {
|
this.defaultValues = decodeDefaultFieldValues(
|
this.pageRef.state.defaultFieldValues
|
);
|
console.log('this.contactAWSDataId = ' + this.contactAWSDataId);
|
}
|
}
|
if(this.recordId){
|
this.isEditMode = true;
|
this.title = '编辑合同';
|
}else{
|
this.title = '新建合同';
|
if(this.isClone){
|
this.title = '继续新服务合同';
|
this.isCloneMode = true;
|
}else{
|
this.isNewMode = true;
|
}
|
}
|
|
|
setTimeout(() => {
|
this.init();
|
}, 1000);
|
}
|
|
init(){
|
if(this.isCloneMode){
|
this.recordId = this.pageRef.state.c__recordId;
|
}
|
this.recordCopyId = this.pageRef.state.c__recordId;
|
initData({
|
'rid': this.recordId,
|
'recordTypeId': this.recordtyId,
|
'sobjectType': this.sobjectType
|
}).then((r) => {
|
console.log('r===='+r.status);
|
r = JSON.parse(JSON.stringify(r));
|
if (r.status == 'Success') {
|
let layout = JSON.parse(r.entity.layout);
|
this.layout = layout;
|
this.recordData = r.entity.data;
|
// this.AWSToSobjectMap = JSON.parse(JSON.stringify(r.entity.AWSToSobjectNonEncryptedMap));
|
// this.staticResource = JSON.parse(r.entity.staticResource);
|
// this.staticResourceV2 = JSON.parse(r.entity.staticResourceV2);
|
// if(r.entity.AWSDataId){
|
// this.AWSDataId = r.entity.AWSDataId;
|
// }
|
if(r.entity.recordTypeId){
|
this.recordTypeId = r.entity.recordTypeId;
|
}
|
if(this.isCloneMode) {
|
this.CopyFlg = true;
|
this.copyOfMc = this.recordId;
|
}
|
|
this.sectionName = layout.map(s => s.label);
|
layout = this.sortMetaLayouts(layout);
|
layout.forEach(section =>{
|
section['showLabel'] = false;
|
section['showSection'] = false;
|
if(section['editHeading'] || section['detailHeading']){
|
section['showSection'] = true;
|
}
|
section.layoutColumns.forEach(column =>{
|
if(column.layoutItems.length != 0 && section['showLabel'] == false){
|
section['showLabel'] = true;
|
}
|
if(column.layoutItems){
|
column.layoutItems.forEach(item =>{
|
let filedName = item['field'];
|
item['isModify'] = false;
|
item['isDisable'] = item.behavior == 'Readonly' ? true : false;
|
item['isRequired'] = item.behavior == 'Required' ? true : false;
|
if (this.isNewMode && this.defaultValues) {
|
if(this.defaultValues[filedName]){
|
item['value'] = this.defaultValues[filedName];
|
}
|
}
|
if(this.isCloneMode
|
&& item['isDisable'] != true
|
// && item['field'] == 'Hospital__c'
|
// || item['field'] == 'Department_Class__c'
|
// || item['field'] == 'Department__c'
|
// || item['field'] == 'Estimate_Target__c'
|
// || item['field'] == 'Estimation_Id__c'
|
// || item['field'] == 'Service_Contract_Staff__c'
|
// || item['field'] == 'Estimate_Target__c'
|
// || item['field'] == 'Dealer__c'
|
// || item['field'] == 'Service_Contract_Staff__c'
|
|
&& item['field'] != 'PB_Contrant_Cnt__c'
|
&& item['field'] != 'PA_Contrant_Cnt__c'
|
&& item['field'] != 'Contract_Conclusion_Date__c'
|
&& item['field'] != 'Contract_Start_Date__c'
|
&& item['field'] != 'Estimate_Trial_Money__c'
|
&& item['field'] != 'Contract_End_Date__c'
|
&& item['field'] != 'Receipt_Date__c'
|
&& item['field'] != 'Recycling_Predetermined_Day__c'
|
&& item['field'] != 'Contract_Amount__c'
|
&& item['field'] != 'Collect_Date__c'
|
&& item['field'] != 'Recoverable_Amount__c'
|
&& item['field'] != 'Not_collect_money__c'
|
&& item['field'] != 'Sum_repair_price__c'
|
&& item['field'] != 'invoice_amount__c'
|
&& item['field'] != 'Total_not_collect_amount__c'
|
&& item['field'] != 'Description__c'
|
&& item['field'] != 'OCM_Print_request__c'
|
&& item['field'] != 'HP_Dealer_print__c'
|
&& item['field'] != 'Submit_contract_to_Financial_dept__c'
|
&& item['field'] != 'Received_Date__c'
|
&& item['field'] != 'Repair_Cost_Sum__c'
|
&& item['field'] != 'Last_year_service_contract__c'
|
&& item['field'] != 'Contract_print_completed__c'
|
&& item['field'] != 'Maintenance_Contract_No__c'
|
&& item['field'] != 'Service_contract_target_number__c'
|
&& item['field'] != 'Name'
|
&& item['field'] != 'Estimation_Id__c'
|
&& item['field'] != 'MaintanceContractPack__c'
|
&& item['field'] != 'HospitalAmountText__c'
|
&& item['field'] != 'Status__c' ){
|
item['value'] = this.recordData[filedName] == null ? '' : this.recordData[filedName];
|
}
|
if (filedName == 'RecordTypeId') {
|
item['value'] = this.recordtyId;
|
console.log('RecordTypeId='+this.recordtyId);
|
}
|
if (filedName == 'Last_year_service_contract__c') {
|
item['value'] = this.recordId;
|
console.log('Last_year_service_contract__c='+this.recordId);
|
}
|
|
// if (filedName == 'Status__c') {
|
// item['value'] = '引合中';
|
// console.log('Status__c='+'引合中');
|
// }
|
})
|
}
|
|
})
|
})
|
|
} else {
|
this.showToast('Error', r.Msg);
|
}
|
if(this.isCloneMode){
|
this.recordId = '';
|
}
|
this.isLoading = false;
|
})
|
}
|
|
// 重新排版layout
|
sortMetaLayouts(layout){
|
layout.forEach(s => {
|
let c1 = (s.layoutColumns[0].layoutItems != null) ? s.layoutColumns[0].layoutItems : [];
|
let c2 = [];
|
if(s.layoutColumns.length > 1){
|
c2 = (s.layoutColumns[1].layoutItems != null) ? s.layoutColumns[1].layoutItems : [];
|
}
|
else{
|
s.layoutColumns.push({ "reserved": null, "layoutItems": [] });
|
}
|
let emptySpaceItem = {
|
"width": null,
|
"showScrollbars": null,
|
"showLabel": null,
|
"scontrol": null,
|
"reportChartComponent": null,
|
"page_x": null,
|
"height": null,
|
"field": null,
|
"emptySpace": true,
|
"customLink": null,
|
"component": null,
|
"canvas": null,
|
"behavior": null,
|
"analyticsCloudComponent": null
|
}
|
let maxSize = 0
|
if(c1.length > c2.length){
|
maxSize = c1.length;
|
for(let i = 0; i < maxSize; i++){
|
if(c2.length == maxSize){
|
break;
|
}
|
c2.push(emptySpaceItem);
|
}
|
}else{
|
maxSize = c2.length;
|
for(let i = 0; i < maxSize; i++){
|
if(c1.length == maxSize){
|
break;
|
}
|
c1.push(emptySpaceItem);
|
}
|
}
|
let tempList = [];
|
let index = 0;
|
for(let i = 0; i < maxSize; i++){
|
tempList.push(c1[i]);
|
if(tempList.length == maxSize){
|
s.layoutColumns[index].layoutItems = tempList;
|
tempList = [];
|
tempList.push(c2[i]);
|
index++;
|
}else{
|
tempList.push(c2[i]);
|
if(tempList.length == maxSize){
|
s.layoutColumns[index].layoutItems = tempList;
|
tempList = [];
|
index++;
|
}
|
}
|
}
|
})
|
layout = [...layout];
|
return layout;
|
}
|
|
|
|
//取消
|
cancel() {
|
debugger;
|
console.log('--------------------------');
|
console.log(this.defaultValues);
|
console.log(JSON.stringify(this.defaultValues));
|
if(this.defaultValues){
|
window.history.go(-2);
|
}else{
|
window.history.back();
|
}
|
return false;
|
}
|
|
//change事件
|
dataChange(event) {
|
let fieldName = event.target.getAttribute("data-field");
|
let value = event.detail.value;
|
console.log("fieldName = " + fieldName + " value = " + value);
|
}
|
|
// 重写保存按钮
|
clickSubmit(){
|
const btn = this.template.querySelector( ".hidden" );
|
if( btn ){
|
btn.click();
|
}
|
}
|
|
// 重写保存并提交按钮
|
clickSubmitAndNew(){
|
console.log('clickSubmitAndNew');
|
this.saveAndNew = true;
|
const btn = this.template.querySelector(".hidden");
|
if (btn) {
|
btn.click();
|
}
|
}
|
|
//提交保存
|
handleSubmit(event) {
|
this.isLoading = true;
|
//1. Get Sobject Information from Form
|
event.preventDefault();
|
var fields = event.detail.fields;
|
this.filedsObj = event.detail.fields
|
|
|
//2. select cannot actively select redaction option
|
let validationResultMessage = this.validateFieldValueFormate(fields);
|
console.log('validationResultMessage=' + validationResultMessage);
|
if (validationResultMessage) {
|
this.showToast('Error', validationResultMessage);
|
return;
|
}
|
|
//3. Check Required Field
|
let checkRequiredFieldMsgResult = this.checkRequiredFieldMsg(fields);
|
console.log('checkRequiredFieldMsgResult = ' + checkRequiredFieldMsgResult);
|
if (checkRequiredFieldMsgResult != '') {
|
this.showToast('Error', checkRequiredFieldMsgResult + '需要进行填写');
|
return;
|
}
|
// fields['CopyFlg__c'] = true;
|
// fields['copyOfMc__c'] = this.recordId;
|
// console.log(' copyOfMc__c:' + fields['copyOfMc__c'] ) ;
|
this.filedsObj = {
|
...this.filedsObj,
|
CopyFlg__c: true,
|
copyOfMc__c: this.recordCopyId,
|
};
|
console.log(' CopyFlg__c:' + this.filedsObj.CopyFlg__c ) ;
|
console.log(' copyOfMc__c:' + this.filedsObj.copyOfMc__c ) ;
|
|
this.template.querySelector('lightning-record-edit-form').submit(this.filedsObj);
|
}
|
|
//提交保存成功
|
handleSuccess(event) {
|
let updatedRecord = event.detail.id;
|
console.log('onsuccess: ', updatedRecord);
|
console.log('confirmTrans');
|
let that = this;
|
// this.AWSService.confirm(true, updatedRecord, this.txId, this.staticResource.token, this.staticResource.transactionUrl, function (result) {
|
// console.log('result = ' + JSON.stringify(result))
|
that.showToast('Success', '保存成功');
|
console.log('updatedRecord = ' + updatedRecord)
|
that.navigate(updatedRecord);
|
// });
|
}
|
|
// 保存成功后跳转页面
|
navigate(updatedRecord){
|
if(this.saveAndNew){
|
window.location.reload(true);
|
}else{
|
let url = "/" + updatedRecord;
|
parent.location.href = url
|
}
|
}
|
|
//提交保存失败
|
handleError(event) {
|
event.preventDefault();
|
event.stopImmediatePropagation();
|
if (event.detail.output && event.detail.output.fieldErrors && Object.keys(event.detail.output.fieldErrors).length != 0) {
|
let msg = '';
|
for (let key in event.detail.output.fieldErrors) {
|
msg += ',' + event.detail.output.fieldErrors[key][0].message;
|
}
|
msg = msg.substring(1);
|
this.showMyToast("Error", event.detail.message + ' : ' + event.detail.detail, 'error');
|
} else {
|
this.showMyToast("Error", event.detail.message + ' : ' + event.detail.detail, 'error');
|
}
|
// this.AWSService.confirm(false,'',this.txId,this.staticResource.token,this.staticResource.transactionUrl,function(result){
|
// console.log('result = ' + JSON.stringify(result))
|
// });
|
}
|
|
// 大段报错信息处理
|
showMyToast(title, message, variant) {
|
console.log('show custom message');
|
var iconName = '';
|
var content = '';
|
if (variant == 'success') {
|
iconName = 'utility:check';
|
} else {
|
iconName = 'utility:error';
|
}
|
if (message != '') {
|
content =
|
'<h2><strong>' +
|
title +
|
'<strong/></h2><h5>' +
|
message +
|
'</h5>';
|
} else {
|
content = '<h2><strong>' + title + '<strong/></h2>';
|
}
|
this.template
|
.querySelector('c-common-toast')
|
.showToast(variant, content, iconName, 10000);
|
this.isLoading = false;
|
}
|
|
//验证字段
|
validateFieldValueFormate(fields) {
|
let error_msg = '';
|
let b = false;
|
for(var key in fields){
|
if(fields[key] == "*****")
|
b = true;
|
}
|
if(b)
|
error_msg = '下拉框不能主动选择密文选项';
|
return error_msg;
|
}
|
|
//验证required字段需要进行填写
|
checkRequiredFieldMsg(fields) {
|
let msg = '';
|
try {
|
for (let s of this.layout) {
|
for (let lc of s.layoutColumns) {
|
if (lc.layoutItems) {
|
for (let c of lc.layoutItems) {
|
if (!c.isDisable && c.isRequired && (fields[c.field] == null || fields[c.field] == '')) {
|
msg += ';' + c.fieldLabel;
|
}
|
}
|
}
|
}
|
}
|
} catch (err) {
|
this.showToast('Error',err.message);
|
}
|
msg = msg.substring(1);
|
return msg;
|
}
|
|
|
|
showToast(type, msg) {
|
this.isLoading = false;
|
const event = new ShowToastEvent({
|
title: msg,
|
variant: type,
|
//message: msg
|
});
|
this.dispatchEvent(event);
|
}
|
}
|