其实上传和下载功能是差不多的,只是传参些微有些不同,效果如图
上代码
<!-- 导入数据 -->
<el-dialog
title="进销数据导入"
:visible.sync="ifShowImport"
width="35%"
z-index="999"
:before-close="handleClose"
>
<div class="upload_box">
<el-button
size="medium"
icon="el-icon-download"
@click="handelDownTemplate"
>下载导入模板</el-button
>
<el-button
size="medium"
icon="el-icon-download"
@click="showUpload = true"
>已有模板,直接导入</el-button
>
</div>
<el-upload
v-if="showUpload"
class="upload-demo"
drag
action="*"
:limit="1"
accept=".xlsx, .xls"
:http-request="handleExcel"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传 xls、xlsx 文件</div>
</el-upload>
<span slot="footer" class="dialog-footer">
<el-button @click="ifShowImport = false">取 消</el-button>
<el-button type="primary" @click="handleClose">确 定</el-button>
</span>
</el-dialog>
方法部分
//导入表格
handleExcel(e) {
let fd = new FormData();
fd.append("file", e.file);
// importExcel这个方法普通封装就行,不用定义 responseType: "blob",
importExcel(fd)
.then((res) => {
if (res.code == 200) {
this.$message.success(res.msg);
this.getTableData(); // 导入表格之后可以获取导入的数据渲染到页面,此处的方法是获取导入的数据
} else {
this.$message.error(res.msg);
}
})
.catch((err) => {
this.$message.error(err);
});
},