<template>
|
<el-dialog
|
title="主题库分类导入"
|
:visible.sync="dialogVisible"
|
append-to-body
|
>
|
<Divider text="导入提示" left="30px"></Divider>
|
<ul>
|
<li>
|
1.红色字体表示必输项
|
</li>
|
<li>
|
2.分类的路径需要用#分隔
|
</li>
|
<li>
|
3.每次仅能最多导入10000条数据
|
</li>
|
</ul>
|
<Divider text="excel文件,选择文件后会自动上传" left="30px"></Divider>
|
<el-upload
|
accept=".xlsx, .xls"
|
action="/api/ubcs-code/codeClassify/importClassify"
|
:on-success="onSuccess"
|
:on-error="onError"
|
:headers="uploadHeaders"
|
:show-file-list="false"
|
:before-upload="beforeUpload"
|
:on-change="uploadChange"
|
class="upload-demo">
|
<el-button size="small" type="primary" style="margin: 15px 35px">浏览文件</el-button>
|
</el-upload>
|
<template #footer>
|
<el-button
|
type="primary"
|
size="small"
|
@click="downloadTemplateFun"
|
:loading="downloadLoading"
|
>下载导入模板</el-button
|
>
|
<el-button size="small" @click="dialogVisible = false">关闭</el-button>
|
</template>
|
</el-dialog>
|
</template>
|
|
<script>
|
import {downloadErrorFile,downloadBatchImportApplyTemplate} from '@/api/template/templateAttr'
|
import {getToken} from "@/util/auth";
|
import func from "@/util/func";
|
export default {
|
name: "ThemeImport",
|
props: {
|
visible: {
|
type: Boolean,
|
default: false,
|
},
|
codeClassifyOid: {
|
type: String,
|
default: "",
|
},
|
},
|
data(){
|
return{
|
flga:true,
|
pageLoading: null,
|
downloadLoading: false,
|
}
|
},
|
watch:{
|
visible:{
|
handler(newval,oldval){
|
console.log('newval',newval)
|
}
|
}
|
},
|
computed:{
|
uploadHeaders() {
|
return {
|
"Blade-Auth": "bearer " + getToken(),
|
};
|
},
|
dialogVisible: {
|
get() {
|
return this.visible;
|
},
|
set(val) {
|
this.$emit("update:visible", val);
|
},
|
},
|
},
|
methods:{
|
//文件上传前
|
async beforeUpload(file) {
|
const fileType = file.name.split(".").pop();
|
if (fileType !== "xlsx" && fileType !== "xls") {
|
// 上传格式不符合要求,提示错误信息并取消上传
|
this.$message.error("只允许上传xlsx、xls格式的文件");
|
return Promise.reject(false);
|
}
|
this.pageLoading = this.$loading({
|
lock: true,
|
text: "文件上传中",
|
spinner: "el-icon-loading",
|
background: "rgba(0, 0, 0, 0.7)",
|
});
|
return true;
|
},
|
// 文件上传成功
|
onSuccess(resbonse){
|
if (Object.keys(resbonse.data).length === 0) {
|
this.$message.success( "主题库分类导入成功!");
|
this.dialogVisible = false;
|
return;
|
}
|
if (resbonse.data.fileOid) {
|
const fileName = resbonse.data.filePath.split("/").pop();
|
this.$message.error("请下载错误信息文件进行查看!");
|
downloadErrorFile({ uuid: resbonse.data.fileOid }).then((res) => {
|
func.downloadFileByBlobHandler(res);
|
});
|
}
|
},
|
//点击下载模板
|
downloadTemplateFun(){
|
this.downloadLoading = true;
|
downloadBatchImportApplyTemplate({codeClassifyOid: this.codeClassifyOid}).then(res=>{
|
this.$utilFunc.downloadFileByBlob(res.data, "主题库分类模板.xls");
|
this.downloadLoading = false;
|
}).catch((res)=>{
|
this.$message.warning(res)
|
this.downloadLoading = false;
|
})
|
},
|
//文件上传失败
|
onError(res){
|
this.pageLoading.close();
|
},
|
//文件状态改变
|
uploadChange(file){
|
if (file.status === "success" || file.status === "error") {
|
this.pageLoading.close();
|
}
|
}
|
}
|
}
|
</script>
|
|
<style scoped lang="scss">
|
ul {
|
color: rgb(188, 188, 188);
|
margin: 20px 0 20px 0;
|
padding: 0 0 0 30px;
|
list-style: none;
|
li {
|
margin-bottom: 5px;
|
font-size: 13px;
|
}
|
}
|
</style>
|