From 42ff302287f4b6c74b4b32740cfe8a47088e9085 Mon Sep 17 00:00:00 2001 From: BianLzhaoMin <11485688+bianliangzhaomin123@user.noreply.gitee.com> Date: Fri, 17 Oct 2025 10:25:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/dataAnalysis/projectSafety.js | 19 ++ src/components/UploadFileFormData/index.vue | 265 ++++++++++++++++++ .../components/addAndEditFormOne.vue | 17 +- .../dataAnalysis/projectSafety/index.vue | 162 ++++++++++- 4 files changed, 459 insertions(+), 4 deletions(-) create mode 100644 src/components/UploadFileFormData/index.vue diff --git a/src/api/dataAnalysis/projectSafety.js b/src/api/dataAnalysis/projectSafety.js index 6e5b84c..92c6ad5 100644 --- a/src/api/dataAnalysis/projectSafety.js +++ b/src/api/dataAnalysis/projectSafety.js @@ -72,3 +72,22 @@ export function deleteVideoSafetyAnalysisAPI(data) { data, }) } + +// 下载模板 +export function downloadProjectTemplateAPI(data = {}) { + return request({ + url: '/background/sj/safety/downloadFile', + method: 'get', + responseType: 'blob', + params: data, + }) +} + +// 导入工程安全分析一本账列表 +export function importProjectSafetyAnalysisAPI(data) { + return requestFormData({ + url: '/background/sj/safety/importFileData', + method: 'post', + data, + }) +} diff --git a/src/components/UploadFileFormData/index.vue b/src/components/UploadFileFormData/index.vue new file mode 100644 index 0000000..dbd96d2 --- /dev/null +++ b/src/components/UploadFileFormData/index.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/src/views/dataAnalysis/projectSafety/components/addAndEditFormOne.vue b/src/views/dataAnalysis/projectSafety/components/addAndEditFormOne.vue index f3b8fec..0668170 100644 --- a/src/views/dataAnalysis/projectSafety/components/addAndEditFormOne.vue +++ b/src/views/dataAnalysis/projectSafety/components/addAndEditFormOne.vue @@ -33,13 +33,26 @@ - + /> --> + + + + + + + diff --git a/src/views/dataAnalysis/projectSafety/index.vue b/src/views/dataAnalysis/projectSafety/index.vue index 304a1f0..38d86c6 100644 --- a/src/views/dataAnalysis/projectSafety/index.vue +++ b/src/views/dataAnalysis/projectSafety/index.vue @@ -23,11 +23,25 @@ /> - + /> --> + + + + + + + + 新增 + + + 导入 + + + + 下载模板 + @@ -78,6 +108,10 @@ + + @@ -229,6 +263,37 @@ + + + + + + + 取消 + + + 确定 + + + @@ -238,16 +303,22 @@ import { deleteProjectSafetyAnalysisAPI, getVideoSafetyAnalysisListAPI, deleteVideoSafetyAnalysisAPI, + downloadProjectTemplateAPI, + importProjectSafetyAnalysisAPI, } from '@/api/dataAnalysis/projectSafety' +import { downloadFile } from '@/utils/download' + import AddAndEditFormOne from './components/addAndEditFormOne.vue' import AddAndEditFormTwo from './components/addAndEditFormTwo.vue' +import UploadFileFormData from '@/components/UploadFileFormData' export default { name: 'ProjectQuality', components: { AddAndEditFormOne, AddAndEditFormTwo, + UploadFileFormData, }, data() { return { @@ -260,7 +331,10 @@ export default { safetyType: '风险一本账', projectList: [], // 风险一本账列表 projectList_1: [], // 视频风险分析列表 + importFileList: [], // 导入文件列表 addAndEditDialogVisible: false, + importDialogVisible: false, + loading: false, addAndEditDialogTitle: '', tableColumns: [ { @@ -430,6 +504,23 @@ export default { }) }, + indexToRiskLevel(index) { + switch (index) { + case '1': + return 'Ⅰ' + case '2': + return 'Ⅱ' + case '3': + return 'Ⅲ' + case '4': + return 'Ⅳ' + case '5': + return 'Ⅴ' + default: + return '' + } + }, + // 提交工程质量 async onHandleSubmit() { if (this.safetyType === '风险一本账') { @@ -460,6 +551,68 @@ export default { } } }, + + // 导入 + onHandleImport() { + this.importDialogVisible = true + this.importFileList = [] + }, + + // 下载模板 + onHandleDownloadTemplate() { + downloadProjectTemplateAPI().then((res) => { + downloadFile({ + fileName: '模板.xlsx', + fileData: res, + fileType: 'application/vnd.ms-excel;charset=utf-8', + }) + }) + }, + + // 取消上传 + onHandleCancelImport() { + this.importFileList = [] + this.dialogConfig.outerVisible = false + }, + + // 确定上传 + async onHandleConfirmImport() { + if (this.importFileList.length > 0) { + const formData = new FormData() + // 增加全局loading + this.loading = true + formData.append('file', this.importFileList[0].raw) + const res = await importProjectSafetyAnalysisAPI(formData) + + this.loading = false + + if (res.code === 200) { + this.$message.success('导入成功') + this.importFileList = [] + this.importDialogVisible = false + this.getProjectSafetyAnalysisList() + } else { + this.$message.error(res.msg) + } + } else { + this.$confirm( + '当前未选择文件,确定后将关闭上传页面?', + '温馨提示', + { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }, + ) + .then(async () => { + this.importFileList = [] + this.importDialogVisible = false + }) + .catch(() => { + // console.log('取消') + }) + } + }, }, } @@ -483,4 +636,9 @@ export default { box-sizing: border-box !important; } } + +.dialog-footer-btn { + text-align: right; + margin-top: 20px; +}