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 =
|
'<h2><strong>' +
|
title +
|
'<strong/></h2><h5>' +
|
message +
|
'</h5>';
|
} else {
|
content = '<h2><strong>' + title + '<strong/></h2>';
|
}
|
this.template
|
.querySelector('c-common-toast')
|
.showToast(variant, content, iconName, 10000);
|
}
|
}
|