19626
2023-05-24 e6a0a7f9ffb463c5ce78d6770b09eac739f88b15
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-16 11:43:27
 * @LastEditTime: 2023-05-24 15:48:07
 */
const columns2=[
    { label: '--无--', value: '' },
@@ -18,6 +18,30 @@
    { 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 : "LostProduct__c"},
    {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";
@@ -29,44 +53,41 @@
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 submit from '@salesforce/apex/lexPCLLostReportLwcController.submit';
import {CloseActionScreenEvent} from 'lightning/actions';
export default class LexPCLLostReportPage extends NavigationMixin(LightningElement) {
    @track records;
    @api recordJson;
    @track columns2=columns2;
    @api reasonValue;
    @api oppId;
    lostReportId = '';
    pageStatus = 'Create';
    lostType = '失单';
    submitFlag = '';
    flag;
    @track columns2=columns2;
    @track pageStatus = 'Create';
    @track LostReport = {
        LostBrands: [
        ],
        lostReport: {}
    };
    }
    @track brandOptions = [];
    columns=[
        { "label" : "失单品牌", "apiName" : "LostBrandName__c" ,"fieldType":"picklist","objectName":"PCLLostProduct__c", "readOnly":true,"value":"--无--","required":false},
        { "label" : "失单对手型号", "apiName" : "LostProduct__c" ,"fieldType":"lookup","objectName":"PCLLostProduct__c","disable":"false","searchfield":"'无'","required":false},
        { "label" : "失单数量", "apiName" : "Quantity__c","fieldType":"number","objectName":"PCLLostProduct__c" ,"required":true},
        { "label" : "失单对手型号(手动)", "apiName" : "LostProductMannual__c","fieldType":"text","objectName":"PCLLostProduct__c" ,"required":false},
        { "label" : "失单产品类别", "apiName" : "ProductClass__c","fieldType":"picklist","objectName":"PCLLostProduct__c" ,"required":true},
        { "label" : "失单产品区分", "apiName" : "ProductCategory__c","fieldType":"picklist","objectName":"PCLLostProduct__c","required":true}
    ];
    lostType = '失单';
    submitFlag = '';
    flag;
    tableflag = 0;
    reportId = '';
    newProduct;
    productOptionsList;
    productClassOptions = productClassOptions;
    productCategoryOptions = productCategoryOptions;
    columns3 = columns3;
    //失单类型
    RecordTypeOptions = RecordTypeOptions;
    connectedCallback(){
        init({
            oppId1: this.oppId,
            lostReportId1: this.lostReportId,
            lostReportId1: this.reportId,
            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");
@@ -75,9 +96,11 @@
                    this.showToast(result.message,"error");
                }  
            }else{
                this.LostReport = result.LostReport;
                var report = result.LostReport;
                this.LostReport = report;
                this.LostReport.lostReport.LostTotalAmount__c = 0.0;
                this.LostReport.LostBrands[0].columns = JSON.parse(JSON.stringify(this.columns));
                this.LostReport.lostReport.InclusionUltrasound__c = '0';
                this.newProduct = JSON.parse(JSON.stringify(this.LostReport.LostBrands[0].LostProducts[0]));
            }
            }).catch(error=>{
                console.log("error");
@@ -93,20 +116,15 @@
            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].columns == undefined){
            return false;
        }else{
            return true;
        }
    }
    //失单类型
    RecordTypeOptions = [{ label: '--无--', value: '' },
                    { label: '失单', value: '失单' },
                    { label: '部分失单', value: '部分失单' }];
    @wire(CurrentPageReference)
    getStateParameters(currentPageReference) {
            console.log(111);
@@ -122,41 +140,32 @@
            }
        }
    }
    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);
            this.LostReport.LostBrands[this.LostReport.LostBrands.length - 1].columns = JSON.parse(JSON.stringify(this.columns));
    showToast(msg,type) {
        const event = new ShowToastEvent({
            title: '',
            message: msg,
            variant: type
        });
        this.dispatchEvent(event);
    }
    submitJS() {
        submit().then(result=>{
            if(result.get('error')){
                this.showToast(result.get('error'),"error");
            }else{
                this[NavigationMixin.Navigate]({
                    type: 'standard__recordPage',
                    attributes: {
                        uri: result.get('uri'),
                        Id: result.get('Id'),
                        pageStatus: result.get('pageStatus'),
                        submitFlag: result.get('submitFlag')
                    }
                });
            }
    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 productList = [];
        products.forEach(product=>{
            productList.push(product.LostProductss);
        });
    }
    get pageStatusIsCreateOrEdit() {
        return this.pageStatus === 'Create' || this.pageStatus === 'Edit';
        this.tableflag++;
        return productList;
    }
    get isBrandCount2(){
@@ -166,6 +175,69 @@
        }
        return flag;
    }
    get isView(){
        if(this.pageStatus == 'View'){
            return true;
        }
        return false;
    }
    get isEdit(){
        if(this.pageStatus == 'Create' || this.pageStatus == 'Edit'){
            return true;
        }
        return false;
    }
    addBrandJs() {
        getNewLostBrand({
            lineNo: this.LostReport.LostBrands.length
        }).then(result=>{
            this.LostReport.LostBrands.push(result);
        });
    }
    submitJs() {
        console.log('1');
        submit({
            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);
                });
            }
        }).catch(error=>{
            console.log("error");
            console.log(error);
        });
    }
    deleteBrandJs(event){
        var str = event.target.name;
@@ -177,18 +249,13 @@
        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;
@@ -200,7 +267,9 @@
        }
    }
    setDefaultBrand(value,index){
        this.LostReport.LostBrands[index].columns[0].value = value;
        this.LostReport.LostBrands[index].LostProducts.forEach(product => {
            product.LostProductss.LostBrandName__c = value;
        });
    }
   
