import { LightningElement, wire, api, track } from 'lwc'; import oninit from '@salesforce/apex/LexInventoryViewController.init'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import searchOrder from '@salesforce/apex/LexInventoryViewController.searchConsumableorderdetails'; import categoryAllload from '@salesforce/apex/LexInventoryViewController.categoryAllload'; import { NavigationMixin } from 'lightning/navigation'; //table css import { loadStyle } from 'lightning/platformResourceLoader'; import WrappedHeaderTable from '@salesforce/resourceUrl/lexdatatable'; export default class LexinventoryViewLWC extends NavigationMixin( LightningElement ) { //分页start @track sortBy = ''; //@track sortDirection = "asc"; @track pageSize = 200; error; records; currentPageToken = 0; nextPageToken = this.pageSize; @track totalRecords = 0; @track loader = false; @track pageNumber = 1; @track paginationVisibility = false; @track totalPages = 1; pageSizeOptions = [100, 200, 300]; @track recordStart = 0; @track recordEnd = 0; //end @track data = []; @track message = ''; @track Name; @track CategoryThree; @track category3Options = []; @track CategoryFour; @track category4Options = []; @track CategoryFive; @track category5Options = []; @track orderDetZaikuList = []; @track accountName; @track agencyProType; @track userWorkLocation; @track value = ''; @track showTable = false; @track hidecheckboxcolumn = true; @track check = false; @track productkucun; //加载 @track showSpinner = false; @track showSpinners = false; //医院特价 @track hasHos = false; //表头样式 stylesLoaded = false; @track columns = [ { label: '消耗品名称', fieldName: 'Name__c', type: 'Name', sortable: true, hideDefaultActions: true, // initialWidth: 200, wrapText: true, cellAttributes: { alignment: 'left' } }, { label: '第三分类', fieldName: 'Category3__c', initialWidth: 102, cellAttributes: { alignment: 'left' }, hideDefaultActions: true, sortable: true, wrapText: true }, { label: '第四分类', fieldName: 'Category4__c', cellAttributes: { alignment: 'left' }, initialWidth: 102, hideDefaultActions: true, wrapText: true, sortable: true }, { label: '第五分类', fieldName: 'Category5__c', cellAttributes: { alignment: 'left' }, initialWidth: 102, hideDefaultActions: true, wrapText: true, sortable: true }, { label: '规格', fieldName: 'packing_list', cellAttributes: { alignment: 'right' }, initialWidth: 50, wrapText: true, hideDefaultActions: true }, { label: '单位', fieldName: 'BoxPiece', cellAttributes: { alignment: 'left' }, initialWidth: 50, wrapText: true, hideDefaultActions: true }, { label: '注册证编码号', fieldName: 'approbation_No', cellAttributes: { alignment: 'left' }, wrapText: true, initialWidth: 104, hideDefaultActions: true }, { label: '注册有效期', fieldName: 'expiration_Date', cellAttributes: { alignment: 'left' }, wrapText: true, hideDefaultActions: true, initialWidth: 95 }, { label: 'CFDA状态', fieldName: 'SFDA_Status__c', cellAttributes: { alignment: 'left' }, initialWidth: 84, wrapText: true, hideDefaultActions: true }, { label: '使用期限', fieldName: 'guaranteeperiod', cellAttributes: { alignment: 'left' }, hideDefaultActions: true, initialWidth: 95 }, { label: '有效期内库存', type: 'customInventoryColor', fieldName: 'limitCount', sortable: true, cellAttributes: { alignment: 'right' }, typeAttributes: { value: { fieldName: 'limitCount' }, upperlimit: { fieldName: 'upperlimit' }, lowerlimit: { fieldName: 'lowerlimit' }, boxPrice: { fieldName: 'BoxPiece' } }, hideDefaultActions: true, initialWidth: 110 }, { label: '过期库存', fieldName: 'overlimitCount', hideDefaultActions: true, cellAttributes: { alignment: 'right' }, initialWidth: 78 } ]; defaultSortDirection = 'asc'; sortDirection = 'asc'; sortedBy; 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; oninit({ pageSizeLWC: this.pageSize, pageTokenLWC: this.currentPageToken, sortFieldLWC: this.sortBy, sortOrderLWC: this.sortDirection }) .then((result) => { result = JSON.parse(JSON.stringify(result)); console.log( 'result.pageRecords = ' + JSON.stringify(result.entity.pageRecords) ); console.log( 'result.consumableorderdetailsRecords = ' + JSON.stringify( result.entity.consumableorderdetailsRecords ) ); console.log('result.status = ' + result.status); console.log('result = ' + JSON.stringify(result)); console.log('result 1= ' + JSON.stringify(result.entity)); console.log( 'result 2= ' + JSON.stringify(result.entity.pageRecords) ); if (result.status == 'Success') { console.log( 'result.entity.paginatedAccounts = ' + JSON.stringify(result.entity.paginatedAccounts) ); this.nextPageToken = result.entity.paginatedAccounts.nextPageToken; this.totalRecords = result.entity.paginatedAccounts.totalRecords; this.recordStart = result.entity.paginatedAccounts.recordStart; this.recordEnd = result.entity.paginatedAccounts.recordEnd; this.totalPages = Math.ceil( result.entity.paginatedAccounts.totalRecords / this.pageSize ); console.log('this.totalPages = ' + this.totalPages); this.paginationVisibility = this.totalPages > 1 ? true : false; this.loader = false; this.data = result.entity.pageRecords; this.productkucun = result.entity.productkucun; for (var i in this.data) { this.data[i]['Name__c'] = this.data[i].Prod.Name__c; this.data[i]['Category3__c'] = this.data[i].Prod.Category3__c; this.data[i]['Category4__c'] = this.data[i].Prod.Category4__c; this.data[i]['Category5__c'] = this.data[i].Prod.Category5__c; this.data[i]['SFDA_Status__c'] = this.data[i].Prod.SFDA_Status__c; } this.showTable = true; this.orderDetZaikuList = result.entity.orderDetZaikuList; this.accountName = result.entity.accountName; this.agencyProType = result.entity.agencyProType; this.userWorkLocation = result.entity.userWorkLocation; let option1ValueTemp = []; for (var key in result.entity.categoryOptionMap) { let object = {}; object['label'] = result.entity.categoryOptionMap[key]; object['value'] = key; option1ValueTemp.push(object); } this.category3Options = option1ValueTemp; console.log( ' this.optionscatone===>' + JSON.stringify(this.optionscatone) ); let option2ValueTemp = []; for (var key in result.entity.category4OptionMap) { let object = {}; object['label'] = result.entity.category4OptionMap[key]; object['value'] = key; option2ValueTemp.push(object); } this.category4Options = option2ValueTemp; let option3ValueTemp = []; for (var key in result.entity.category5OptionMap) { let object = {}; object['label'] = result.entity.category5OptionMap[key]; object['value'] = key; option3ValueTemp.push(object); } this.category5Options = option3ValueTemp; this.hasHos = result.entity.hasHos; console.log('this.hasHos' + this.hasHos); //颜色标记 //hasHos = true 医院特价 if (this.hasHos) { let object1 = { label: '医院特价', fieldName: 'hospitalSpecialOffer__c', hideDefaultActions: true, type: 'boolean', cellAttributes: { alignment: 'left' }, initialWidth: 80 }; this.columns.push(object1); console.log(' this.columns' + this.columns); for (var j in this.data) { this.data[j]['Name__c'] = this.data[j].Prod.Name__c; this.data[j]['Category3__c'] = this.data[j].Prod.Category3__c; this.data[j]['Category4__c'] = this.data[j].Prod.Category4__c; this.data[j]['Category5__c'] = this.data[j].Prod.Category5__c; this.data[j]['SFDA_Status__c'] = this.data[j].Prod.SFDA_Status__c; this.data[j]['hospitalSpecialOffer__c'] = this.data[j].hospitalSpecialOffer; console.log( 'this.data[j].hospitalSpecialOffer__c' + this.data[j].hospitalSpecialOffer ); } } this.showSpinner = false; } else { // this.showToast("Error",'Error', result.msg); this.showMyToast('初始化失败', result.msg, 'error'); } }) .catch((error) => { this.loader = false; this.showSpinner = false; console.log('error = ' + JSON.stringify(error)); }); } handleChange(event) { let fieldName = event.target.getAttribute('data-field'); let value = event.detail.value; console.log('======>fieldName' + fieldName); console.log('======>value' + value); switch (fieldName) { case 'Name': this.Name = value; break; case 'CategoryThree': this.CategoryThree = value; break; case 'CategoryFour': this.CategoryFour = value; break; case 'CategoryFive': this.CategoryFive = value; break; default: console.log('no data'); } } dataChange(event) { let fieldName = event.target.getAttribute('data-field'); let value = event.detail.value; console.log('fieldName = ' + fieldName + ' value = ' + value); switch (fieldName) { case 'Name': this.Name = value; break; case 'CategoryThree': this.CategoryThree = value; //调用后台显示第四五分类 this.showAllCate(); if (this.CategoryThree == '') { this.CategoryFour = ''; this.CategoryFive = ''; } break; case 'CategoryFour': this.CategoryFour = value; //调用后台显示第五分类 this.showCate(); if (this.CategoryFour == '') { this.CategoryFive = ''; } break; case 'CategoryFive': this.CategoryFive = value; break; } } showAllCate() { categoryAllload({ category3LWC: this.CategoryThree, agencyProTypeLWC: this.agencyProType }) .then((result) => { result = JSON.parse(JSON.stringify(result)); console.log('result = ' + JSON.stringify(result)); if (result.status == 'Success') { this.category4Options = []; this.category5Options = []; //第4分类 for (var key in result.entity.category4OptionMap) { let object = {}; object['label'] = result.entity.category4OptionMap[key]; object['value'] = key; this.category4Options.push(object); } console.log( 'this.category4Options = ' + JSON.stringify(this.category4Options) ); //第5分类 for (var key in result.entity.category5OptionMap) { let object = {}; object['label'] = result.entity.category5OptionMap[key]; object['value'] = key; this.category5Options.push(object); } } else { console.log('result = ' + JSON.stringify(result)); this.showMyToast(result.msg, '', 'error'); } }) .catch((error) => { console.log('error' + JSON.stringify(error)); }); } searchOrderDetail() { this.showTable = false; this.showSpinner = true; searchOrder({ category1: this.Name, Category3: this.CategoryThree, Category4: this.CategoryFour, Category5: this.CategoryFive, orderDetZaikuListLWC: JSON.stringify(this.orderDetZaikuList), accountName: this.accountName, agencyProType: this.agencyProType, userWorkLocation: this.userWorkLocation, pageSizeLWC: this.pageSize, pageTokenLWC: this.currentPageToken, productkucunLWC: this.productkucun // sortFieldLWC: this.sortBy, // sortOrderLWC: this.sortDirection }) .then((result) => { result = JSON.parse(JSON.stringify(result)); if (result.status == 'Success') { this.nextPageToken = result.entity.paginatedAccounts.nextPageToken; this.totalRecords = result.entity.paginatedAccounts.totalRecords; this.recordStart = result.entity.paginatedAccounts.recordStart; this.recordEnd = result.entity.paginatedAccounts.recordEnd; this.totalPages = Math.ceil( result.entity.paginatedAccounts.totalRecords / this.pageSize ); console.log( 'result.entity.paginatedAccounts = ' + JSON.stringify(result.entity.paginatedAccounts) ); console.log('this.totalPages = ' + this.totalPages); this.paginationVisibility = this.totalPages > 1 ? true : false; console.log('this.sortDirection = ' + this.sortDirection); // this.showToast("Success",'搜索成功', result.msg); // this.showMyToast('搜索成功',result.msg,'success'); this.data = result.entity.pageRecords; console.log('搜索Data==>' + JSON.stringify(this.data)); for (var i in this.data) { this.data[i]['Name__c'] = this.data[i].Prod.Name__c; this.data[i]['Category3__c'] = this.data[i].Prod.Category3__c; this.data[i]['Category4__c'] = this.data[i].Prod.Category4__c; this.data[i]['Category5__c'] = this.data[i].Prod.Category5__c; this.data[i]['SFDA_Status__c'] = this.data[i].Prod.SFDA_Status__c; this.data[i]['hospitalSpecialOffer__c'] = this.data[i].hospitalSpecialOffer; this.data[i]['guaranteeperiod'] = this.data[i].guaranteeperiod; } this.data = [...this.data]; console.log('this.data = ' + JSON.stringify(this.data)); this.showTable = true; this.showSpinner = false; } else { this.nextPageToken = this.pageSize; this.totalRecords = 0; this.recordStart = 0; this.recordEnd = 0; this.totalPages = 0; // this.showToast("Error",'Error', result.msg); // this.showMyToast('搜索失败',result.msg,'error'); this.showSpinner = false; } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); this.showSpinner = false; }); } inventoryCount() { this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: '/lexinventory' } }); } handleExpired() { console.log('过期库存呢销存'); this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: '/lexoverduestock' } }); } removeBox() { this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: '/lexremovebox' } }); } cancelremoveBox() { this[NavigationMixin.Navigate]({ type: 'standard__webPage', attributes: { url: '/lexcancelremovebox' } }); } clearAll() { this.showSpinner = true; this.showTable = false; this.Name = ''; this.CategoryThree = ''; this.CategoryFour = ''; this.CategoryFive = ''; this.template.querySelectorAll('lightning-combobox').forEach((each) => { each.value = null; }); console.log(' this.CategoryThree' + this.CategoryThree); console.log('数据列表' + this.data); searchOrder({ category1: this.Name, Category3: this.CategoryThree, Category4: this.CategoryFour, Category5: this.CategoryFive, orderDetZaikuListLWC: JSON.stringify(this.orderDetZaikuList), accountName: this.accountName, agencyProType: this.agencyProType, userWorkLocation: this.userWorkLocation, pageSizeLWC: this.pageSize, pageTokenLWC: this.currentPageToken, productkucunLWC: this.productkucun }) .then((result) => { console.log('result搜索 = ' + JSON.stringify(result)); result = JSON.parse(JSON.stringify(result)); if (result.status == 'Success') { this.nextPageToken = result.entity.paginatedAccounts.nextPageToken; this.totalRecords = result.entity.paginatedAccounts.totalRecords; this.recordStart = result.entity.paginatedAccounts.recordStart; this.recordEnd = result.entity.paginatedAccounts.recordEnd; this.totalPages = Math.ceil( result.entity.paginatedAccounts.totalRecords / this.pageSize ); console.log('this.totalPages = ' + this.totalPages); this.paginationVisibility = this.totalPages > 1 ? true : false; console.log('this.sortDirection = ' + this.sortDirection); this.data = result.entity.pageRecords; for (var i in this.data) { this.data[i]['Name__c'] = this.data[i].Prod.Name__c; this.data[i]['Category3__c'] = this.data[i].Prod.Category3__c; this.data[i]['Category4__c'] = this.data[i].Prod.Category4__c; this.data[i]['Category5__c'] = this.data[i].Prod.Category5__c; this.data[i]['SFDA_Status__c'] = this.data[i].Prod.SFDA_Status__c; this.data[i]['guaranteeperiod'] = this.data[i].guaranteeperiod; } this.showSpinner = false; this.showTable = true; // this.showMyToast('搜索成功',result.msg,'success'); // this.showToast("Success",'搜索成功', result.msg); } else { // this.showToast("Error", 'Error',result.msg); // this.showMyToast('搜索失败',result.msg,'error'); this.showSpinner = false; } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); this.showSpinner = false; }); } 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); // if('limitCount' != this.sortBy) // this.searchOrderDetail(); // else{ // const { fieldName: sortedBy, sortDirection } = event.detail; // const cloneData = [...this.data]; // cloneData.sort(this.sortByMethod(sortedBy, sortDirection === 'asc' ? 1 : -1)); // this.data = cloneData; // this.sortDirection = sortDirection; // this.sortedBy = sortedBy; // } const { fieldName: sortedBy, sortDirection } = event.detail; const cloneData = [...this.data]; cloneData.sort( this.sortByMethod(sortedBy, sortDirection === 'asc' ? 1 : -1) ); this.data = 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.searchOrderDetail(); } handleNext() { this.currentPageToken = Number(this.currentPageToken) + Number(this.pageSize); this.searchOrderDetail(); } handleFirst() { this.currentPageToken = 0; this.searchOrderDetail(); } handleLast() { this.currentPageToken = this.totalPages > 1 ? (this.totalPages - 1) * this.pageSize : 0; this.searchOrderDetail(); } handlePageschange(event) { console.log(event.detail); this.pageSize = event.detail; this.currentPageToken = 0; this.searchOrderDetail(); } get previousButtonDisabled() { return this.currentPageToken === 0; } get nextButtonDisabled() { return this.nextPageToken === undefined; } 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 = '