<input className="btn-upload-style" type="file" name="xlfile" accept=".xls, .xlsx" onChange={this.onFileChange}/>
<Button type="primary" className="save-item" disabled={this.state.disableSaveBtnStatus} onClick={this.saveItems}>
导入商品
</Button>
onFileChange = (event) => {
this.state.list = [];
if (!event.target.files) {
return;
}
let file = event.target.files[0];
let reader = new FileReader();
reader.onload = this.excelOnLoad;
reader.readAsBinaryString(file);
}
excelOnLoad = (e) => {
let wb = XLSX.read(e.target.result, {type: 'binary'});
let _list = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
if (_list.length > 1000) {
Toast.error('Excel表格数据不得超过1000行!');
this.setState({list:[], disableSaveBtnStatus: true });
return;
}
_list = JSON.stringify(_list);
var reg1 = new RegExp('商品ID' ,"g");
var newstr1 = _list.replace( reg1 , 'itemId');
_list = JSON.parse(newstr1);
let itemMap = {}
_list.forEach(it => {
if (it.itemId) {
itemMap[it.itemId] = it;
}
})
const list = Object.values(itemMap);
this.setState({list, disableSaveBtnStatus: false });
}
saveItems = () => {
const {list} = this.state;
const {lmShopId, lmShopIdDefault, addItems,invoiceType,value} = this.props;
let syncToSelect=undefined
if(value.length>0){
syncToSelect=true
}else{
syncToSelect=false
}
if (lmShopId && list) {
addItems({lmShopId, list,invoiceType,syncToSelect}, this.addResponse);
} else {
this.addResponseFailed();
}
}
addResponse = () => {
Toast.success('上传商品成功。');
this.setState({
disableSaveBtnStatus: true,
})
}
addResponseFailed = () => {
Toast.error('上传失败!');
this.setState({
disableSaveBtnStatus: true,
})
}