/*
|
* @Description:
|
* @version:
|
* @Author: chen jing wu
|
* @Date: 2023-04-20 15:04:03
|
* @LastEditors: chen jing wu
|
* @LastEditTime: 2023-05-23 11:09:20
|
*/
|
const columns2=[
|
{ label: '--无--', value: '' },
|
{ label: '无信息,跟进不及时', value: '无信息,跟进不及时' },
|
{ label: '价格', value: '价格' },
|
{ label: '医生偏好', value: '医生偏好' },
|
{ label: '服务不到位', value: '服务不到位' },
|
{ label: '行政决策', value: '行政决策' },
|
{ label: '竞品原有基础上增添设备', value: '竞品原有基础上增添设备' },
|
{ 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 setbrand from '@salesforce/apex/lexPCLLostReportLwcController.setBrand';
|
import init from '@salesforce/apex/lexPCLLostReportLwcController.init';
|
import multiSelectCombobox from 'c/multiSelectCombobox'
|
import lexMultiSelectCombobox from 'c/lexmultiSelectCombobox';
|
import searchBrands from '@salesforce/apex/lexPCLLostReportLwcController.searchBrands';
|
import getNewLostBrand from '@salesforce/apex/lexPCLLostReportLwcController.getNewLostBrand';
|
import getPickList from '@salesforce/apex/lexPCLLostReportLwcController.getPickList';
|
import { NavigationMixin } from 'lightning/navigation';
|
import {CloseActionScreenEvent} from 'lightning/actions';
|
import getLostProduct from '@salesforce/apex/lexPCLLostReportLwcController.getLostProduct';
|
export default class LexPCLLostReportPage extends NavigationMixin(LightningElement) {
|
|
|
@track records;
|
@api recordJson;
|
@track columns2=columns2;
|
@api reasonValue;
|
@api oppId;
|
lostReportId = '';
|
@track pageStatus = 'Create';
|
lostType = '失单';
|
submitFlag = '';
|
flag;
|
tableflag = 0;
|
reportId;
|
newProduct;
|
@track LostReport = {
|
LostBrands: [
|
],
|
lostReport: {}
|
};
|
@track brandOptions = [];
|
productOptionsList;
|
productClassOptions = [
|
{ label: '--无--', value: '' },
|
{ label: '主机', value: '主机' },
|
{ label: '镜子', value: '镜子' },
|
{ label: '小镜种', value: '小镜种' },
|
{ label: '能量', value: '能量' },
|
{ label: '其他', value: '其他' }
|
];
|
productCategoryOptions = [{ label: '--无--', value: '' }];
|
columns3 = [
|
{label : "失单品牌",fieldName : "LostBrandName__c"},
|
{label : "失单对手型号",fieldName : "LostProduct__c"},
|
{label : "失单数量",fieldName : "Quantity__c",type : "number"},
|
{label : "失单对手型号(手动)",fieldName : "LostProductMannual__c"},
|
{label : "失单产品类别",fieldName : "ProductClass__c"},
|
{label : "失单产品区分",fieldName : "ProductCategory__c"}
|
];
|
connectedCallback(){
|
init({
|
oppId1: this.oppId,
|
lostReportId1: this.lostReportId,
|
pageStatus1: this.pageStatus,
|
lostType1: this.lostType,
|
submitFlag1: this.submitFlag
|
}).then(result=>{
|
console.log(result);
|
if(result.message != null){
|
if(result.message == '提交成功!'){
|
this.showToast(result.message,"success");
|
this.LostReport = result.LostReport;
|
}else{
|
this.showToast(result.message,"error");
|
}
|
}else{
|
this.LostReport = result.LostReport;
|
this.LostReport.lostReport.LostTotalAmount__c = 0.0;
|
this.newProduct = JSON.parse(JSON.stringify(this.LostReport.LostBrands[0].LostProducts[0]));
|
}
|
}).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);
|
});
|
|
}
|
|
get isInit(){
|
if(this.LostReport.LostBrands[0].LostProducts[0].productOptions == undefined){
|
return false;
|
}else{
|
return true;
|
}
|
}
|
|
//失单类型
|
RecordTypeOptions = [{ label: '--无--', value: '' },
|
{ label: '失单', value: '失单' },
|
{ label: '部分失单', value: '部分失单' }];
|
@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;
|
}
|
}
|
}
|
get getData(){
|
var products = this.LostReport.LostBrands[this.tableflag].LostProducts;
|
var productList = [];
|
products.forEach(product=>{
|
productList.push(product.LostProductss);
|
});
|
this.tableflag++;
|
return productList;
|
}
|
getBrandLabel(index){
|
return "失单品牌" + (this.LostReport.LostBrands[index].lineno + 1);
|
}
|
getParamValue(paramName) {
|
// Use the URLSearchParams API to get the value of a query parameter
|
const params = new URLSearchParams(window.location.search);
|
return params.get(paramName);
|
}
|
addBrandJs() {
|
getNewLostBrand({
|
lineNo: this.LostReport.LostBrands.length
|
}).then(result=>{
|
this.LostReport.LostBrands.push(result);
|
});
|
}
|
submitJS() {
|
submit({
|
report: this.LostReport,
|
reportId: this.reportId
|
}).then(result=>{
|
if(result.get('error')){
|
this.showToast(result.get('error'),"error");
|
}else{
|
this.pageStatus = 'View';
|
// this[NavigationMixin.Navigate]({
|
// type: 'standard__recordPage',
|
// attributes: {
|
// uri: result.get('uri'),
|
// Id: result.get('Id'),
|
// pageStatus: result.get('pageStatus'),
|
// submitFlag: result.get('submitFlag')
|
// }
|
// });
|
}
|
});
|
}
|
get pageStatusIsCreateOrEdit() {
|
return this.pageStatus === 'Create' || this.pageStatus === 'Edit';
|
}
|
|
get isBrandCount2(){
|
var flag = true;
|
if(this.LostReport.LostBrands.length > 1){
|
flag = false;
|
}
|
return flag;
|
}
|
|
deleteBrandJs(event){
|
var str = event.target.name;
|
this.columnsArrIndex = 0;
|
this.LostReport.LostBrands.splice(str,1);
|
}
|
// add tcm 20211118 end
|
setLostTotalAmount() {
|
var elements = this.template.querySelectorAll('[data-id="TotalAmount"]');
|
var tempLostAmount = 0.0;
|
elements.forEach(element => {
|
console.log(element.value);
|
if(element.value != 0){
|
tempLostAmount = tempLostAmount + parseFloat(element.value);
|
}
|
});
|
this.LostReport.lostReport.LostTotalAmount__c = tempLostAmount;
|
}
|
setBrandName(brandNumber) {
|
setbrand().then(()=>{
|
this.clearBrandMannualName();
|
});
|
}
|
setBrandMannualName(event) {
|
var index = event.target.name;
|
const payload = event.detail.payload;
|
const payloadType = event.detail.payloadType;
|
this.LostReport.LostBrands[index].lostBrand.Lost_By_Company__c = payload.value;
|
if(payloadType === 'multi-select'){
|
this.setDefaultBrand(payload.value,index);
|
this.clearBrandMannualName(payload.value,index);
|
}
|
}
|
setDefaultBrand(value,index){
|
this.LostReport.LostBrands[index].LostProducts.forEach(product => {
|
product.LostProductss.LostBrandName__c = value;
|
});
|
|
// this.LostReport.LostBrands[index].columns[0].value = value;
|
}
|
|
|
// 失单品牌不等于其他时,失单品牌(手动)清空并且不允许填写,失单品牌等于其他时,失单对手型号不可用 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;
|
this.LostReport.LostBrands[index].columns[1].disable = true;
|
} else {
|
var elements = this.template.querySelectorAll('[data-id="Lost_By_Company_Mannual"]');
|
elements[index].value = '';
|
elements[index].disabled = true;
|
this.LostReport.LostBrands[index].columns[1].disable = false;
|
}
|
}
|
cancel() {
|
// Navigate to the specified opportunity page using the NavigationMixin
|
this[NavigationMixin.Navigate]({
|
type: 'standard__recordPage',
|
attributes: {
|
recordId: this.oppId,
|
actionName: 'view'
|
}
|
});
|
|
}
|
showToast(msg,type) {
|
const event = new ShowToastEvent({
|
title: '',
|
message: msg,
|
variant: type
|
});
|
this.dispatchEvent(event);
|
}
|
saveBrandJs(event) {
|
// var index = event.target.name;
|
// var tables = this.template.querySelectorAll("c-lex-dynamic-table");
|
// var LostReportCopy = JSON.parse(JSON.stringify(this.LostReport));
|
// if(tables.length > 1){
|
// if(index == "save"){
|
// console.log("1");
|
// for(let i=0;i < tables.length;i++){
|
// var products = this.LostReport.LostBrands[i].LostProducts;
|
// var table = tables[i];
|
// if(table!=undefined){
|
// var records = table.retrieveRecords();
|
// if(records.length > 1){
|
// for(let i=0;i<records.length - 1;i++){
|
// products.push(JSON.parse(JSON.stringify(products[0])));
|
// }
|
// }
|
// for(let j=0;j<records.length;j++){
|
// products[j].LostProductss.LostBrandName__c = records[j].LostBrandName__c;
|
// products[j].LostProductss.Quantity__c = records[j].Quantity__c;
|
// products[j].LostProductss.LostProductMannual__c = records[j].LostProductMannual__c;
|
// products[j].LostProductss.ProductClass__c = records[j].ProductClass__c;
|
// products[j].LostProductss.ProductCategory__c = records[j].ProductCategory__c;
|
// products[j].LostProductss.LostProduct__c = records[j].LostProduct__c;
|
// }
|
// }
|
// }
|
// }else{
|
// console.log("2");
|
// var products = this.LostReport.LostBrands[index].LostProducts;
|
// var table = tables[index];
|
// if(table!=undefined){
|
// var records = table.retrieveRecords();
|
// if(records.length > 1){
|
// for(let i=0;i<records.length - 1;i++){
|
// products.push(JSON.parse(JSON.stringify(products[0])));
|
// }
|
// }
|
// for(let i=0;i<records.length;i++){
|
// products[i].LostProductss.LostBrandName__c = records[i].LostBrandName__c;
|
// products[i].LostProductss.Quantity__c = records[i].Quantity__c;
|
// products[i].LostProductss.LostProductMannual__c = records[i].LostProductMannual__c;
|
// products[i].LostProductss.ProductClass__c = records[i].ProductClass__c;
|
// products[i].LostProductss.ProductCategory__c = records[i].ProductCategory__c;
|
// products[i].LostProductss.LostProduct__c = records[i].LostProduct__c;
|
// }
|
// }
|
// }
|
// }else{
|
// console.log("3");
|
// var products = this.LostReport.LostBrands[0].LostProducts;
|
// var table = tables[0];
|
// if(table!=undefined){
|
// var records = table.retrieveRecords();
|
// if(records.length > 1){
|
// for(let i=0;i<records.length - 1;i++){
|
// products.push(JSON.parse(JSON.stringify(products[0])));
|
// }
|
// }
|
// for(let i=0;i<records.length;i++){
|
// products[i].LostProductss.LostBrandName__c = records[i].LostBrandName__c;
|
// products[i].LostProductss.Quantity__c = records[i].Quantity__c;
|
// products[i].LostProductss.LostProductMannual__c = records[i].LostProductMannual__c;
|
// products[i].LostProductss.ProductClass__c = records[i].ProductClass__c;
|
// products[i].LostProductss.ProductCategory__c = records[i].ProductCategory__c;
|
// products[i].LostProductss.LostProduct__c = records[i].LostProduct__c;
|
// }
|
// }
|
// }
|
// this.dataCheck();
|
// if(!this.flag){
|
// this.LostReport = LostReportCopy;
|
// return;
|
// }
|
// dataEntry({
|
// report1 : JSON.stringify(this.LostReport)
|
// }).then(result=>{
|
// if(result.error){
|
// this.showToast(result.error,"error");
|
// }else{
|
// this.reportId = result.reportId;
|
// this.pageStatus = 'View';
|
// }
|
// }).catch(error=>{
|
// console.log("error");
|
// console.log(error);
|
// });
|
console.log(this.LostReport);
|
|
}
|
editJs(){
|
this.pageStatus = 'Edit';
|
}
|
get isView(){
|
if(this.pageStatus == 'View'){
|
return true;
|
}
|
return false;
|
}
|
get isEdit(){
|
if(this.pageStatus == 'Create' || this.pageStatus == 'Edit'){
|
return true;
|
}
|
return false;
|
}
|
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;
|
}
|
|
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;
|
}
|
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);
|
}
|
addRow(event){
|
var index = event.target.name;
|
var product = JSON.parse(JSON.stringify(this.newProduct));
|
if(this.LostReport.LostBrands[index].LostProducts[0].LostProductss.LostBrandName__c != undefined){
|
product.LostProductss.LostBrandName__c = JSON.parse(JSON.stringify(this.LostReport.LostBrands[index].LostProducts[0].LostProductss.LostBrandName__c));
|
}
|
this.LostReport.LostBrands[index].LostProducts.push(product);
|
}
|
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;
|
}
|
this.LostReport.LostBrands[index1].LostProducts.splice(index2,1);
|
}
|
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="'+ index2 +'"]');
|
var temps1 =this.template.querySelectorAll('.ProductCategory[data-id="'+ index1 +'"]');
|
// var temps2 = temps1.querySelectorAll('.ProductCategory');
|
|
// var temps1 = this.template.querySelectorAll(".ProductCategory");
|
// var temps2 = temps1.querySelectorAll('[name=' + index2 + ']');
|
// temps1[index1].readonly = false;
|
temps1[index2].readOnly = false;
|
this.LostReport.LostBrands[index1].LostProducts[index2].productOptions = this.productOptionsList[val];
|
}
|
|
}
|
get getZhuJiOptions(){
|
return this.productOptionsList.get('主机');
|
}
|
get getXiaoJingZhongOptions(){
|
return this.productOptionsList.get('小镜种');
|
}
|
get getJingZiOptions(){
|
return this.productOptionsList.get('镜子');
|
}
|
get getNengLiangOptions(){
|
return this.productOptionsList.get('能量');
|
}
|
get getQiTaOptions(){
|
return this.productOptionsList.get('其他');
|
}
|
isOptionsBlank(){
|
if(this.productCategoryOptions.length == 1){
|
|
}
|
}
|
handleProductCategoryChange(event){
|
var index1 = event.target.title;
|
var index2 = event.target.name;
|
this.LostReport.LostBrands[index1].LostProducts[index2].LostProductss.ProductCategory__c = event.target.value;
|
}
|
|
}
|