代码更新:

1. 增加工作日历导入的功能。
This commit is contained in:
梁州 2024-10-20 17:45:46 +08:00
parent 18c7068b28
commit 9c9bdda7df
3 changed files with 150 additions and 7 deletions

View File

@ -54,6 +54,15 @@ const uploadExcelDbs = (data) => {
})
}
const uploadExcelWorkDate = (data) => {
return request({
url: '/excel/uploadWorkDate',
method: 'post',
data: data,
timeout: 600000
})
}
const uploadExcelOrders = (data) => {
return request({
url: '/excel/uploadKateOrders',
@ -199,5 +208,6 @@ export {
downloadWorkSummaryExcel,
uploadExcelBaseGoods,
uploadExcelKanban,
uploadWorkFlow
uploadWorkFlow,
uploadExcelWorkDate
}

View File

@ -0,0 +1,98 @@
<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="uploadWorkDate">上传工作日历</el-button>
</el-upload>
</template>
<script setup>
import store from '@/store'
import { ref, reactive } from 'vue';
import { uploadExcelWorkDate } 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'
const file = ref()
var currentHash = ''
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 uploadWorkDate = () => {
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.rawfilefile.valueProxy
formData.append("obj", blob);
formData.append("file", file.value.raw);
loading.open('导入中...')
uploadExcelWorkDate(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>

View File

@ -9,8 +9,10 @@
<el-button type="warning" @click="reset()">重置</el-button>
</el-row>
<el-row>
<el-button style="background-color: #00CED1; color: #000;"
@click="openUploadDialog()">导入</el-button>
<el-button style="background-color: #00CED1; color: #000; width: 120px;"
@click="openUploadDialog(1)">导入DBS</el-button>
<el-button style="background-color: #32CD32; color: #000; width: 120px;"
@click="openUploadDialog(2)">导入工作日历</el-button>
</el-row>
</div>
<br />
@ -123,6 +125,33 @@
<UploadExcelDbs></UploadExcelDbs>
</fieldset>
</el-dialog>
<el-dialog v-model="uploadWorkDateDialogVisible" title="DBS" width="40%" draggable :show-close="true">
<fieldset class="title-area">
<legend>上次更新</legend>
<div style="padding: 5px;">
<div style="display: flex; margin-bottom: 10px;">
<div style="display: flex; width: 100%;">
<div style="width: 30%; align-content: center;">时间</div>
<el-input v-model="uploadRecord.uploadTime" readonly />
</div>
<div style="display: flex; width: 100%; margin-left: 5px;">
<div style="width: 30%; align-content: center;">人员</div>
<el-input v-model="uploadRecord.uploadUser" readonly />
</div>
</div>
<div style="display: flex; width: 100%;">
<div style="width: 13%; align-content: center;">文件名</div>
<el-input type="textarea" :rows="1" v-model="uploadRecord.fileName" :maxlength="-1"
:show-word-limit="false" :autosize="{ minRows: 1, maxRows: 4 }" readonly>
</el-input>
</div>
</div>
</fieldset>
<fieldset class="title-area">
<legend>再次更新</legend>
<UploadExcelWorkDate></UploadExcelWorkDate>
</fieldset>
</el-dialog>
</el-config-provider>
</div>
</template>
@ -136,6 +165,7 @@ import { errorBox } from '@/utils/myMessageBox.js'
import { ref, reactive } from 'vue'
import { dateFormatter, timeFormatter } from '@/utils/formatter.js'
import UploadExcelDbs from '@/excel/UploadExcelDbs.vue'
import UploadExcelWorkDate from '@/excel/UploadExcelWorkDate.vue'
import { queryUploadRecord } from '@/api/excel.js'
import { Search } from '@element-plus/icons-vue'
</script>
@ -161,7 +191,8 @@ export default {
dbsFormEntity: reactive({}),
labelPosition: 'top',
dbsFormRef: ref(),
rules: reactive({})
rules: reactive({}),
uploadWorkDateDialogVisible: false,
}
},
mounted() {
@ -269,11 +300,11 @@ export default {
getCurrentRow(row) {
this.dbsId = row.dbsId
},
openUploadDialog() {
openUploadDialog(uploadType) {
//
const param = {
userName: store.getters.getUserName,
fileDescription: 'DBS',
fileDescription: uploadType == 1 ? 'DBS' : 'WORK_DATE',
isAsc: false,
sortBy: 'upload_time'
}
@ -299,7 +330,11 @@ export default {
console.log(err)
errorBox('发生异常')
})
this.uploadDialogVisible = true
if (uploadType == 1) {
this.uploadDialogVisible = true
} else {
this.uploadWorkDateDialogVisible = true
}
},
},
}