import { LightningElement, wire, api, track } from "lwc"; import { ShowToastEvent } from "lightning/platformShowToastEvent"; import { NavigationMixin } from "lightning/navigation"; import initPage from "@salesforce/apex/LexTopPageController.initPage"; import initTotalNum from "@salesforce/apex/LexConsumableGoodsInfo.initTotalNum"; import initArrDet from "@salesforce/apex/LexConsumableGoodsInfo.initArrDet"; import initArrDetAll from "@salesforce/apex/LexConsumableGoodsInfo.initArrDetAll"; import initDeliveryDet from "@salesforce/apex/LexConsumableGoodsInfo.initDeliveryDet"; import initDeliveryDetAll from "@salesforce/apex/LexConsumableGoodsInfo.initDeliveryDetAll"; import initNotArrDet from "@salesforce/apex/LexConsumableGoodsInfo.initNotArrDet"; import initNotArrDetAll from "@salesforce/apex/LexConsumableGoodsInfo.initNotArrDetAll"; import initMoreThan7 from "@salesforce/apex/LexConsumableGoodsInfo.initMoreThan7"; import initMoreThan7All from "@salesforce/apex/LexConsumableGoodsInfo.initMoreThan7All"; //table css import { loadStyle } from "lightning/platformResourceLoader"; import WrappedHeaderTable from "@salesforce/resourceUrl/lexdatatable"; export default class LexTopPage extends NavigationMixin(LightningElement) { @track title = []; @track raesList = []; @track column = []; @track overlimitdateorderdetails = []; @track productLimitRecords = []; @track accountInfo; @track accountId; @track userPro_Type; @track pageRecords = []; @track csvData = []; @track product_Limit; @track over_view = false; @track overlimit = false; @track hasHos = false; @track activeSections = ["A", "B", "C"]; @track isRender = false; @track consumableorderdetailsRecordsview; @track showSpinner = true; @track showPage = false; // @track showPop = false; @track popTitle; @track totalNum; @track orderNumberArrived; @track deliveryDetailCount; @track orderNumberNotarrive; @track moreThanSevenDays; stylesLoaded = false; @track showTable = false; @track hidecheckboxcolumn = true; //排序 defaultSortDirection = "asc"; sortDirection = "asc"; sortedBy; //分页start @track sortBy = ""; @track pageSize = 10; error; records; currentPageToken = 0; nextPageToken = this.pageSize; @track totalRecords = 0; @track loader = false; @track pageNumber = 1; @track paginationVisibility = false; @track totalPages = 1; pageSizeOptions = [10, 25, 50, 100]; @track recordStart = 0; @track recordEnd = 0; //end //是否一直显示提示 @track isNoteStay = true; //未全部发货订单明细col @track colms = [ { label: "消耗品订单名称", type: "customOutputGood", typeAttributes: { outputValue: { fieldName: "Name" }, type: "Title", recordId: { fieldName: "Id" } }, hideDefaultActions: true, // initialWidth: 200, wrapText: true }, { label: "SAP合同号", fieldName: "ContractNo__c", hideDefaultActions: true, wrapText: true, initialWidth: 180 }, { label: "订单总数", type: "customOutputGood", typeAttributes: { outputValue: { fieldName: "Total_num__c" }, type: "TotalNum", recordId: { fieldName: "Id" } }, hideDefaultActions: true, initialWidth: 100 }, { label: "已到货数量", type: "customOutputGood", typeAttributes: { outputValue: { fieldName: "OrderNumber_arrived__c" }, type: "ArrDet", recordId: { fieldName: "Id" } }, hideDefaultActions: true, initialWidth: 100 }, { label: "待系统操作入库数量", type: "customOutputGood", typeAttributes: { outputValue: { fieldName: "Delivery_detail_count__c" }, type: "DeliveryDet", recordId: { fieldName: "Id" } }, hideDefaultActions: true, initialWidth: 150 }, { label: "还没发货数量", type: "customOutputGood", typeAttributes: { outputValue: { fieldName: "OrderNumber_notarrive__c" }, type: "NotArrDet", recordId: { fieldName: "Id" } }, hideDefaultActions: true, initialWidth: 120 }, { label: "发货七天还未到货数", type: "customOutputGood", typeAttributes: { outputValue: { fieldName: "More_than_seven_days__c" }, type: "MoreThan7", recordId: { fieldName: "Id" } }, hideDefaultActions: true, initialWidth: 150 }, { label: "最新发货日期", fieldName: "Shipment_date__c", hideDefaultActions: true, initialWidth: 105 }, { label: "首次发货日期", fieldName: "First_Delivery__c", hideDefaultActions: true, initialWidth: 105 } ]; @track colms2 = [ { label: "产品型号", fieldName: "prodModel", hideDefaultActions: true }, { label: "数量", fieldName: "recordCount", hideDefaultActions: true, initialWidth: 60, cellAttributes: { alignment: "center" } } ]; //使用期限小于一年的产品col @track colm3 = [ { label: "产品型号", fieldName: "prodName", hideDefaultActions: true }, { label: "数量", fieldName: "countid", hideDefaultActions: true, cellAttributes: { alignment: "left" } }, { label: "单位", fieldName: "BoxPiece", hideDefaultActions: true, cellAttributes: { alignment: "left" } } ]; //经销商库存上下限col @track colm4 = [ { label: "产品型号", fieldName: "prodName", hideDefaultActions: true }, { label: "库存下限", fieldName: "limitLow", hideDefaultActions: true, cellAttributes: { alignment: "left" } }, { label: "库存上限", fieldName: "limitUp", hideDefaultActions: true, cellAttributes: { alignment: "left" } } ]; @track columns = [ { label: "消耗品名称", fieldName: "Name__c", type: "Name", sortable: true, hideDefaultActions: true, wrapText: true, cellAttributes: { alignment: "left" } }, { label: "规格", fieldName: "packing_list", cellAttributes: { alignment: "right" }, initialWidth: 50, wrapText: true, hideDefaultActions: true }, { label: "第三分类", fieldName: "Category3__c", initialWidth: 85, cellAttributes: { alignment: "left" }, hideDefaultActions: true, wrapText: true }, { label: "第四分类", fieldName: "Category4__c", cellAttributes: { alignment: "left" }, initialWidth: 85, hideDefaultActions: true, wrapText: true }, { label: "第五分类", fieldName: "Category5__c", cellAttributes: { alignment: "left" }, initialWidth: 85, hideDefaultActions: true, wrapText: true, sortable: true }, { label: "CFDA状态", fieldName: "SFDA_Status__c", cellAttributes: { alignment: "left" }, initialWidth: 80, hideDefaultActions: true }, { label: "注册证编码号", fieldName: "approbation_No", cellAttributes: { alignment: "left" }, wrapText: true, initialWidth: 155, hideDefaultActions: true }, { label: "注册证效期", fieldName: "expiration_Date", cellAttributes: { alignment: "left" }, wrapText: true, hideDefaultActions: true, initialWidth: 100 }, { label: "产品数量下限", fieldName: "lowerlimit", cellAttributes: { alignment: "right" }, wrapText: true, hideDefaultActions: true, initialWidth: 100 }, { label: "使用期限", fieldName: "guaranteeperiod", cellAttributes: { alignment: "left" }, hideDefaultActions: true, initialWidth: 95 }, { label: "有效期内库存", type: "customInventoryColor", cellAttributes: { alignment: "right" }, typeAttributes: { value: { fieldName: "limitCount" }, upperlimit: { fieldName: "upperlimit" }, lowerlimit: { fieldName: "lowerlimit" }, boxPrice: { fieldName: "BoxPiece" } }, hideDefaultActions: true, initialWidth: 95 }, { label: "过期库存", fieldName: "overlimitCount", hideDefaultActions: true, cellAttributes: { alignment: "right" }, initialWidth: 75 }, { label: "单位", fieldName: "BoxPiece", cellAttributes: { alignment: "left" }, initialWidth: 50, wrapText: true, hideDefaultActions: true } ]; renderedCallback() { if (!this.stylesLoaded) { Promise.all([loadStyle(this, WrappedHeaderTable)]) .then(() => { console.log("Custom styles loaded"); this.stylesLoaded = true; }) .catch((error) => { console.error("Error loading custom styles"); }); } } connectedCallback() { this.loader = true; this.init(); } init() { this.showSpinner = true; initPage({ pageSizeLWC: this.pageSize, pageTokenLWC: this.currentPageToken }) .then((result) => { this.isNoteStay = result.isNoteStay; console.log("isNoteStay:" + result.isNoteStay); if (result.result == "Success") { //分页start this.nextPageToken = result.paginatedAccounts.nextPageToken; this.totalRecords = result.paginatedAccounts.totalRecords; this.recordStart = result.paginatedAccounts.recordStart; this.recordEnd = result.paginatedAccounts.recordEnd; this.totalPages = Math.ceil( result.paginatedAccounts.totalRecords / this.pageSize ); console.log("this.totalPages = " + this.totalPages); this.paginationVisibility = this.totalPages > 1 ? true : false; console.log("this.sortDirection = " + this.sortDirection); this.loader = false; //分页end this.title = result.title; this.totalNum = result.totalNum; this.orderNumberArrived = result.orderNumberArrived; this.deliveryDetailCount = result.deliveryDetailCount; this.orderNumberNotarrive = result.orderNumberNotarrive; this.moreThanSevenDays = result.moreThanSevenDays; this.raesList = result.raesList; this.raesList.push({ Id: "1", Name: "待操作入库订单汇总", Total_num__c: this.totalNum, OrderNumber_arrived__c: this.orderNumberArrived, Delivery_detail_count__c: this.deliveryDetailCount, OrderNumber_notarrive__c: this.orderNumberNotarrive, More_than_seven_days__c: this.moreThanSevenDays }); this.column = result.column; this.accountInfo = result.accountInfo; this.accountId = result.accountInfo.Id; this.pageRecords = result.pageRecords; this.overlimitdateorderdetails = result.overlimitdateorderdetails; this.over_view = result.over_view; this.overlimit = result.overlimit; this.hasHos = result.hasHos; this.product_Limit = result.product_Limit; console.log("result==>" + JSON.stringify(result)); for (var i in this.pageRecords) { this.pageRecords[i]["Name__c"] = this.pageRecords[i].Prod.Name__c; this.pageRecords[i]["Category3__c"] = this.pageRecords[i].Prod.Category3__c; this.pageRecords[i]["Category4__c"] = this.pageRecords[i].Prod.Category3__c; this.pageRecords[i]["Category5__c"] = this.pageRecords[i].Prod.Category3__c; this.pageRecords[i]["SFDA_Status__c"] = this.pageRecords[i].Prod.SFDA_Status__c; } //hasHos = true 医院特价 if (this.hasHos) { let object1 = { label: "医院特价", fieldName: "hospitalSpecialOffer", hideDefaultActions: true, type: "boolean", cellAttributes: { alignment: "left" }, initialWidth: 75 }; this.columns.push(object1); console.log(" this.columns" + this.columns); for (var j in this.pageRecords) { this.pageRecords[j]["Name__c"] = this.pageRecords[j].Prod.Name__c; this.pageRecords[j]["Category3__c"] = this.pageRecords[j].Prod.Category3__c; this.pageRecords[j]["Category4__c"] = this.pageRecords[j].Prod.Category3__c; this.pageRecords[j]["Category5__c"] = this.pageRecords[j].Prod.Category3__c; this.pageRecords[j]["SFDA_Status__c"] = this.pageRecords[j].Prod.SFDA_Status__c; this.pageRecords[j]["hospitalSpecialOffer__c"] = this.pageRecords[j].hospitalSpecialOffer; } } this.showTable = true; if (this.product_Limit != null && this.product_Limit != "") { var records = this.product_Limit.split(","); for (var i in records) { var parms = records[i].split("|"); var record = new Object(); record["prodName"] = parms[0]; record["limitLow"] = parms[1]; record["limitUp"] = parms[2]; this.productLimitRecords.push(record); } } // this.productLimitRecords = records; console.log( "productLimitRecords:" + JSON.stringify(this.productLimitRecords) ); console.log("product_Limit:" + this.product_Limit); this.consumableorderdetailsRecordsview = result.consumableorderdetailsRecordsview; //add by WangXueqin 2023/05/05 this.userPro_Type = result.userPro_Type; console.log("this.accountId:" + this.accountId); console.log("this.accountInfo:" + JSON.stringify(this.accountInfo)); this.showSpinner = false; this.showPage = true; // this.showMyToast('初始化页面成功', '', 'success'); } else { this.showPage = true; this.showSpinner = false; console.log("Error:" + result.errorMsg); this.showMyToast("初始化页面失败", result.errorMsg, "error"); } }) .catch((error) => { this.showSpinner = false; console.log("Error:" + error); this.showMyToast("初始化页面失败", JSON.stringify(error), "error"); }); } //点击链接 clickLick(event) { var outputValue = event.detail.data.value; var outputType = event.detail.data.type; var recordId = event.detail.data.recordId; console.log("click:" + outputValue + "---" + outputType + "---" + recordId); if (outputType == "Title") { const config = { type: "standard__webPage", attributes: { url: "/lexarrivegoods?ESetId=" + recordId } }; this[NavigationMixin.Navigate](config); } else if (outputType == "TotalNum") { this.popTitle = "所有产品一览"; initTotalNum({ ordId: recordId, type: "" }).then((result) => { if (result.result == "Success") { this.recordList = result.recordList; console.log("data:" + JSON.stringify(this.recordList)); this.showPop = true; } else { this.showMyToast( "加载所有产品一览页面失败", result.errorMsg, "error" ); } }); } else if (outputType == "ArrDet") { if (recordId == "1") { this.popTitle = "所有已到货产品一览"; initArrDetAll({ type: "" }).then((result) => { if (result.result == "Success") { this.recordList = result.recordList; console.log("data:" + JSON.stringify(this.recordList)); this.showPop = true; } else { this.showMyToast( "加载所有已到货产品一览页面失败", result.errorMsg, "error" ); } }); } else { this.popTitle = "已到货产品一览"; initArrDet({ orderId: recordId }).then((result) => { if (result.result == "Success") { this.recordList = result.recordList; console.log("data:" + JSON.stringify(this.recordList)); this.showPop = true; } else { this.showMyToast( "加载已到货产品一览页面失败", result.errorMsg, "error" ); } }); } } else if (outputType == "DeliveryDet") { if (recordId == "1") { this.popTitle = "所有已发货还没到货产品一览"; initDeliveryDetAll({ type: "" }).then((result) => { if (result.result == "Success") { this.recordList = result.recordList; console.log("data:" + JSON.stringify(this.recordList)); this.showPop = true; } else { this.showMyToast( "加载所有已发货还没到货产品一览页面失败", result.errorMsg, "error" ); } }); } else { this.popTitle = "未到货产品一览"; initDeliveryDet({ orderId: recordId }).then((result) => { if (result.result == "Success") { this.recordList = result.recordList; console.log("data:" + JSON.stringify(this.recordList)); this.showPop = true; } else { this.showMyToast( "加载未到货产品一览页面失败", result.errorMsg, "error" ); } }); } } else if (outputType == "NotArrDet") { if (recordId == "1") { this.popTitle = "所有还没发货产品一览"; initNotArrDetAll({ type: "" }).then((result) => { if (result.result == "Success") { this.recordList = result.recordList; console.log("data:" + JSON.stringify(this.recordList)); this.showPop = true; } else { this.showMyToast( "加载所有还没发货产品一览页面失败", result.errorMsg, "error" ); } }); } else { this.popTitle = "还没发货数量"; initNotArrDet({ orderId: recordId }).then((result) => { if (result.result == "Success") { this.recordList = result.recordList; console.log("data:" + JSON.stringify(this.recordList)); this.showPop = true; } else { this.showMyToast( "加载还没发货数量页面失败", result.errorMsg, "error" ); } }); } } else if (outputType == "MoreThan7") { if (recordId == "1") { this.popTitle = "所有发货七天还未到货数"; initMoreThan7All({ type: "" }).then((result) => { if (result.result == "Success") { this.recordList = result.recordList; console.log("data:" + JSON.stringify(this.recordList)); this.showPop = true; } else { this.showMyToast( "加载所有发货七天还未到货数页面失败", result.errorMsg, "error" ); } }); } else { this.popTitle = "发货七天还未到货数"; initMoreThan7({ orderId: recordId }).then((result) => { if (result.result == "Success") { this.recordList = result.recordList; console.log("data:" + JSON.stringify(this.recordList)); this.showPop = true; } else { this.showMyToast( "加载发货七天还未到货数页面失败", result.errorMsg, "error" ); } }); } } } //关闭弹窗 closePop() { this.showPop = false; } editProductLimit(event) { //add by Wang Xueqin 2023/05/05 //let url = // '/LexProductLimitEdit?accountid=' + // this.accountId + // '&userPro_Type=' + // this.userPro_Type; let url = "/lexproductlimitedit?accountid=" + this.accountId + "&userPro_Type=" + this.userPro_Type; const config = { type: "standard__webPage", attributes: { url: url } }; this[NavigationMixin.Navigate](config); } //新建消耗品订单 newOrder() { this[NavigationMixin.Navigate]({ type: "standard__objectPage", attributes: { objectApiName: "Consumable_order__c", actionName: "new" }, state: { useRecordTypeCheck: 1 } }); } showMyToast(title, message, variant) { console.log("show custom message"); var iconName = ""; var content = ""; if (variant == "success") { iconName = "utility:check"; } else { iconName = "utility:error"; } if (message != "") { content = "

