<template>
|
<el-button type="info" plain icon="Upload" @click="handleImport">
|
导入
|
</el-button>
|
<el-dialog v-model="upload.open" :title="upload.title">
|
<FileUpload
|
ref="fileUploadRef"
|
accept=".xlsx, .xls"
|
:headers="upload.headers"
|
:action="upload.url + '?updateSupport=' + upload.updateSupport"
|
:disabled="upload.isUploading"
|
:showTip="true"
|
@success="handleFileSuccess"
|
:downloadTemplate="handleDownloadTemplate"
|
/>
|
<template #footer>
|
<div class="dialog-footer">
|
<el-button type="primary" @click="submitFileForm">确 定</el-button>
|
<el-button @click="upload.open = false">取 消</el-button>
|
</div>
|
</template>
|
</el-dialog>
|
</template>
|
|
<script setup>
|
import { reactive } from "vue";
|
import { getToken } from "@/utils/auth.js";
|
import { FileUpload } from "@/components/Upload";
|
import { ElMessage } from "element-plus";
|
import { downloadProductModelImportTemplate } from "@/api/basicData/product.js";
|
|
defineOptions({
|
name: "产品维护导入",
|
});
|
|
const emits = defineEmits(["uploadSuccess"]);
|
const fileUploadRef = ref();
|
const upload = reactive({
|
// 是否显示弹出层(供应商导入)
|
open: false,
|
// 弹出层标题(供应商导入)
|
title: "",
|
// 是否禁用上传
|
isUploading: false,
|
// 设置上传的请求头部
|
headers: { Authorization: "Bearer " + getToken() },
|
// 上传的地址
|
url: import.meta.env.VITE_APP_BASE_API + "/system/supplier/import",
|
});
|
// 点击导入
|
const handleImport = () => {
|
upload.open = true;
|
upload.title = "产品导入";
|
};
|
|
const submitFileForm = () => {
|
fileUploadRef.value.uploadApi();
|
};
|
|
const handleFileSuccess = (response) => {
|
const { code, msg } = response;
|
if (code == 200) {
|
ElMessage({ message: "导入成功", type: "success" });
|
upload.open = false;
|
emits("uploadSuccess");
|
} else {
|
ElMessage({ message: msg, type: "error" });
|
}
|
};
|
|
// 下载 Excel 导入模板
|
const handleDownloadTemplate = () => {
|
downloadProductModelImportTemplate()
|
.then((blobData) => {
|
const blob =
|
blobData instanceof Blob
|
? blobData
|
: new Blob([blobData], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
|
const url = window.URL.createObjectURL(blob);
|
const link = document.createElement("a");
|
link.href = url;
|
link.download = "产品导入模板.xlsx";
|
document.body.appendChild(link);
|
link.click();
|
document.body.removeChild(link);
|
window.URL.revokeObjectURL(url);
|
ElMessage({ message: "模板下载成功", type: "success" });
|
})
|
.catch(() => {
|
ElMessage({ message: "模板下载失败", type: "error" });
|
});
|
};
|
</script>
|