@@ -209,12 +278,21 @@
        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;
            elements[index].required = true;
            var elements1 = this.template.querySelectorAll('.LostProduct[data-id="' + index + '"]');
                    elements1.forEach(element=>{
                        element.value = '';
                        element.disabled = true;
                    });
        } else {
            var elements = this.template.querySelectorAll('[data-id="Lost_By_Company_Mannual"]');
            this.brandFlag = false;
            elements[index].value = '';
            elements[index].disabled = true;
            this.LostReport.LostBrands[index].columns[1].disable = false;
            elements[index].required = false;
            elements1.forEach(element=>{
                element.disabled = false;
            });
        }
    }
    cancel() {
@@ -226,134 +304,33 @@
                    actionName: 'view'
                }
            });
    }
    showToast(msg,type) {
        const event = new ShowToastEvent({
            title: '',
            message: msg,
            variant: type
        });
        this.dispatchEvent(event);
        this.dispatchEvent(new CloseActionScreenEvent());
    }
    saveBrandJs(event) {
        var index = event.target.name;
        var tables = this.template.querySelectorAll("c-lex-dynamic-table");
            if(tables.length > 1){
                if(index == "save"){
                    for(let i=0;i < table.length;i++){
                        var products = this.LostReport.LostBrands[i].LostProducts;
                        var table = tables[i];
                        if(table!=undefined){
                            var records = table.retrieveRecords();
                            for(let j=0;j<records.length - 1;j++){
                                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{
                    var products = this.LostReport.LostBrands[index].LostProducts;
                    var table = tables[index];
                    if(table!=undefined){
                        var records = table.retrieveRecords();
                        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{
                var products = this.LostReport.LostBrands[0].LostProducts;
                var table = tables[0];
                if(table!=undefined){
                    var records = table.retrieveRecords();
                    console.log(JSON.stringify(records));
                    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){
            return;
        }
        dataEntry({
            report1 : JSON.stringify(this.LostReport)
        }).then(result=>{
            if(result){
                this.showToast(result,"error")
            }
        }).catch(error=>{
            console.log("error");
            console.log(error);
        });
                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);
            });
    }
    handleLostTypeChange(event){
        var value = event.target.value;
        this.LostReport.lostReport.LostType__c = value;
    editJs(){
        this.pageStatus = 'Edit';
    }
    
    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))
@@ -439,4 +416,129 @@
    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);
    }
    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('.LostProduct[data-id="' + index + '"]');
            if(value == '' || value == null){
                elements.forEach(element=>{
                    element.value = '';
                    element.disabled = true;
                });
            }else{
                elements.forEach(element=>{
                    element.disabled = false;
                });
            }
    }
    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;
    }
}