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"; const columns = [ { label: "出库单名称", fieldName: "orderName", hideDefaultActions: true, }, { label: "目的", fieldName: "orderSummonsForDirction", hideDefaultActions: true, }, { label: "医院编码", fieldName: "hospitalCode", hideDefaultActions: true, }, { label: "医院名称", fieldName: "hospitalName", hideDefaultActions: true, }, { label: "科室", fieldName: "orderOrderForCustomerText", hideDefaultActions: true, }, { label: "二级经销商", fieldName: "agencyName", hideDefaultActions: true, }, { label: "出库/销售日期", fieldName: "orderOutboundDate", hideDefaultActions: 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; 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; this.accountName = r.entity.accountName; this.sqlagencyProType = r.entity.sqlagencyProType; this.isShowSpinner = false; } else { console.log("r = " + JSON.stringify(r)); this.showToast("Error", r.msg); } }) .catch((error) => { console.log("error = " + JSON.stringify(error)); this.showToast("Error", error.message); }); } 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.showToast("Error", '选择一个csv文件上传'); } } importCSVFile() { console.log('importCSVFile') importCSVFile({ base64Data: encodeURIComponent(this.fileContents), sqlagencyProType: this.sqlagencyProType, userWorkLocation: this.userWorkLocation, accountName: 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.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.showToast("Error", r.msg); }else{ console.log("r.msg = " + JSON.stringify(r.msg)); this.showToast("Error", r.msg); } }) .catch((error) => { console.log("error = " + JSON.stringify(error.message)); this.showToast("Error", error.message); }); } 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; } dataImport({ csvRecordStr: this.csvRecordStr, orderRecords: cloneData, sqlagencyProType: this.sqlagencyProType, userWorkLocation: this.userWorkLocation, accountName : this.accountName }).then((r) => { r = JSON.parse(JSON.stringify(r)); console.log("r = " + JSON.stringify(r)); if (r.status == "Success" && r.msg == "") { console.log("dataImport success"); this.showToast("Success", '保存成功'); }else if(r.msg != ""){ console.log("r.msg = " + JSON.stringify(r.msg)); this.showToast("Error", r.msg); }else{ console.log("r.msg = " + JSON.stringify(r.msg)); this.showToast("Error", r.msg); } }) .catch((error) => { console.log("error = " + JSON.stringify(error.message)); this.showToast("Error", error.message); }); } handleFilesChange(event) { console.log("handleFilesChange"); if (event.target.files.length > 0) { this.filesUploaded = event.target.files; this.fileName = event.target.files[0].name; } } showToast(type, msg) { this.isShowSpinner = false; const event = new ShowToastEvent({ title: type, variant: type, message: msg, }); this.dispatchEvent(event); } }