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 }, { label: 'SAP合同号', fieldName: 'ContractNo__c', hideDefaultActions: true}, { 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: 110 }, { label: '待系统操作入库数量', type: "customOutputGood", typeAttributes: { outputValue: { fieldName: "Delivery_detail_count__c" }, type: 'DeliveryDet', recordId: { fieldName: "Id" } }, hideDefaultActions: true, initialWidth: 180 }, { 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: 180 }, { label: '最新发货日期', fieldName: 'Shipment_date__c', hideDefaultActions: true , initialWidth: 140}, { label: '首次发货日期', fieldName: 'First_Delivery__c', hideDefaultActions: true , initialWidth: 140} ]; @track colms2 = [ { label: '产品型号', fieldName: 'prodModel', hideDefaultActions: true }, { label: '数量', fieldName: 'recordCount', hideDefaultActions: true ,initialWidth: 100} ]; //使用期限小于一年的产品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; 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 = '