wms_web_nantong_yachi/src/excel/UploadExcelKanban.vue
2025-03-08 10:02:56 +08:00

98 lines
2.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-upload ref="uploadRef" :on-preview="previewFile" :limit="1" :on-change="changeFile" :auto-upload="false"
:data="uploadForm.data">
<template #trigger>
<el-button type="primary">选取看板文件</el-button>
</template>
<el-button style="margin-left: 10px;" type="success" @click="uploadKanban">上传看板</el-button>
</el-upload>
</template>
<script setup>
import store from '@/store'
import { ref, reactive } from 'vue';
import { uploadExcelKanban } from '@/api/excel.js'
import { ElMessage } from 'element-plus'
import { errorBox } from '@/utils/myMessageBox';
import { sizeFormatter } from '@/utils/formatter.js'
import { loading } from '@/utils/loading.js'
import { getHashString } from '@/utils/hashUtils.js'
var currentHash = ''
const file = ref()
const uploadForm = reactive({
data: {
fileId: '',
name: '',
type: '',
size: null,
hash: '',
userName: store.getters.getUserName
}
})
const changeFile = (uploadFile) => {
file.value = uploadFile
uploadForm.data = {
fileId: file.value.raw.uid,
name: file.value.raw.name,
type: file.value.raw.type,
size: sizeFormatter(file.value.raw.size),
hash: getHashString(uploadFile),
userName: store.getters.getUserName
}
}
const uploadRef = ref()
const uploadKanban = () => {
if (uploadForm == undefined || file.value == undefined) {
errorBox('请选择文件之后再上传')
return
}
if (currentHash != '' && currentHash == uploadForm.data.hash) {
errorBox('请勿重复上传')
return
}
currentHash = uploadForm.data.hash
const jsonStr = JSON.stringify(uploadForm.data);
const blob = new Blob([jsonStr], {
type: 'application/json'
});
let formData = new FormData();
// 这里很重要 file.value.raw才是真实的file文件file.value只是一个Proxy代理对象
formData.append("fileVo", blob);
formData.append("file", file.value.raw);
loading.open('导入中...')
uploadExcelKanban(formData).then(res => {
loading.close()
currentHash = ''
if (res.data.code == 0) {
ElMessage({
message: '上传成功',
type: 'success',
})
clearFileInfos()
} else {
errorBox(res.data.message)
}
}).catch(err => {
loading.close()
currentHash = ''
console.log(err)
errorBox('上传错误')
})
}
const clearFileInfos = () => {
// 清空选择的文件项
uploadRef.value.clearFiles()
uploadForm.data = {
fileId: '',
name: '',
type: '',
size: null,
hash: '',
userName: store.getters.getUserName
}
file.value = undefined
}
const previewFile = () => {
}
</script>
<style scoped></style>