" + title + "

" + message + "
"; } else { content = "

" + title + "

"; } this.template .querySelector("c-common-toast") .showToast(variant, content, iconName, 10000); // var mode; // if(this.isNoteStay){ // mode ='sticky'; // }else{ // mode = 'dismissable'; // } // const evt = new ShowToastEvent({ // title: title, // message: message, // variant: variant, // mode: mode // }); // this.dispatchEvent(evt); } //排序 sortByMethod(field, reverse, primer) { const key = primer ? function (x) { return primer(x[field]); } : function (x) { return x[field]; }; return function (a, b) { a = key(a); b = key(b); return reverse * ((a > b) - (b > a)); }; } onHandleSort(event) { console.log("Sort"); this.sortBy = event.detail.fieldName; this.sortDirection = event.detail.sortDirection; this.currentPageToken = 0; console.log("this.sortBy = " + this.sortBy); console.log("this.sortDirection = " + this.sortDirection); const { fieldName: sortedBy, sortDirection } = event.detail; const cloneData = [...this.pageRecords]; cloneData.sort( this.sortByMethod(sortedBy, sortDirection === "asc" ? 1 : -1) ); this.pageRecords = cloneData; this.sortDirection = sortDirection; this.sortedBy = sortedBy; } //分页 handlePaginatorChange(event) { this.recordsToDisplay = event.detail.recordsToDisplay; this.preSelected = event.detail.preSelected; if (this.recordsToDisplay && this.recordsToDisplay > 0) { this.rowNumberOffset = this.recordsToDisplay[0].rowNumber - 1; } else { this.rowNumberOffset = 0; } } handlePrevious() { this.currentPageToken = Number(this.currentPageToken) - Number(this.pageSize); this.init(); } handleNext() { this.currentPageToken = Number(this.currentPageToken) + Number(this.pageSize); this.init(); } handleFirst() { this.currentPageToken = 0; this.init(); } handleLast() { this.currentPageToken = this.totalPages > 1 ? (this.totalPages - 1) * this.pageSize : 0; this.init(); } handlePageschange(event) { console.log(event.detail); this.pageSize = event.detail; this.currentPageToken = 0; this.init(); } get previousButtonDisabled() { return this.currentPageToken === 0; } get nextButtonDisabled() { return this.nextPageToken === undefined; } }