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 = '

' + title + '

' + message + '
'; } else { content = '

' + title + '

'; } 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); } }