binxie
2023-06-26 de9565270a88b0749d17c1961cd41399c8483c96
force-app/main/default/lwc/lexInventoryCount/lexInventoryCount.js
New file
@@ -0,0 +1,555 @@
import { LightningElement, wire, api, track } from "lwc";
import oninit from "@salesforce/apex/LexInventoryController.init";
import barcodeEntry from "@salesforce/apex/LexInventoryController.searchConsumableorderdetails";
// import saveConfirm from '@salesforce/apex/LexInventoryController.saveConfirm';
import save from "@salesforce/apex/LexInventoryController.save";
import datainit from "@salesforce/apex/LexInventoryListController.init";
import { ShowToastEvent } from "lightning/platformShowToastEvent";
import { NavigationMixin } from "lightning/navigation";
//库存盘点主页面数据
const columns = [
    {
        label: "是否盘点",
        fieldName: "iscount",
        hideDefaultActions: true,
        cellAttributes: { alignment: "left" },
    },
    {
        label: "消耗品名称",
        fieldName: "Name__c",
        hideDefaultActions: true,
        initialWidth: 250,
        cellAttributes: { alignment: "left" },
    },
    {
        label: "规格",
        fieldName: "Packing_list_manual__c",
        hideDefaultActions: true,
    },
    {
        label: "单位",
        fieldName: "boxPiece",
        hideDefaultActions: true,
    },
    {
        label: "有效期内库存",
        fieldName: "limitCount",
        hideDefaultActions: true,
    },
    {
        label: "过期库存",
        fieldName: "overlimitCount",
        hideDefaultActions: true,
        initialWidth: 100,
    },
    {
        label: "盘点",
        fieldName: "Pandian",
        hideDefaultActions: true,
        initialWidth: 100,
    },
    {
        label: "丢失",
        fieldName: "Diff",
        hideDefaultActions: true,
        initialWidth: 100,
    },
    {
        label: "寻回   ",
        fieldName: "refind",
        hideDefaultActions: true,
        initialWidth: 150,
    },
    {
        label: "差异原因",
        // fieldName: "DiffReason",
        hideDefaultActions: true,
        type: "customDiffReason",
        typeAttributes: {
            DiffReason: { fieldName: "DiffReason" },
            ProdId: { fieldName: "ProdId" },
        },
    },
];
//调整明细
const column = [
    {
        label: "消耗品名称",
        fieldName: "Name__c",
        hideDefaultActions: true,
        cellAttributes: { alignment: "left" },
    },
    {
        label: "单位",
        fieldName: "Box_Piece__c",
        hideDefaultActions: true,
    },
    {
        label: "barcode",
        fieldName: "Bar_Code__c",
        hideDefaultActions: true,
        initialWidth: 150,
    },
    {
        label: "调整原因",
        fieldName: "DiffReason",
        hideDefaultActions: true,
    },
];
//盘点明细
const dcolumns = [
    {
        label: "消耗品名称",
        fieldName: "Name__c",
        hideDefaultActions: true,
        cellAttributes: { alignment: "left" },
    },
    {
        label: "库存",
        fieldName: "Count_Sum__c",
        hideDefaultActions: true,
    },
    {
        label: "盘点",
        fieldName: "inventory_sum__c",
        hideDefaultActions: true,
        initialWidth: 150,
    },
    {
        label: "丢失",
        fieldName: "Diff__c",
        hideDefaultActions: true,
    },
    {
        label: "寻回",
        fieldName: "Product_Refind__c",
        hideDefaultActions: true,
    },
    {
        label: "差异原因",
        fieldName: "Lose_reason__c",
        hideDefaultActions: true,
    },
];
//在库调整明细
const stockadjustcolumns = [
    {
        label: "消耗品名称",
        fieldName: "Name__c",
        cellAttributes: { alignment: "left" },
    },
    {
        label: "产品型号",
        fieldName: "Asset_Model_No__c",
        hideDefaultActions: true,
    },
    {
        label: "差异原因",
        fieldName: "Lose_reason__c",
        hideDefaultActions: true,
        initialWidth: 150,
    },
    {
        label: "是否丢失",
        type: "boolean",
        fieldName: "Lose_Flag__c",
        hideDefaultActions: true,
    },
];
export default class LexInventoryCount extends NavigationMixin(
    LightningElement
) {
    columns = columns;
    column = column;
    stockadjustcolumns = stockadjustcolumns;
    dcolumns = dcolumns;
    @track data = [];
    @track codPageRecords = [];
    @track accountName;
    @track agencyProType;
    @track userWorkLocation;
    @track accountid
    @track pandiandetailsMap
    @track reSet
    @track showTable = false;
    @track showbutton = false;
    @track barcode = "";
    @track ConsumableorderdetailsRecordsview = [];
    @track consumableorderdetailsRecords = [];
    @track showcount = true;
    @track iSinventory = false
    @track numberDetail;
    @track hidecheckbox = true;
    //加载框
    // @track casesSpinner = true;
    @track showSpinner = true;
    //row
    @track selectedRows = [];
    //inventoryList
    @track isSummonsFlag;
    //展开栏
    activeSections = ["dataExpand"];
    columnHeader = ["消耗品名称", "单位", "barCode", "调整原因"];
    //确认一览
    @track eSetId = "";
    @track EditAble = false;
    @track selectedData;
    @track conId;
    @track detailData = [];
    @track adjustdata = [];
    //获取链接参数
    getQueryString(name) {
        console.log("getQueryString name " + name);
        let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        let r = window.location.search.substr(1).match(reg);
        if (r != null) {
            return decodeURIComponent(r[2]);
        }
        return null;
    }
    connectedCallback() {
        console.log("===>初始化");
        this.showSpinner = true;
        //获取ESetid
        this.eSetId = this.getQueryString("eSetId");
        this.eSetId = this.eSetId == null ? "" : this.eSetId;
        console.log(" this.eSetId" + this.eSetId);
        if (this.eSetId == "") {
            this.EditAble = false;
        } else {
            this.inits();
            this.showcount = false;
            this.EditAble = true;
        }
        oninit()
            .then((result) => {
                console.log("1112" + JSON.stringify(result));
                result = JSON.parse(JSON.stringify(result));
                console.log("result.status = " + result.status);
                console.log(
                    " ConsumableorderdetailsRecordsview= " +
                    result.entity.ConsumableorderdetailsRecordsview
                );
                this.ConsumableorderdetailsRecordsview = JSON.parse(
                    result.entity.ConsumableorderdetailsRecordsview
                );
                this.consumableorderdetailsRecords =
                    result.entity.consumableorderdetailsRecords;
                console.log(
                    " consumableorderdetailsRecords= " +
                    result.entity.consumableorderdetailsRecords
                );
                console.log("传参类型", typeof this.consumableorderdetailsRecords);
                if (result.status == "Success") {
                    console.log(
                        "this.ConsumableorderdetailsRecordsview[0] = " +
                        JSON.stringify(this.ConsumableorderdetailsRecordsview[0])
                    );
                    console.log(
                        "this.ConsumableorderdetailsRecordsview[0].length = " +
                        this.ConsumableorderdetailsRecordsview[0].length
                    );
                    // let cloneData = [];
                    // for (let i in this.ConsumableorderdetailsRecordsview[0]) {
                    //   cloneData.push(JSON.parse(this.ConsumableorderdetailsRecordsview[0][i]));
                    // }
                    // console.log('cloneData = ' + typeof cloneData);
                    // console.log('cloneData = ' + cloneData);
                    // this.data = cloneData;
                    this.data = [];
                    this.data = this.ConsumableorderdetailsRecordsview[0];
                    console.log("this.data ==>" + JSON.stringify(this.data));
                    for (let i in this.data) {
                        this.data[i]["Name__c"] = this.data[i].Prod.Name__c;
                        this.data[i]["Packing_list_manual__c"] =
                            this.data[i].Prod.Packing_list_manual__c;
                    }
                    this.accountName = result.entity.accountName;
                    this.agencyProType = result.entity.agencyProType;
                    this.userWorkLocation = result.entity.userWorkLocation;
                    this.showSpinner = false;
                    this.accountid = result.entity.accountid;
                    // this.casesSpinner = false;
                    this.showTable = true;
                } else {
                    console.log("Error:" + result.errorMsg);
                    const evt = new ShowToastEvent({
                        title: "解析失败",
                        message: result.errorMsg,
                        variant: "error",
                    });
                    this.dispatchEvent(evt);
                }
            })
            .catch((error) => {
                console.log("error = " + JSON.stringify(error));
            });
        //默认展开栏
        this.activeSections = ["dataExpand"];
        this.showTable = false;
        this.showbutton = false;
        //init
    }
    //录入barcode
    barcodeEntrys() {
        this.showTable = false;
        this.showbutton = false;
        this.showSpinner = true;
        console.log("进入录入");
        console.log(
            "this.consumableorderdetailsRecords===>" +
            this.consumableorderdetailsRecords
        );
        barcodeEntry({
            accountName: this.accountName,
            agencyProType: this.agencyProType,
            userWorkLocation: this.userWorkLocation,
            barcode: this.barcode,
            consumableorderdetailsRecordsLWC: this.consumableorderdetailsRecords,
        })
            .then((result) => {
                result = JSON.parse(JSON.stringify(result));
                console.log("result ===>" + JSON.stringify(result));
                console.log("1111");
                if (result.status == "Sucess") {
                    this.codPageRecords = JSON.parse(result.entity.codPageRecords);
                    for (var i in this.codPageRecords) {
                        this.codPageRecords[i]["Name__c"] = this.codPageRecords[i].Prod.Name__c;
                        this.codPageRecords[i]["Box_Piece__c"] = this.codPageRecords[i].orderdetails2.Box_Piece__c;
                        this.codPageRecords[i]["Bar_Code__c"] = this.codPageRecords[i].orderdetails2.Bar_Code__c;
                    }
                    this.data = JSON.parse(result.entity.consumableorderdetailsRecords);
                    for (var i in this.data) {
                        this.data[i]["Name__c"] = this.data[i].Prod.Name__c;
                        this.data[i]["Packing_list_manual__c"] = this.data[i].Prod.Packing_list_manual__c;
                    }
                    for (var i in this.data) {
                        if (this.data[i]["check"]) {
                            this.selectedRows.push(this.data[i].ProdId);
                            console.log("selectedRows:" + this.selectedRows);
                        }
                    }
                    this.iSinventory = result.entity.iSinventory;
                    this.pandiandetailsMap = result.entity.pandiandetailsMap;
                    this.reSet = result.entity.reSet;
                    console.log("iSinventory:" + this.iSinventory);
                    this.showTable = true;
                    this.showbutton = true;
                    this.showSpinner = false;
                    console.log('reSet' + this.reSet);
                    console.log('pandiandetailsMap' + this.pandiandetailsMap);
                    console.log(
                        "this.codPageRecords=11111 " + result.entity.codPageRecords
                    );
                    console.log("result录入= " + JSON.stringify(result));
                    console.log(
                        "result主页数据= " + result.entity.consumableorderdetailsRecords
                    );
                } else {
                    console.log('Error:' + result.errorMsg);
                    const evt = new ShowToastEvent({
                      title: '',
                      message: result.msg,
                      variant: 'error'
                    });
                    this.dispatchEvent(evt);
                    this.showSpinner = false;
                    this.showTable = true;
                }
            })
            .catch((error) => {
                console.log("error = " + JSON.stringify(error));
            });
    }
    //获取当前输入值
    handleChange(event) {
        let value = event.detail.value;
        console.log("value" + value);
        this.barcode = value;
    }
    getSelectedRows(event) {
        const selectedRows = event.detail.selectedRows;
        console.log("this.selectedRows = " + this.selectedRows);
        for (var i in this.data) {
            this.data[i]["check"] = false;
        }
        for (var i in this.data) {
            for (var j in selectedRows) {
                if (this.data[i].ProdId == selectedRows[j].ProdId) {
                    this.data[i]["check"] = true;
                }
            }
        }
    }
    //导出为csv
    exportData() {
        console.log("导出");
        // Prepare a html table
        let doc = "<table>";
        // Add styles for the table
        doc += "<style>";
        doc += "table, th, td {";
        doc += "    border: 1px solid black;";
        doc += "    border-collapse: collapse;";
        doc += "}";
        doc += "</style>";
        // Add all the Table Headers
        doc += "<tr>";
        this.columnHeader.forEach((element) => {
            doc += "<th>" + element + "</th>";
        });
        doc += "</tr>";
        // Add the data rows
        this.codPageRecords.forEach((record) => {
            doc += "<tr>";
            doc += "<th>" + record.Name__c + "</th>";
            doc += "<th>" + record.Box_Piece__c + "</th>";
            doc += "<th>" + record.Bar_Code__c + "</th>";
            doc += "<th>" + record.DiffReason + "</th>";
            doc += "</tr>";
        });
        doc += "</table>";
        var element = "data:application/vnd.ms-excel," + encodeURIComponent(doc);
        let downloadElement = document.createElement("a");
        downloadElement.href = element;
        downloadElement.target = "_self";
        // use .csv as extension on below line if you want to export data as csv
        downloadElement.download = "库存变化明细.xls";
        document.body.appendChild(downloadElement);
        downloadElement.click();
    }
    //自定义dataType
    diffreasons(event) {
        const numberDetail = event.detail;
        // this.numberDetail = numberDetail;
        console.log("numberDetail" + JSON.stringify(numberDetail));
        for (var i in this.data) {
            if (this.data[i]["ProId"] == numberDetail.data.ProId) {
                this.data[i]["DiffReason"] = numberDetail.data.DiffReason;
            }
        }
        console.log(" this.data==>" + JSON.stringify(this.data));
    }
    saveConfirm() {
        console.log("进入盘点确认");
        console.log('reSet' + this.reSet);
        console.log('pandiandetailsMap' + this.pandiandetailsMap);
        var el = this.template.querySelector("c-lex-custom-lightning-datatable");
        var selected = el.getSelectedRows();
        this.selectedData = selected;
        console.log("选中数据" + JSON.stringify(this.selectedData));
        save({
            iSinventory: this.iSinventory,
            consumableorderdetailsRecordsLWC: JSON.stringify(this.selectedData),
            accountid: this.accountid,
            agencyProType: this.agencyProType,
            reSet: this.reSet,
            pandiandetailsMap: this.pandiandetailsMap
        })
            .then((result) => {
                result = JSON.parse(JSON.stringify(result));
                console.log("result = " + JSON.stringify(result));
                console.log("111111");
                if (result.status == "Success") {
                    let url = "/lexInventoryCount?ESetid=" + result.entity.eSetId;
                    this[NavigationMixin.Navigate]({
                        type: "standard__webPage",
                        attributes: {
                            url: url,
                        },
                    });
                    console.log("Id" + this.eSetId);
                    // this.EditAble = true;
                    // this.showcount = false;
                } else {
                    console.log("result.msg = " + result.msg);
                    const evt = new ShowToastEvent({
                        title: "失败",
                        message: result.msg,
                        variant: "error",
                    });
                    this.dispatchEvent(evt);
                }
            })
            .catch((error) => {
                console.log("error = " + JSON.stringify(error));
            });
    }
    inits() {
        datainit({
            eSetId: this.eSetId,
        })
            .then((result) => {
                result = JSON.parse(JSON.stringify(result));
                console.log('盘点一览===>' + JSON.stringify(result));
                for (var i in result.entity.qs) {
                    this.conId = result.entity.qs[i].Id;
                }
                console.log("this.conId" + typeof this.conId);
                this.detailData = JSON.parse(
                    result.entity.consumableorderdetailsRecords
                );
                if (result.entity.ConsumableorderdetailsRecordsError != null) {
                    this.adjustdata = JSON.parse(
                        result.entity.ConsumableorderdetailsRecordsError
                    );
                    for (let i in this.detailData) {
                        this.detailData[i].Name__c = this.detailData[i].Prod.Name__c;
                        this.detailData[i].Count_Sum__c = this.detailData[i].orderdetails1.Count_Sum__c;
                        this.detailData[i].inventory_sum__c = this.detailData[i].orderdetails1.inventory_sum__c;
                        this.detailData[i].Diff__c = this.detailData[i].orderdetails1.Diff__c;
                        this.detailData[i].Product_Refind__c = this.detailData[i].orderdetails1.Product_Refind__c;
                        this.detailData[i].Lose_reason__c = this.detailData[i].orderdetails1.Lose_reason__c;
                    }
                    for (let i in this.adjustdata) {
                        this.adjustdata[i].Name__c = this.adjustdata[i].Prod.Name__c;
                        this.adjustdata[i].Asset_Model_No__c = this.adjustdata[i].Prod.Asset_Model_No__c;
                        this.adjustdata[i].Lose_reason__c = this.adjustdata[i].orderdetails2.Lose_reason__c;
                        this.adjustdata[i].Lose_Flag__c = this.adjustdata[i].orderdetails2.Lose_Flag__c;
                    }
                }
                console.log("result盘点Id" + JSON.stringify(this.conId));
                console.log("调整明细" + JSON.stringify(this.adjustdata));
            })
            .catch((error) => {
                console.log("error = " + JSON.stringify(error));
            });
    }
}