import { LightningElement,api,track,wire } from 'lwc'; import { CurrentPageReference } from 'lightning/navigation'; import initData from '@salesforce/apex/LexNewAndEditRepairPIPLController.initData'; import getContactByAWSId from '@salesforce/apex/LexNewAndEditRepairPIPLController.getContactByAWSId'; import EncryptUpdate from '@salesforce/apex/LexNewAndEditRepairPIPLController.EncryptUpdate'; import { NavigationMixin } from 'lightning/navigation'; import { AWSService } from 'c/piUtils'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import { getObjectInfo } from 'lightning/uiObjectInfoApi'; import { decodeDefaultFieldValues } from "lightning/pageReferenceUtils"; import lexPIPLCustomStyle from '@salesforce/resourceUrl/lexPIPLCustomStyle' import { loadStyle } from 'lightning/platformResourceLoader'; import REPAIR from '@salesforce/schema/Repair__c'; import { conmentCancel } from "c/lexPIPLConmentMethods"; // Add By Li Jun 20231025 Start import LexRecordNotCreateable from '@salesforce/label/c.LexRecordNotCreateable'; import LexNotCreateNote from '@salesforce/label/c.LexNotCreateNote'; const customLabel = { LexRecordNotCreateable, LexNotCreateNote } // Add By Li Jun 20231025 End export default class LexNewAndEditRepairPIPL extends NavigationMixin(LightningElement) { sobjectType = 'Repair__c'; //modifyFieldArray = ['Incharge_Staff_Contact__c', 'Delivered_Product__c']; //deloitte-zhj 20231104 modifyFieldArray = ['Delivered_Product__c']; defaultValueArray = ['Hospital__c', 'Department_Class__c', 'Account__c', 'Dealer__c', 'Incharge_Staff__c', 'RepairSubOrder__c', 'On_Call_ID__c', 'QIS_ID__c', 'InsReport__c', 'Rental_Apply_Equipment_Set_Detail__c']; //deloitte-zhj 20231104 去掉 Incharge_Staff_Contact__c cloneFieldArray = ['AWS_Data_Id__c', 'SAP_condition__c', 'DOJ_Status__c', 'DW_Sign__c', 'Incharge_Staff__r.Id', 'URF_Reapir__c', 'Recall_Correspondence__c', 'Day_later_30__c', 'Dealer__r.Id', 'Status__c', 'URFLimitSerial__c', 'Maintenance_Contract__r.Id', 'FSE_ApplyForRepair_time__c', 'Delivered_Product__r.Id', 'Asset_Owner__c', 'State_Hospital__c', 'is_aohui_product__c', 'Sales_Dept_HP__c', 'RCCD__c', 'Quick_Repair_Sign__c', 'RepairSource__c', 'FSE_State__c', 'VM_Maintenance_Contract__c', 'Maintenance_Contract__c', 'NewProductGuarante_Txt__c', 'Number_of_EffectiveContract__c', 'Detailed_Address__c', 'Status1__c', 'Rental_Apply_Equipment_Set_Detail__c', 'Rental_Apply_Equipment_Set_Detail_Id__c', 'Latest_Collect_Date_Priority__c', 'if_Rental_Apply__c', 'Offer_Rental_New__c', 'ProduceCompany_hand__c', 'CFDA_No_Hand__c', 'MBC_AwareDate__c', 'InsReport__c', 'QIS_ID__c', 'On_Call_ID__c', 'RepairSubOrder__c', 'ProductFailureRelated__c', 'Delay15Min__c', 'ProblemOccurredSelect__c', 'Repair_Source__c', 'Failure_Occurrence_Date__c', 'MaintenanceContractType__c', 'OperationOrExaminationName__c', 'WhatProject__c', 'FailureQInHospital__c', 'ReportAdverseEvents__c', 'InformationFrom__c', 'AfterFailureInformation__c', 'ProblemOccurred__c', 'SupportingProducts__c', 'ifDeadHurt__c', 'UseFailProductFinish__c', 'DelayReportReason__c', 'BreakORFallOff__c', 'DateReceiptQuestions__c', 'DeliveryLogisticsAnnotation__c', 'DeliveryLogisticsNo__c', 'engineerSendDate__c', 'DeliveryLogisticsMode__c', 'RepairApplicantDepartment__c', 'RepairApplicantHospital__c', 'RepairApplicant__c', 'Repair_Detail__c', 'Returns_Product_way__c', 'work_location_select__c', 'On_site_repair__c', 'SalesOfficeCode_selection__c', 'Incharge_Staff__c', 'Dealer__c', 'RepairCostType__c', 'Account__c', 'Department_Class__c', 'Hospital__c', 'PaperRepairRequestNo__c', 'part_arrangement_complete__c', 'Repair_Shipped_Date__c', 'OCSMAdministrativeReportStatus__c', 'Incharge_Staff_Email__c', 'Name', 'HP_Name__c', 'Delivered_Product__c', 'Repair_Product_Serial_No__c', 'Service_Repair_No__c', 'Repair_Firstestimated_Date__c', 'Repair_Estimated_Date__c', 'RC_information__c', 'Id', 'OCSMAdministrativeReportNumber__c', 'OCSMAdministrativeReportDate__c', 'Aware_date__c', 'PAE_Determine__c', 'ETQ_UPLOAD_STATUS__c', 'AE_DetermineResult__c', 'PAE_DetermineAC__c', 'Repair_Inspection_Date__c', 'Contain_UseRSA__c']; //deloitte-zhj 20231104 去掉 Incharge_Staff_Contact__c @track customLabel = customLabel; @api recordId; @wire(CurrentPageReference) pageRef; @track layout = []; @track labelMap = {}; title; recordTypeId = '' staticResource; staticResourceRepairSubOrder; AWSDataId = ''; txId = ''; contactId = ''; contactAWSDataId = ''; repairApplicantId = ''; practitioner = ''; hospitalId = ''; accountId = ''; retUrlId = ''; searchType = ''; isNewMode = false; isEditMode = false; isCloneMode = false; isClone = false; isLoading = false; isShowSearchAccount = false saveAndNew = false; sectionName = []; dataTypesMap = {}; AWSToSobjectMap = {}; recordData = {}; AWSService; contactIdMap = {}; pageStateMap = {}; defaultValues = {}; //特殊lookup字段处理 searchFieldArray; searchWhere; searchField = 'Name'; searchObjectType; @track iconName = ""; fieldLabel = {}; repairFields = {}; @wire(getObjectInfo, { objectApiName: REPAIR }) getRepairInfo({data,error}){ if(data){ this.fieldLabel = data.fields; this.labelMap ={ //'Incharge_Staff_Contact__c' : data.fields.Incharge_Staff_Contact__c.label, //deloitte-zhj 20231104 'Delivered_Product__c' : data.fields.Delivered_Product__c != null ? data.fields.Delivered_Product__c.label : '', }; let fieldMap = Object.values(data.fields).map((fld) => { let { apiName, dataType } = fld; return { apiName, dataType }; }); fieldMap.forEach(field =>{ this.dataTypesMap[field.apiName] = field.dataType; }) let fields = data.fields; // 将字段的信息存储在 repairFields 对象中 Object.keys(fields).forEach((fieldApiName) => { this.repairFields[fieldApiName] = { label: fields[fieldApiName].label, dataType: fields[fieldApiName].dataType // 可以根据需要添加其他字段属性,如是否必填、是否唯一等 }; }); console.log('repairFields = ' + JSON.stringify(this.repairFields)) } } connectedCallback(){ console.log('Repair 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; this.retUrlId = this.pageRef.state.retURL == null ? '' : this.pageRef.state.retURL; // let stateKeys = Object.keys(this.pageRef.state); // let states = this.pageRef.state; // stateKeys.forEach(state =>{ // if(state.includes('_lkid')){ // let newKey = state.replace('_lkid', ''); // newKey = newKey.substring(2); // this.pageStateMap[newKey] = states[state]; // } // }) console.log('this.recordTypeId = ' + this.recordTypeId); // 获取从其他页面带来的参数 if (this.pageRef.state.defaultFieldValues) { this.defaultValues = decodeDefaultFieldValues( this.pageRef.state.defaultFieldValues ); console.log('this.contactAWSDataId = ' + this.contactAWSDataId); } console.log("defaultValues:", JSON.stringify(this.defaultValues)); } 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(){ let rid; if(this.isCloneMode){ rid = this.pageRef.state.c__recordId; }else{ rid = this.recordId } initData({ 'rid': rid, 'recordTypeId': this.recordTypeId, 'sobjectType': this.sobjectType, 'RepairId' : this.retUrlId }).then((r) => { r = JSON.parse(JSON.stringify(r)); if (r.status == 'Success') { let layout = JSON.parse(r.entity.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); this.staticResourceContact = JSON.parse(r.entity.staticResourceContact); this.staticResourceRepairSubOrder = JSON.parse(r.entity.staticResourceRepairSubOrder); if(r.entity.AWSDataId){ this.AWSDataId = r.entity.AWSDataId; } if(r.entity.recordTypeId){ this.recordTypeId = r.entity.recordTypeId; } this.sectionName = layout.map(s => s.label); layout = this.sortMetaLayouts(layout); layout.forEach(section =>{ section['showSection'] = false; if(section['editHeading']){ section['showSection'] = true; } section['showLabel'] = false; section['Two'] = true; if(section['style'] == 'OneColumn'){ section['Two'] = false; } 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.pageStateMap.hasOwnProperty(filedName)){ let formatValue = this.assignValueFromUrl(filedName); if(formatValue){ item['value'] = formatValue; }else{ this.showToast('Error', '数据转换失败'); } } if (this.isNewMode && this.defaultValues && Object.keys(this.defaultValues).length != 0) { if(this.defaultValues[item['field']]){ item["value"] = this.defaultValues[item["field"]]; } if(filedName == 'Delivered_Product__c' ){ item["value"] = this.defaultValues['AssetName']; this.contactIdMap[filedName] = this.defaultValues['Delivered_Product__c']; } if(filedName == 'RepairApplicant__c'){ if(this.defaultValues['AWSId']){ this.queryRepairApplicantName(this.defaultValues['AWSId']); } } if(filedName == 'Exc_work_location__c'){ item['value'] = this.defaultValues[filedName] == 'true'? true : false; } if(filedName == 'Offer_Rental_New__c'){ item['value'] = this.defaultValues[filedName] == 'true'? true : false; } if(filedName == 'Hospital__c'){ this.hospitalId = this.defaultValues[filedName]; } if(this.defaultValues[filedName] && this.repairFields[filedName] && this.repairFields[filedName].dataType == 'Date'){ item['value'] = new Date(new Date(this.defaultValues[filedName] + '').getTime() + (8 * 60 * 60 * 1000)).toISOString().substring(0,10); } if(this.defaultValues[filedName] && this.repairFields[filedName] && this.repairFields[filedName].dataType == 'DateTime'){ item['value'] = new Date(new Date(this.defaultValues[filedName] + '').getTime() + (8 * 60 * 60 * 1000)).toISOString(); } } // 与Contact或Asset关联,故采用自定义 if(this.modifyFieldArray.includes(item['field'])){ item['isModify'] = true; item['isShowIcon'] = true; item['label'] = this.labelMap[filedName]; let lookupName = filedName.slice(0, -1) + 'r'; if(this.isEditMode || this.isCloneMode ){ if(filedName == 'Delivered_Product__c'){ item['value'] = this.recordData[lookupName] == null ? '' : this.recordData[lookupName].Name; }else{ item['value'] = this.recordData[lookupName] == null ? '' : this.recordData[lookupName].LastName; this.contactAWSDataId = this.recordData[lookupName] == null ? '' : this.recordData[lookupName].AWS_Data_Id__c; //解密客户人员 this.queryContactName(filedName); } //this.template.querySelector('[data-icon='+ filedName + ']').iconName = this.recordData[lookupName] == null ? 'utility:search' : 'utility:close'; this.contactIdMap[filedName] = this.recordData[filedName] == null ? '' : this.recordData[filedName]; } } //recordTypeId字段都应该是不可编辑的 if(item['field'] == 'RecordTypeId'){ item['isDisable'] = true; } if((this.isEditMode || this.isCloneMode) && item['field'] == 'Hospital__c'){ this.hospitalId = this.recordData[filedName] == null ? '' : this.recordData[filedName]; } if((this.isEditMode || this.isCloneMode) && item['field'] == 'Account__c'){ this.accountId = this.recordData[filedName] == null ? '' : this.recordData[filedName]; } if(this.isCloneMode && filedName != 'Name' && filedName != 'Delivered_Product__c' && filedName != 'Status__c'){ if(this.cloneFieldArray.includes(filedName)){ item['value'] = this.recordData[filedName] == null ? '' : this.recordData[filedName]; } } }) } }) }) this.layout = layout; console.log('this.layout = ' + JSON.stringify(this.layout)); //编辑 if(this.isEditMode || this.isCloneMode){ //解密意向的加密字段 this.queryLeadFromAWSIFS(); } } else { this.showToast('Error', r.msg); } 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; } //转换从URL带来的数据,作为参数填入对应字段 assignValueFromUrl(filedName){ let fieldType = this.dataTypesMap[filedName]; let fieldValue = this.pageStateMap[filedName]; let val // address, boolean, date, datetime, double, id, location, string, time if(string.isBlank(fieldValue)){ val = null; }else if(fieldType == 'Boolean'){ if(fieldValue == '1'){ val = true; }else{ val = boolean.valueOf(fieldValue); } }else if(fieldType == 'Date'){ //注意时区问题 if(date.parse(fieldValue) != NaN){ val = date.parse(fieldValue); }else{ val = date.valueOf(fieldValue); } }else if(fieldType == 'Datetime'){ //注意时区问题 if(datetime.parse(fieldValue) != NaN){ val = datetime.parse(fieldValue); }else{ val = datetime.valueOf(fieldValue); } }else if(fieldType == 'Double' || fieldType == 'Number'){ val = decimal.valueOf(fieldValue.replace(',', '')); }else if(fieldType == 'Id' || fieldType == 'String'){ val = fieldValue; } return val; } //解密客户人员 queryContactName(filedName){ let that = this; this.AWSService.query(this.staticResourceContact.queryUrl,this.contactAWSDataId,function(data){ console.log('data = ' + JSON.stringify(data)); if (data.object) { for (let s of that.layout) { for (let lc of s.layoutColumns) { if(lc.layoutItems){ for (let c of lc.layoutItems) { if(c['field'] == filedName){ c['value'] = data.object.lastName; } } } } } } },this.staticResourceContact.token) } //解密报修人 queryRepairApplicantName(repairApplicantAwsId){ console.log('queryRepairApplicantName repairApplicantAwsId = ' + repairApplicantAwsId) debugger let that = this; this.AWSService.query(this.staticResourceRepairSubOrder.queryUrl,repairApplicantAwsId,function(data){ console.log('data = ' + JSON.stringify(data)); if (data.object) { for (let s of that.layout) { for (let lc of s.layoutColumns) { if(lc.layoutItems){ for (let c of lc.layoutItems) { if(c['field'] == 'RepairApplicant__c'){ c['value'] = data.object.repairApplicantName; } //deloitte-zhj 20230922 报修子单带值 start if(c['field'] == 'address_Contacts__c'){ c['value'] = data.object.returnedPersonName; } if(c['field'] == 'address_Telephone__c'){ c['value'] = data.object.returnedPersonPhone; } if(c['field'] == 'address_Contacts_Name__c'){ c['value'] = data.object.returnedCustomer; } if(c['field'] == 'address_City__c'){ c['value'] = data.object.returnedCity; } if(c['field'] == 'Detailed_Address__c'){ c['value'] = data.object.returnedAddress; } if(c['field'] == 'address_ZipCode__c'){ c['value'] = data.object.returnedZipCode; } //deloitte-zhj 20230922 报修子单带值 end } } } } } },this.staticResourceRepairSubOrder.token) } //解密加密字段 queryLeadFromAWSIFS(){ let that = this; debugger; this.AWSService.query(this.staticResource.queryUrl,this.AWSDataId,function(data){ console.log('queryLeadFromAWSIFS data = ' + JSON.stringify(data)); if (data.object) { for (let s of that.layout) { for (let lc of s.layoutColumns) { if(lc.layoutItems){ for (let c of lc.layoutItems) { for (let f in that.AWSToSobjectMap) { if (data.object.hasOwnProperty(f) && c['field'] == that.AWSToSobjectMap[f] && data.object[f]) { c['value'] = data.object[f]; } } } } } } } },this.staticResource.token) } //取消 cancel() { if(this.isCloneMode){ window.history.go(-4); return } conmentCancel(this.defaultValues); } //change事件 dataChange(event) { let fieldName = event.target.getAttribute("data-field"); let value = event.detail.value; console.log("fieldName = " + fieldName + " value = " + value); this.contactIdMap[fieldName] = value; if(fieldName == 'Account__c'){ this.accountId = value[0]; } if(fieldName == 'Hospital__c'){ this.hospitalId = value[0]; } } // 重写保存按钮 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(); let fields = event.detail.fields; this.modifyFieldArray.forEach(fieldname =>{ fields[fieldname] = this.contactIdMap[fieldname]; }) //2. select cannot actively select redaction option let validationResultMessage = this.validateFieldValueFormate(fields); console.log('validationResultMessage=' + validationResultMessage); if (validationResultMessage) { this.showMyToast(validationResultMessage , '' , 'error') this.isLoading = false; return; } //3. Check Required Field let checkRequiredFieldMsgResult = this.checkRequiredFieldMsg(fields); console.log('checkRequiredFieldMsgResult = ' + checkRequiredFieldMsgResult); if (checkRequiredFieldMsgResult != '') { this.showMyToast(checkRequiredFieldMsgResult + '需要进行填写' , '' , 'error') this.isLoading = false; return; } //4. Prepare the payload for New PI API To AWS - To Do let payloadForNewPI = this.getPIPayload(fields); console.log('payloadForNewPI = ' + payloadForNewPI); //5. PI To AWS //新建 debugger if(this.isNewMode || this.isCloneMode || !this.AWSDataId){ this.NewPIToAWS(payloadForNewPI,fields); return } //编辑 if(this.isEditMode){ this.UpdatePIToAWS(payloadForNewPI,fields); } } //新建保存ToAWS NewPIToAWS(payloadForNewPI,fields){ let that = this; this.AWSService.post(this.staticResourceV2.newUrl, payloadForNewPI, (result) => { if (result && result.object) { console.log('result = ' + JSON.stringify(result)); for (let f in this.AWSToSobjectMap) { if (result.object[0].hasOwnProperty(f)) { fields[this.AWSToSobjectMap[f]] = result.object[0][f]; console.log('this.AWSToSobjectMap[f] = ' + this.AWSToSobjectMap[f]); console.log('fields[this.AWSToSobjectMap[f]] = ' + fields[this.AWSToSobjectMap[f]]); } else { console.log(f + 'is not in result.object[0]'); } } fields['AWS_Data_Id__c'] = result.object[0].dataId; this.txId = result.txId; if(fields.RecordTypeId){ console.log('length = ' + JSON.stringify(fields.RecordTypeId.length)); fields['RecordTypeId'] = fields.RecordTypeId.substring(1, fields.RecordTypeId.length - 1); console.log('RecordTypeId = ' + JSON.stringify(fields['RecordTypeId'])); } //保存到后端 that.template.querySelector('lightning-record-edit-form').submit(fields); } else { console.log('result = ' + JSON.stringify(result)); } }, this.staticResource.token); } //编辑保存ToAWS UpdatePIToAWS(payloadForNewPI, fields) { let obj = JSON.parse(payloadForNewPI); if(this.AWSDataId){ obj[0].dataId = this.AWSDataId; }else{ this.showMyToast("Error", '未找到该记录的AWS Id,请确认记录完整性', 'error'); return; } let payloadForNewPIJson = JSON.stringify(obj); this.AWSService.post(this.staticResourceV2.updateUrl, payloadForNewPIJson, (result) => { if (result && result.object) { console.log('result = ' + JSON.stringify(result)); for (let f in this.AWSToSobjectMap) { if (result.object[0].hasOwnProperty(f)) { fields[this.AWSToSobjectMap[f]] = result.object[0][f]; console.log('this.AWSToSobjectMap[f] = ' + this.AWSToSobjectMap[f]); console.log('fields[this.AWSToSobjectMap[f]] = ' + fields[this.AWSToSobjectMap[f]]); } else { console.log(f + 'is not in result.object[0]'); } } if (this.isNewMode || this.isCloneMode) { fields['AWS_Data_Id__c'] = result.object[0].dataId; } else { //更新 fields['AWS_Data_Id__c'] = this.AWSDataId; } this.txId = result.txId; if (fields.RecordTypeId) { console.log('length = ' + JSON.stringify(fields.RecordTypeId.length)); fields['RecordTypeId'] = fields.RecordTypeId.substring(1, fields.RecordTypeId.length - 1); console.log('RecordTypeId = ' + JSON.stringify(fields['RecordTypeId'])); } //保存到后端 console.log('update submit = ' + JSON.stringify(fields)); this.template.querySelector('lightning-record-edit-form').submit(fields); } else { console.log('result = ' + JSON.stringify(result)); } }, this.staticResource.token); } //提交保存成功 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.confirmAndNavigate(updatedRecord); }); } // 保存成功后处理相关的收货地址数据并跳转页面 confirmAndNavigate(updatedRecord){ this.isLoading = true; EncryptUpdate({'rid': updatedRecord}) .then(result =>{ if(result.message){ console.log('EncryptUpdate Error:'+result.message); this.showToast("Error", result.message); } if(this.saveAndNew){ this[NavigationMixin.Navigate]({ type: "standard__objectPage", attributes: { objectApiName: this.sobjectType, actionName: "new", }, state: { recordTypeId: this.recordTypeId, }, }); }else{ let url = "/" + updatedRecord; parent.location.href = url // this[NavigationMixin.Navigate]({ // type: 'standard__recordPage', // attributes: { // actionName: "view", // recordId: updatedRecord, // objectApiName: this.sobjectType // } // }); } }) } //提交保存失败 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 + ' : ' + msg, 'error'); } else { //add by Li Jun 20231025 Start if(event.detail.message != '' && this.customLabel.LexRecordNotCreateable.indexOf(event.detail.message) != -1){ this.showMyToast("Error", this.customLabel.LexNotCreateNote, 'error'); }else{ this.showMyToast("Error", event.detail.message + ' : ' + event.detail.detail, 'error'); } //add by Li Jun 20231025 End } //add by Li Jun 20231025 Start if(this.txId && this.staticResource){ this.AWSService.confirm(false,'',this.txId,this.staticResource.token,this.staticResource.transactionUrl,function(result){ console.log('result = ' + JSON.stringify(result)) }); } //add by Li Jun 20231025 End } // 大段报错信息处理 showMyToast(title, message, variant) { console.log('show custom message'); let iconName = ''; let 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(let 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 += ";" + this.fieldLabel[item.field].label ; } } } } } } catch (err) { this.showToast('Error',err.message); } msg = msg.substring(1); return msg; } //获取PI字段 getPIPayload(sobjJsonLwc) { console.log() let leadPayloadList = []; let leadPIData = {}; for (let f in this.AWSToSobjectMap) { if (sobjJsonLwc.hasOwnProperty(this.AWSToSobjectMap[f])) { leadPIData[f] = sobjJsonLwc[this.AWSToSobjectMap[f]] } else { console.log(this.AWSToSobjectMap[f] + 'is not in sobjJsonLwc'); } } leadPIData.sfRecordId = ''; console.log('Sobject PI Data x :' + leadPIData); leadPayloadList.push(leadPIData); console.log('leadPayloadList = ' + JSON.stringify(leadPayloadList)); return JSON.stringify(leadPayloadList); } //查询客户人员根据医院 searchHospitalNameModal(event){ this.practitioner = event.target.getAttribute("data-field"); if(this.modifyFieldArray.includes(this.practitioner)){ if(this.practitioner == 'Delivered_Product__c'){ if(this.hospitalId != '' && this.hospitalId){ this.lookupFieldLabel = '保有设备'; this.lookupTitle = '保有设备'; this.searchFieldArray = ['Id','Name','OwnershipMachine_No__c','SerialNumber','AssetManageConfirm__c','Product_Serial_No__c','Information_From__c','Posting_Date__c','guarantee_period__c','Status','Account.Name']; this.searchWhere = 'Hospital__c =\'' + this.hospitalId + '\' AND IsCompetitorProduct = false'; this.searchObjectType = 'Asset' }else{ this.showToast('error', '请输入医院'); return } } //deloitte-zhj 20231104 // if(this.practitioner == 'Incharge_Staff_Contact__c'){ // this.lookupFieldLabel = '客户名'; // this.lookupTitle = '客户名'; // this.searchObjectType = 'Contact' // } this.isShowSearchAccount = true; } } //选择客户人员后进行赋值 handleSelectContact(event){ this.isLoading = true; let fieldName = this.practitioner; const selectContact = event.detail; for (let s of this.layout) { for (let lc of s.layoutColumns) { if (lc.layoutItems) { for (let c of lc.layoutItems) { if(c['field'] == fieldName){ c['value'] = selectContact.data.medicalStaffFullName; if(selectContact.data.sfRecordId){ this.contactIdMap[fieldName] = selectContact.data.sfRecordId; let selectedElement = this.template.querySelector('[data-field='+ fieldName + ']'); selectedElement.value = c['value']; //If there was a custom error before, reset it selectedElement.setCustomValidity(''); // //Tells the lightning-input to show the error right away without needing interaction selectedElement.reportValidity(); this.template.querySelector('[data-icon='+ fieldName + ']').iconName = "utility:close"; this.isLoading = false; }else{ getContactByAWSId({'awsId': selectContact.data.AWSDataId}) .then(result =>{ this.contactIdMap[fieldName] = result.ContactInfo.Id; let selectedElement = this.template.querySelector('[data-field='+ fieldName + ']'); selectedElement.value = c['value']; //If there was a custom error before, reset it selectedElement.setCustomValidity(''); // //Tells the lightning-input to show the error right away without needing interaction selectedElement.reportValidity(); this.template.querySelector('[data-icon='+ fieldName + ']').iconName = "utility:close"; this.isLoading = false; }) } console.log('selectContact.data.sfRecordId = ' + selectContact.data.sfRecordId); console.log('c[value] = ' + c['value']); } } } } } this.layout = [...this.layout]; this.closeHospitalNameModal(); } //接受lexsearchlookuplwc组件消息,根据选择的数据为对应字段赋值 handleSelectLookup(event){ this.isLoading = true; let fieldName = this.practitioner; const selectLookup = event.detail; for (let s of this.layout) { for (let lc of s.layoutColumns) { if (lc.layoutItems) { for (let c of lc.layoutItems) { if(c['field'] == fieldName){ c['value'] = selectLookup.data.Name; let selectedElement = this.template.querySelector('[data-field='+ fieldName + ']'); selectedElement.value = c['value']; //If there was a custom error before, reset it selectedElement.setCustomValidity(''); // //Tells the lightning-input to show the error right away without needing interaction selectedElement.reportValidity(); this.contactIdMap[fieldName] = selectLookup.data.Id; } } } } } this.layout = [...this.layout]; this.isLoading = false; this.closeHospitalNameModal(); } //清空客户姓名 clearName(event) { let fieldname = event.target.getAttribute("data-icon") console.log("enter clearName"); if (this.contactIdMap[fieldname] != "") { this.contactIdMap[fieldname] = ""; for (let s of this.layout) { for (let c of s.layoutColumns) { if (c.layoutItems) { for (let item of c.layoutItems) { if (item["field"] == fieldname) { item["value"] = ""; //this.contactId = ""; } } } } } this.layout = [...this.layout]; this.template.querySelector('[data-icon='+ fieldname + ']').iconName = "utility:search"; } } //关闭客户人员根据医院模态框 closeHospitalNameModal(){ this.isShowSearchAccount = false; } showToast(type, msg) { this.isLoading = false; const event = new ShowToastEvent({ title: msg, variant: type, //message: msg }); this.dispatchEvent(event); } }