19626
2023-06-30 ac0d606acaa5844bc2c6ad2242d5502b60f9be3a
force-app/main/default/lwc/lexPCLLostReportPage/lexPCLLostReportPage.js
@@ -4,7 +4,7 @@
 * @Author: chen jing wu
 * @Date: 2023-04-20 15:04:03
 * @LastEditors: chen jing wu
 * @LastEditTime: 2023-05-24 15:48:07
 * @LastEditTime: 2023-06-30 09:55:38
 */
const columns2=[
    { label: '--无--', value: '' },
@@ -31,7 +31,7 @@
];
const columns3 = [
    {label : "失单品牌",fieldName : "LostBrandName__c"},
    {label : "失单对手型号",fieldName : "LostProduct__c"},
    {label : "失单对手型号",fieldName : "productName"},
    {label : "失单数量",fieldName : "Quantity__c",type : "number"},
    {label : "失单对手型号(手动)",fieldName : "LostProductMannual__c"},
    {label : "失单产品类别",fieldName : "ProductClass__c"},
@@ -47,27 +47,32 @@
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 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 pageStatus = 'Create';
    @track status = {
        pageStatus: 'Create'
      }
    @track LostReport = {
        LostBrands: [
        ],
        lostReport: {}
    }
    @track brandOptions = [];
    @track isInit = false;
    lostType = '失单';
    submitFlag = '';
    flag;
@@ -80,11 +85,14 @@
    columns3 = columns3;
    //失单类型
    RecordTypeOptions = RecordTypeOptions;
    isSubmit = false;
    deleteBrandIdList = [];
    deleteProductIdList = [];
    connectedCallback(){
        init({
            oppId1: this.oppId,
            lostReportId1: this.reportId,
            pageStatus1: this.pageStatus,
            pageStatus1: this.status.pageStatus,
            lostType1: this.lostType,
            submitFlag1: this.submitFlag
        }).then(result=>{
@@ -101,6 +109,8 @@
                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]));
                console.log(this.LostReport);
                this.isInit = true;
            }
            }).catch(error=>{
                console.log("error");
@@ -121,6 +131,9 @@
            fieldName: 'ProductCategory__c'
        }).then(result=>{
            this.productOptionsList = JSON.parse(result);
        }).catch(error=>{
            console.log('error');
            console.log(error);
        });
    }
@@ -149,20 +162,26 @@
        });
        this.dispatchEvent(event);
    }
    get isInit(){
        if(this.LostReport.LostBrands[0].LostProducts[0].productOptions == undefined){
            return false;
        }else{
            return true;
        }
    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 products = this.LostReport.LostBrands[this.tableflag].LostProducts;
        var newLostReport = JSON.parse(JSON.stringify(this.LostReport));
        var products = newLostReport.LostBrands[this.tableflag].LostProducts;
        var productList = [];
        products.forEach(product=>{
            productList.push(product.LostProductss);
            var newProduct = product;
            newProduct.LostProductss.productName = newProduct.productName;
            productList.push(newProduct.LostProductss);
        });
        this.tableflag++;
        return productList;
@@ -177,24 +196,46 @@
    }
    get isView(){
        if(this.pageStatus == 'View'){
        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.pageStatus == 'Create' || this.pageStatus == 'Edit'){
        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() {
@@ -203,55 +244,55 @@
            report1: JSON.stringify(this.LostReport),
            reportId: this.reportId
        }).then(result=>{
            console.log(result);
            if(result.error){
                this.showToast(result.error,"error");
            }else{
                this.submitFlag = result.submitFlag;
                init({
                    oppId1: this.oppId,
                    lostReportId1: this.reportId,
                    pageStatus1: result.pageStatus,
                    lostType1: this.lostType,
                    submitFlag1: this.submitFlag
                }).then(result=>{
                    var report = result.LostReport;
                    if(result.message != null){
                        if(result.message == '提交成功!'){
                            this.LostReport = report;
                            this.pageStatus = 'View';
                            this.showToast(result.message,"success");
                        }else{
                            this.showToast(result.message,"error");
                        }
                    }else{
                        this.LostReport = report;
                    }
                }).catch(error=>{
                    console.log("error");
                    console.log(error);
                });
                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);
            }
        }).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;
        this.columnsArrIndex = 0;
        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 elements = this.template.querySelectorAll('[data-id="TotalAmount"]');
        var tempLostAmount = 0.0;
        elements.forEach(element => {
            if(element.value != 0){
                tempLostAmount = tempLostAmount + parseFloat(element.value);
            }
        this.LostReport.LostBrands.forEach(brand=>{
            tempLostAmount = tempLostAmount + parseFloat(brand.lostBrand.LostPrice__c);
        });
        this.LostReport.lostReport.LostTotalAmount__c = tempLostAmount;
    }
@@ -260,16 +301,45 @@
        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){
        this.LostReport.LostBrands[index].LostProducts.forEach(product => {
            product.LostProductss.LostBrandName__c = value;
        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;
    }
   
@@ -279,10 +349,9 @@
            var elements = this.template.querySelectorAll('[data-id="Lost_By_Company_Mannual"]');
            elements[index].disabled = false;
            elements[index].required = true;
            var elements1 = this.template.querySelectorAll('.LostProduct[data-id="' + index + '"]');
            var elements1 = this.template.querySelectorAll('.Product[data-id="' + index + '"]');
                    elements1.forEach(element=>{
                        element.value = '';
                        element.disabled = true;
                        element.letDisabledTrue();
                    });
        } else {
            var elements = this.template.querySelectorAll('[data-id="Lost_By_Company_Mannual"]');
@@ -290,8 +359,9 @@
            elements[index].value = '';
            elements[index].disabled = true;
            elements[index].required = false;
            var elements1 = this.template.querySelectorAll('.Product[data-id="' + index + '"]');
            elements1.forEach(element=>{
                element.disabled = false;
                element.letDisabledFalse();
            });
        }
    }
@@ -311,26 +381,47 @@
        if(!this.flag){
            return;
        }
        console.log(this.LostReport);
        dataEntry({
                report1 : JSON.stringify(this.LostReport)
            }).then(result=>{
                if(result.error){
                    this.showToast(result.error,"error");
                }else{
                    this.reportId = result.reportId;
                    console.log(this.LostReport);
                    this.pageStatus = 'View';
                }
            }).catch(error=>{
                console.log("error");
                console.log(error);
            });
            report1 : JSON.stringify(this.LostReport),
            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);
            }
        }).catch(error=>{
            console.log("error");
            console.log(error);
        });
    }
    editJs(){
        this.pageStatus = 'Edit';
        this.status.pageStatus = 'Edit';
    }
    dataCheck(){
        this.flag = true;
        if(this.LostReport.lostReport.LostType__c == undefined || this.isBlank(this.LostReport.lostReport.LostType__c))
@@ -416,14 +507,6 @@
    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;
@@ -431,7 +514,60 @@
        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){
@@ -456,15 +592,14 @@
        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('.LostProduct[data-id="' + index + '"]');
        var elements = this.template.querySelectorAll('.Product[data-id="' + index + '"]');
            if(value == '' || value == null){
                elements.forEach(element=>{
                    element.value = '';
                    element.disabled = true;
                    element.letDisabledTrue();
                });
            }else{
                elements.forEach(element=>{
                    element.disabled = false;
                    element.letDisabledFalse();
                });
            }
    }