/* * @Description: * @version: * @Author: chen jing wu * @Date: 2023-04-20 15:04:03 * @LastEditors: chen jing wu * @LastEditTime: 2023-07-10 17:41:12 */ const columns2=[ { label: '--无--', value: '' }, { label: '无信息,跟进不及时', value: '无信息,跟进不及时' }, { label: '价格', value: '价格' }, { label: '医生偏好', value: '医生偏好' }, { label: '服务不到位', value: '服务不到位' }, { label: '行政决策', value: '行政决策' }, { label: '竞品原有基础上增添设备', value: '竞品原有基础上增添设备' }, { label: '渠道因素', value: '渠道因素' }, { label: '某种产品缺失', value: '某种产品缺失' }, { label: '采购平衡', value: '采购平衡' } ]; const productClassOptions = [ { label: '--无--', value: '' }, { label: '主机', value: '主机' }, { label: '镜子', value: '镜子' }, { label: '小镜种', value: '小镜种' }, { label: '能量', value: '能量' }, { label: '其他', value: '其他' } ]; const productCategoryOptions = [ { label: '--无--', value: '' } ]; const columns3 = [ {label : "失单品牌",fieldName : "LostBrandName__c"}, {label : "失单对手型号",fieldName : "productName"}, {label : "失单数量",fieldName : "Quantity__c",type : "number"}, {label : "失单对手型号(手动)",fieldName : "LostProductMannual__c"}, {label : "失单产品类别",fieldName : "ProductClass__c"}, {label : "失单产品区分",fieldName : "ProductCategory__c"} ]; const RecordTypeOptions = [ { label: '--无--', value: '' }, { label: '失单', value: '失单' }, { label: '部分失单', value: '部分失单' } ]; import { api, wire,track,LightningElement } from 'lwc'; import { CurrentPageReference } from "lightning/navigation"; import dataEntry from '@salesforce/apex/lexPCLLostReportLwcController.dataEntry'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import init from '@salesforce/apex/lexPCLLostReportLwcController.init'; import multiSelectCombobox from 'c/multiSelectCombobox' import searchBrands from '@salesforce/apex/lexPCLLostReportLwcController.searchBrands'; import getNewLostBrand from '@salesforce/apex/lexPCLLostReportLwcController.getNewLostBrand'; import getNewLostProduct from '@salesforce/apex/lexPCLLostReportLwcController.getNewLostProduct'; import getPickList from '@salesforce/apex/lexPCLLostReportLwcController.getPickList'; import { NavigationMixin } from 'lightning/navigation'; import submit from '@salesforce/apex/lexPCLLostReportLwcController.submit'; import {CloseActionScreenEvent} from 'lightning/actions'; import lexLookupLwc from 'c/lexLookupLwc'; import searchProduct from '@salesforce/apex/lexPCLLostReportLwcController.searchProduct'; import { updateRecord } from 'lightning/uiRecordApi'; export default class LexPCLLostReportPage extends NavigationMixin(LightningElement) { @api oppId; @track columns2=columns2; @track status = { pageStatus: 'Create' } @track LostReport = { LostBrands: [ ], lostReport: {} } @track brandOptions = []; @track isInit = false; lostType = '失单'; submitFlag = ''; flag; tableflag = 0; reportId = ''; newProduct; productOptionsList; productClassOptions = productClassOptions; productCategoryOptions = productCategoryOptions; columns3 = columns3; //失单类型 RecordTypeOptions = RecordTypeOptions; isSubmit = false; deleteBrandIdList = []; deleteProductIdList = []; IsLoading; newApprovalHistorys; connectedCallback(){ init({ oppId1: this.oppId, lostReportId1: this.reportId, pageStatus1: this.status.pageStatus, lostType1: this.lostType, submitFlag1: this.submitFlag }).then(result=>{ if(result.message != null){ if(result.message == '提交成功!'){ this.showToast(result.message,"success"); this.LostReport = result.LostReport; }else{ this.showToast(result.message,"error"); } }else{ var report = result.LostReport; this.LostReport = report; this.LostReport.lostReport.LostTotalAmount__c = 0.0; this.LostReport.lostReport.InclusionUltrasound__c = '0'; this.newProduct = JSON.parse(JSON.stringify(this.LostReport.LostBrands[0].LostProducts[0])); this.newApprovalHistorys = JSON.parse(JSON.stringify(this.LostReport.approvalHistorys)); console.log(this.LostReport); this.isInit = true; } }).catch(error=>{ console.log("error"); console.log(error); }); searchBrands().then(result=>{ this.brandOptions = JSON.parse(result); const multiComboboxs = this.template.querySelectorAll('c-multi-select-combobox'); multiComboboxs.forEach(multiCombobox=>{ multiCombobox.refreshOptions(this.brandOptions); }); }).catch(error=>{ console.log("error"); console.log(error); }); getPickList({ objectName: 'PCLLostProduct__c', fieldName: 'ProductCategory__c' }).then(result=>{ this.productOptionsList = JSON.parse(result); }).catch(error=>{ console.log('error'); console.log(error); }); } @wire(CurrentPageReference) getStateParameters(currentPageReference) { console.log(111); console.log(currentPageReference); if (currentPageReference) { const urlValue = currentPageReference.state.recordId; if (urlValue) { let str = `${urlValue}`; console.log("str"); console.log(str); this.oppId = str; } } } showToast(msg,type) { const event = new ShowToastEvent({ title: '', message: msg, variant: type }); this.dispatchEvent(event); } updateRecordView(recordId) { updateRecord({fields: { Id: recordId }}); } // get isInit(){ // if(this.LostReport.LostBrands[0].LostProducts[0].productOptions == undefined){ // return false; // }else{ // return true; // } // } get getData(){ var newLostReport = JSON.parse(JSON.stringify(this.LostReport)); var products = newLostReport.LostBrands[this.tableflag].LostProducts; var productList = []; products.forEach(product=>{ var newProduct = product; newProduct.LostProductss.productName = newProduct.productName; productList.push(newProduct.LostProductss); }); this.tableflag++; return productList; } get isBrandCount2(){ var flag = true; if(this.LostReport.LostBrands.length > 1){ flag = false; } return flag; } get isView(){ if(this.status.pageStatus == 'View'){ return true; } return false; } get isCreateOrEdit(){ if(this.status.pageStatus == 'Create' || this.status.pageStatus == 'Edit'){ return true; } return false; } get isEdit(){ if(this.status.pageStatus == 'Edit'){ return true; } return false; } get isSubmit(){ if(this.submitFlag){ return true; } return false; } addBrandJs() { getNewLostBrand({ lineNo: this.LostReport.LostBrands.length }).then(result=>{ this.LostReport.LostBrands.push(result); }); } addRow(event){ var index = event.target.name; getNewLostProduct({ lineNo2: this.LostReport.LostBrands[index].LostProducts.length }).then(result=>{ result.LostProductss.LostBrandName__c = this.LostReport.LostBrands[index].lostBrand.Lost_By_Company__c; this.LostReport.LostBrands[index].LostProducts.push(result); }); } submitJs() { console.log('1'); this.IsLoading = true; submit({ report1: JSON.stringify(this.LostReport), reportId: this.reportId }).then(result=>{ if(result.error){ this.showToast(result.error,"error"); }else{ console.log(result); console.log(this.LostReport); for(var i=0;i < result.approvalHistorys.length;i++){ console.log('123'); var date = new Date(result.approvalHistorys[i].CreatedDate); result.approvalHistorys[i].CreatedDate = date.toLocaleString(); this.LostReport.approvalHistorys.push(JSON.parse(JSON.stringify(result.approvalHistorys[i]))); console.log('321'); } this.submitFlag = JSON.parse(JSON.stringify(result.submitFlag)); console.log(this.LostReport); this.updateRecordView(this.reportId); this.LostReport.lostReport.Report_Status__c = '申请中'; } this.IsLoading = false; }).catch(error=>{ console.log("error"); console.log(error); }); } onApproveChange(event){ this[NavigationMixin.Navigate]({ type: 'standard__recordPage', attributes: { recordId: this.LostReport.approvalHistorys[0].Id, actionName: 'view' } }); } deleteBrandJs(event){ var str = event.target.name; if(this.LostReport.LostBrands[str].lostBrand.Id){ this.deleteBrandIdList.push(this.LostReport.LostBrands[str].lostBrand.Id); } this.LostReport.LostBrands.splice(str,1); console.log(this.LostReport); this.deleteBrandIdList.forEach(brandId=>{ console.log(brandId); }); this.setLostTotalAmount(); } // add tcm 20211118 end setLostTotalAmount() { var tempLostAmount = 0.0; this.LostReport.LostBrands.forEach(brand=>{ tempLostAmount = tempLostAmount + parseFloat(brand.lostBrand.LostPrice__c); }); this.LostReport.lostReport.LostTotalAmount__c = tempLostAmount; } setBrandMannualName(event) { var index = event.target.name; const payload = event.detail.payload; const payloadType = event.detail.payloadType; if(this.LostReport.LostBrands[index].lostBrand.Id){ this.LostReport.LostBrands[index].LostProducts.forEach(product=>{ if(product.LostProductss.Id){ var productId = product.LostProductss.Id this.deleteProductIdList.push(productId); } }); console.log(this.deleteProductIdList); } this.LostReport.LostBrands[index].lostBrand.Lost_By_Company__c = payload.value; if(payloadType === 'multi-select'){ this.clearProducts(payload.value,index); this.setDefaultBrand(payload.value,index); this.clearBrandMannualName(payload.value,index); } } setDefaultBrand(value,index){ var newProducts = []; this.LostReport.LostBrands[index].LostProducts.forEach(product=>{ this.newProduct.LostProductss.LostBrandName__c = value; newProducts.push(JSON.parse(JSON.stringify(this.newProduct))); }); this.LostReport.LostBrands[index].LostProducts = newProducts; } clearProducts(value,index){ var newProducts = []; this.LostReport.LostBrands[index].LostProducts.forEach(product=>{ this.newProduct.LostProductss.LostBrandName__c = value; newProducts.push(JSON.parse(JSON.stringify(this.newProduct))); }); var elements1 = this.template.querySelectorAll('.ProductClass[data-id="' + index + '"]'); elements1.forEach(element=>{ element.readOnly = false; }); var elements2 = this.template.querySelectorAll('.Product[data-id="' + index + '"]'); elements2.forEach(element=>{ element.clearSelection(); }); this.LostReport.LostBrands[index].LostProducts = newProducts; } // 失单品牌不等于其他时,失单品牌(手动)清空并且不允许填写,失单品牌等于其他时,失单对手型号不可用 thh 2022-01-13 start clearBrandMannualName(value,index){ if (value == '其他') { var elements = this.template.querySelectorAll('[data-id="Lost_By_Company_Mannual"]'); elements[index].disabled = false; elements[index].required = true; var elements1 = this.template.querySelectorAll('.Product[data-id="' + index + '"]'); elements1.forEach(element=>{ element.letDisabledTrue(); }); } else { var elements = this.template.querySelectorAll('[data-id="Lost_By_Company_Mannual"]'); this.brandFlag = false; elements[index].value = ''; elements[index].disabled = true; elements[index].required = false; var elements1 = this.template.querySelectorAll('.Product[data-id="' + index + '"]'); elements1.forEach(element=>{ element.letDisabledFalse(); }); } } cancel() { // Navigate to the specified opportunity page using the NavigationMixin this[NavigationMixin.Navigate]({ type: 'standard__recordPage', attributes: { recordId: this.oppId, actionName: 'view' } }); } saveBrandJs(event) { this.IsLoading = true; this.dataCheck(); if(!this.flag){ this.IsLoading = false; return; } console.log(this.LostReport); var newLostReport = JSON.parse(JSON.stringify(this.LostReport)); newLostReport.approvalHistorys = this.newApprovalHistorys; dataEntry({ report1 : JSON.stringify(newLostReport), deleteBrandIdList: this.deleteBrandIdList, deleteProductIdList: this.deleteProductIdList }).then(result=>{ console.log(result); this.deleteBrandIdList.splice(0,this.deleteBrandIdList.length); this.deleteProductIdList.splice(0,this.deleteProductIdList.length); if(result.error){ this.showToast(result.error,"error"); }else{ // var report = JSON.parse(result.LostReport); // var index1 = 0; // this.LostReport.LostBrands.forEach(brand=>{ // brand.lostBrand.Id = report.LostBrands[index1].lostBrand.Id; // var index2 = 0; // brand.LostProducts.forEach(product=>{ // product.LostProductss.Id = report.LostBrands[index1].LostProducts[index2].LostProductss.Id; // index2++; // }); // index1++; // }); this.LostReport = JSON.parse(result.LostReport); this.reportId = result.reportId; // this.LostReport.lostReport.Id = result.reportId; // console.log(this.LostReport); this.status.pageStatus = 'View'; this.tableflag = 0; this.showToast('保存成功','success'); console.log(this.LostReport); } this.IsLoading = false; }).catch(error=>{ console.log("error"); console.log(error); }); } editJs(){ this.status.pageStatus = 'Edit'; } dataCheck(){ this.flag = true; if(this.LostReport.lostReport.LostType__c == undefined || this.isBlank(this.LostReport.lostReport.LostType__c)) { this.flag = false; this.showToast('必须填写失单类型!','error'); } this.LostReport.LostBrands.forEach(tempLostBrand=>{ if(tempLostBrand.lostBrand.Lost_By_Company__c == undefined || this.isBlank(tempLostBrand.lostBrand.Lost_By_Company__c)) { this.flag = false; this.showToast('请填写失单品牌!','error'); }// fy SWAG-CCC6F6 start else if(tempLostBrand.lostBrand.Lost_By_Company__c == '其他' && (tempLostBrand.lostBrand.Lost_By_Company_Mannual__c == undefined || this.isBlank(tempLostBrand.lostBrand.Lost_By_Company_Mannual__c))){ this.flag = false; this.showToast('请填写失单品牌(手动)!','error'); }// fy SWAG-CCC6F6 end if(tempLostBrand.lostBrand.LostPrice__c == undefined || this.isBlank(tempLostBrand.lostBrand.LostPrice__c)) { this.flag = false; this.showToast('失单金额必填!','error'); } if(tempLostBrand.lostBrand.Lost_reason_main__c == undefined || this.isBlank(tempLostBrand.lostBrand.Lost_reason_main__c)) { this.flag = false; this.showToast('失单理由(主)必填!','error'); } if(tempLostBrand.lostBrand.Agency__c == undefined || this.isBlank(tempLostBrand.lostBrand.Agency__c)) { this.flag= false; this.showToast('中标经销商必填!','error'); } // 检查是否有超过1个有数的产品 var productCount = 0; tempLostBrand.LostProducts.forEach(temlostProduct=>{ if ((temlostProduct.LostProductss.LostProduct__c != undefined && !this.isBlank(temlostProduct.LostProductss.LostProduct__c)) || (temlostProduct.LostProductss.LostProductMannual__c != undefined && !this.isBlank(temlostProduct.LostProductss.LostProductMannual__c))) { productCount ++; } // update tcm 20211123 start if(((temlostProduct.LostProductss.LostProduct__c!= undefined && !this.isBlank(temlostProduct.LostProductss.LostProduct__c)) || (temlostProduct.LostProductss.LostProductMannual__c!=undefined && !this.isBlank(temlostProduct.LostProductss.LostProductMannual__c)))&&(temlostProduct.LostProductss.Quantity__c==undefined || this.isBlank(temlostProduct.LostProductss.Quantity__c) || temlostProduct.LostProductss.Quantity__c ==0)) { this.flag = false; this.showToast('请填写失单数量!','error'); } if(((temlostProduct.LostProductss.LostProduct__c!=undefined && !this.isBlank(temlostProduct.LostProductss.LostProduct__c)) || (temlostProduct.LostProductss.LostProductMannual__c!=undefined && !this.isBlank(temlostProduct.LostProductss.LostProductMannual__c)))&&(temlostProduct.LostProductss.ProductCategory__c==undefined || this.isBlank(temlostProduct.LostProductss.ProductCategory__c))) { this.flag = false; if (temlostProduct.LostProductss.ProductClass__c==undefined || this.isBlank(temlostProduct.LostProductss.ProductClass__c)) { this.showToast('失单产品类别必填!','error'); this.showToast('失单产品必填!','error'); }else { this.showToast('失单产品必填!','error'); } } // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 start if (((temlostProduct.LostProductss.LostProduct__c==undefined || this.isBlank(temlostProduct.LostProductss.LostProduct__c)) && (temlostProduct.LostProductss.LostProductMannual__c==undefined || this.isBlank(temlostProduct.LostProductss.LostProductMannual__c)))&&((temlostProduct.LostProductss.ProductCategory__c!=undefined && !this.isBlank(temlostProduct.LostProductss.ProductCategory__c))||(temlostProduct.LostProductss.Quantity__c!=undefined && !this.isBlank(temlostProduct.LostProductss.Quantity__c)))) { this.flag = false; if(tempLostBrand.lostBrand.Lost_By_Company__c != '其他'){ this.showToast('失单对手型号或失单对手型号(手动)必填!','error'); } else{ this.showToast('失单对手型号或失单对手型号(手动)必填!','error'); } } // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 end // update tcm 20211123 end }); // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 start if (productCount == 0 && (tempLostBrand.LostProducts != undefined && !this.isBlank(tempLostBrand.LostProducts)) && tempLostBrand.LostProducts.length > 0) { this.flag = false; if(tempLostBrand.lostBrand.Lost_By_Company__c != '其他'){ this.showToast('至少录入1条失单对手型号信息!','error'); }else{ this.showToast('至少录入1条失单对手型号信息!','error'); } } // 当失单品牌名为其他时,报错字段为失单对手型号(手动) thh 2022-01-17 end }); } isBlank(str) { return /^\s*$/.test(str); } removeRow(event){ var index1 = event.target.name; var index2 = event.target.value; var deleteButtons = this.template.querySelectorAll('.deleteButton[data-id="' + index1 + '"]'); if(deleteButtons.length == 1){ return; } if(this.LostReport.LostBrands[index1].LostProducts[index2].LostProductss.Id){ var productId = this.LostReport.LostBrands[index1].LostProducts[index2].LostProductss.Id; this.deleteProductIdList.push(productId); } this.LostReport.LostBrands[index1].LostProducts.splice(index2,1); console.log(this.deleteProductIdList); } search(topNum,secondNum){ var elements1 = this.template.querySelectorAll('.ProductClass[data-id="' + topNum + '"]'); var elements2 = this.template.querySelectorAll('.ProductCategory[data-id="' + topNum + '"]'); if (this.LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.LostProduct__c==null) { elements1[secondNum].readOnly = false; elements2[secondNum].readOnly = false; this.LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductClass__c=null; this.LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductCategory__c=null; this.LostReport.LostBrands[topNum].LostProducts[secondNum].bool=false; elements1[secondNum].readOnly = true; elements2[secondNum].readOnly = true; }else { searchProduct({ lostProduct : this.LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.LostProduct__c }).then(result=>{ console.log(result); var prd = JSON.parse(result); this.LostReport.LostBrands[topNum].LostProducts[secondNum].productOptions = this.productOptionsList[prd.ProductClass__c]; if (prd.ProductCategory__c!=null) { elements1[secondNum].readOnly = false; elements2[secondNum].readOnly = false; this.LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductClass__c=prd.ProductClass__c; this.LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductCategory__c=prd.ProductCategory__c; elements1[secondNum].readOnly = true; elements2[secondNum].readOnly = true; }else { elements1[secondNum].readOnly = false; elements2[secondNum].readOnly = false; this.LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductClass__c=null; this.LostReport.LostBrands[topNum].LostProducts[secondNum].LostProductss.ProductCategory__c=null; elements1[secondNum].readOnly = true; elements2[secondNum].readOnly = true; } }).catch(error=>{ console.log("error"); console.log(error); }); } } handleSelected(event) { var index1 = event.target.title; var index2 = event.target.name; this.LostReport.LostBrands[index1].LostProducts[index2].LostProductss.LostProduct__c = event.detail.Id; this.LostReport.LostBrands[index1].LostProducts[index2].productName = event.detail.Name; this.search(index1,index2); } handleLostTypeChange(event){ var value = event.target.value; this.LostReport.lostReport.LostType__c = value; } handleLostReasonMainChange(event){ var index = event.target.name; var value = event.target.value; this.LostReport.LostBrands[index].lostBrand.Lost_reason_main__c = value; } handleLostReasonSubChange(event){ var index = event.target.name; var value = event.target.value; this.LostReport.LostBrands[index].lostBrand.Lost_Reason_Sub__c = value; } handleLostByCompanyMannualChange(event){ var index = event.target.name; var value = event.target.value; this.LostReport.LostBrands[index].lostBrand.Lost_By_Company_Mannual__c = value; this.setDefaultBrand(value,index); var elements = this.template.querySelectorAll('.Product[data-id="' + index + '"]'); if(value == '' || value == null){ elements.forEach(element=>{ element.letDisabledTrue(); }); }else{ elements.forEach(element=>{ element.letDisabledFalse(); }); } } handleLostPriceOutChange(event){ var index = event.target.name; var value = event.target.value; this.LostReport.LostBrands[index].lostBrand.LostPrice__c = value; this.setLostTotalAmount(); } handleAgencyOutChange(event){ var index = event.target.name; var value = event.target.value; this.LostReport.LostBrands[index].lostBrand.Agency__c = value; } handleAgencyMannualOutChange(event){ var index = event.target.name; var value = event.target.value; this.LostReport.LostBrands[index].lostBrand.AgencyMannual__c = value; } handleLostBrandNameChange(event){ var index1 = event.target.title; var index2 = event.target.name; this.LostReport.LostBrands[index1].LostProducts[index2].LostProductss.LostBrandName__c = event.target.value; } handleLostProductChange(event){ var index1 = event.target.title; var index2 = event.target.name; this.LostReport.LostBrands[index1].LostProducts[index2].LostProductss.LostProduct__c = event.target.value; } handleQuantityChange(event){ var index1 = event.target.title; var index2 = event.target.name; this.LostReport.LostBrands[index1].LostProducts[index2].LostProductss.Quantity__c = event.target.value; } handleLostProductMannualChange(event){ var index1 = event.target.title; var index2 = event.target.name; this.LostReport.LostBrands[index1].LostProducts[index2].LostProductss.LostProductMannual__c = event.target.value; } handleProductClassChange(event){ var index1 = event.target.title; var index2 = event.target.name; this.LostReport.LostBrands[index1].LostProducts[index2].LostProductss.ProductClass__c = event.target.value; var val = event.target.value; if(val == ''){ var temps1 =this.template.querySelectorAll('.ProductCategory[data-id="'+ index1 +'"]'); temps1[index2].readOnly = true; temps1[index2].value = ''; }else{ var temps1 =this.template.querySelectorAll('.ProductCategory[data-id="'+ index1 +'"]'); temps1[index2].readOnly = false; this.LostReport.LostBrands[index1].LostProducts[index2].productOptions = this.productOptionsList[val]; } } handleProductCategoryChange(event){ var index1 = event.target.title; var index2 = event.target.name; var val = event.target.value; var categorys = this.template.querySelectorAll('.ProductCategory'); var flag = false; categorys.forEach(category=>{ if(category.value == '超声主机'){ flag = true; } }); if(flag){ this.LostReport.lostReport.InclusionUltrasound__c = '1'; }else{ this.LostReport.lostReport.InclusionUltrasound__c = '0'; } this.LostReport.LostBrands[index1].LostProducts[index2].LostProductss.ProductCategory__c = val; } }