import { LightningElement, api, track, wire } from 'lwc'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; import init from '@salesforce/apex/LexOutboundorderImportController.init'; import importCSVFile from '@salesforce/apex/LexOutboundorderImportController.importCSVFile'; import dataImport from '@salesforce/apex/LexOutboundorderImportController.dataImport'; //table css import { loadStyle } from 'lightning/platformResourceLoader'; import WrappedHeaderTable from '@salesforce/resourceUrl/lexdatatable'; const columns = [ { label: '出库单名称', fieldName: 'orderName', hideDefaultActions: true, initialWidth: 200, wrapText: true }, { label: '目的', fieldName: 'orderSummonsForDirction', hideDefaultActions: true, wrapText: true }, { label: '医院编码', fieldName: 'hospitalCode', hideDefaultActions: true, wrapText: true }, { label: '医院名称', fieldName: 'hospitalName', hideDefaultActions: true, wrapText: true, initialWidth: 300 }, { label: '科室', fieldName: 'orderOrderForCustomerText', hideDefaultActions: true, wrapText: true }, { label: '二级经销商', fieldName: 'agencyName', hideDefaultActions: true, wrapText: true }, { label: '出库/销售日期', fieldName: 'orderOutboundDate', hideDefaultActions: true, wrapText: true } ]; export default class LexOutboundorderImport extends LightningElement { @track isShowSpinner = true; //文件上传 @track showLoadingSpinner = false; @track UploadFile = 'Upload File'; @track fileName = ''; @track fileData = []; @track fileColumns = [ { label: '标题', fieldName: 'url', type: 'url', typeAttributes: { label: { fieldName: 'Title' }, target: '_blank' }, hideDefaultActions: true }, { label: '创建人', fieldName: 'CreatedByName', hideDefaultActions: true } ]; filesUploaded = []; fileContents; fileReader; content; MAX_FILE_SIZE = 1500000; get acceptedType() { return ['.csv']; } //列表 columns = columns; @track data = []; //数据 @track accountid = ''; @track userWorkLocation = ''; @track agencyProType = ''; @track accountName = ''; @track sqlagencyProType = ''; @track csvRecordStr = []; @track saveFLGbln = false; @track secondAgencyMap = {}; @track hospitalSysMap = {}; stylesLoaded = false; 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() { init() .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success') { this.accountid = r.entity.accountid; this.userWorkLocation = r.entity.userWorkLocation; this.agencyProType = r.entity.agencyProType; console.log('this.agencyProType = ' + this.agencyProType); this.accountName = r.entity.accountName; this.sqlagencyProType = r.entity.sqlagencyProType; this.isShowSpinner = false; } else { console.log('r = ' + JSON.stringify(r)); this.showMyToast('初始化失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + JSON.stringify(error)); this.showMyToast('错误', '初始化失败', 'Error'); }); } getCsvFile() { this.isShowSpinner = true; if (this.filesUploaded.length > 0) { this.file = this.filesUploaded[0]; if (this.file.size > this.MAX_FILE_SIZE) { window.console.log('文件过大'); this.isShowSpinner = false; return; } this.fileReader = new FileReader(); this.fileReader.onloadend = () => { this.fileContents = this.fileReader.result; let base64 = 'base64,'; this.content = this.fileContents.indexOf(base64) + base64.length; this.fileContents = this.fileContents.substring(this.content); console.log('getCsvFile'); this.importCSVFile(); }; this.fileReader.readAsDataURL(this.file); } else { this.fileName = '选择一个csv文件上传'; this.showMyToast('上传失败', '选择一个csv文件上传', 'Error'); } } importCSVFile() { console.log('importCSVFile'); console.log('this.sqlagencyProType = ' + this.sqlagencyProType); console.log('this.userWorkLocation = ' + this.userWorkLocation); console.log('this.accountName = ' + this.accountName); console.log( 'encodeURIComponent(this.fileContents) = ' + encodeURIComponent(this.fileContents) ); importCSVFile({ base64DataLwc: encodeURIComponent(this.fileContents), sqlagencyProTypeLwc: this.sqlagencyProType, userWorkLocationLwc: this.userWorkLocation, accountNameLwc: this.accountName }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success' && r.msg == '') { console.log('importCSVFile success'); this.saveFLGbln = r.entity.saveFLGbln; this.csvRecordStr = r.entity.csvRecordStr; this.secondAgencyMap = r.entity.secondAgencyMap; this.hospitalSysMap = r.entity.hospitalSysMap; this.data = r.entity.orderRecords; for (var i in this.data) { this.data[i]['orderName'] = this.data[i].order.Name; this.data[i]['orderSummonsForDirction'] = this.data[i].order.SummonsForDirction__c; this.data[i]['orderOrderForCustomerText'] = this.data[i].order.Order_ForCustomerText__c; this.data[i]['orderOutboundDate'] = this.data[i].order.Outbound_Date__c; } this.isShowSpinner = false; } else if (r.msg != '') { console.log('r.msg = ' + JSON.stringify(r.msg)); this.saveFLGbln = r.entity.saveFLGbln; this.data = r.entity.orderRecords; for (var i in this.data) { this.data[i]['orderName'] = this.data[i].order.Name; this.data[i]['orderSummonsForDirction'] = this.data[i].order.SummonsForDirction__c; this.data[i]['orderOrderForCustomerText'] = this.data[i].order.Order_ForCustomerText__c; this.data[i]['orderOutboundDate'] = this.data[i].order.Outbound_Date__c; } this.showMyToast('导入失败', r.msg, 'Error'); } else { console.log('r.msg = ' + JSON.stringify(r.msg)); this.showMyToast('导入失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + JSON.stringify(error.message)); this.showMyToast('导入错误', '导入失败', 'Error'); }); } dataImport() { this.isShowSpinner = true; let cloneData = this.data; for (var i in cloneData) { delete cloneData[i].orderName; delete cloneData[i].orderSummonsForDirction; delete cloneData[i].orderOrderForCustomerText; delete cloneData[i].orderOutboundDate; } console.log('this.agencyProType = ' + this.agencyProType); dataImport({ csvRecordStrLwc: this.csvRecordStr, orderRecordsLwc: JSON.stringify(cloneData), sqlagencyProTypeLwc: this.sqlagencyProType, userWorkLocationLwc: this.userWorkLocation, accountNameLwc: this.accountName, accountidLwc: this.accountid, agencyProTypeLwc: this.agencyProType, secondAgencyMapLwc: this.secondAgencyMap, hospitalSysMapLwc: this.hospitalSysMap }) .then((r) => { r = JSON.parse(JSON.stringify(r)); console.log('r = ' + JSON.stringify(r)); if (r.status == 'Success' && r.msg == '') { this.saveFLGbln = true; console.log('dataImport success'); this.showMyToast('成功', '保存成功', 'Success'); } else if (r.msg != '') { console.log('r.msg = ' + JSON.stringify(r.msg)); this.showMyToast('保存失败', r.msg, 'Error'); } else { console.log('r.msg = ' + JSON.stringify(r.msg)); this.showMyToast('保存失败', r.msg, 'Error'); } }) .catch((error) => { console.log('error = ' + JSON.stringify(error.message)); this.showMyToast('错误', '保存失败', 'Error'); }); } handleFilesChange(event) { console.log('handleFilesChange'); if (event.target.files.length > 0) { this.filesUploaded = event.target.files; this.fileName = event.target.files[0].name; } } showMyToast(title, message, variant) { this.isShowSpinner = false; console.log('show custom message'); var iconName = ''; var content = ''; if (variant.toLowerCase() == '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); } }