From 690f21725fc8489110a268155edead703c146cb2 Mon Sep 17 00:00:00 2001
From: shj <1790240199@qq.com>
Date: 星期五, 12 八月 2022 19:11:19 +0800
Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/gtqtOut

---
 src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue                     |   53 +-
 src/views/contingencyManagement/panManagement/component/openAdd.vue                                         |   53 +-
 src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue |   76 ++-
 src/views/accidentManagementSystem/accidentExpress/index.vue                                                |   18 
 src/views/contingencyManagement/contingency/component/openAdd.vue                                           |   48 +
 src/components/uploaderFile/index.vue                                                                       |  178 +++++++++
 src/components/uploaderImg/index.vue                                                                        |  192 +++++++--
 src/views/accidentManagementSystem/accidentReport/component/openAdd.vue                                     |   71 +++
 src/views/contingencyManagement/contingency/index.vue                                                       |    9 
 src/api/goalManagement/index.ts                                                                             |   13 
 src/views/goalManagement/TargetBook/component/DailogAdd.vue                                                 |   71 ++-
 src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue                                    |   57 ++-
 src/views/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue                              |   38 +
 src/components/equipmentDailog/Dailog.vue                                                                   |   90 +++-
 src/views/goalManagement/performanceAppraisal/component/DailogAq.vue                                        |   72 ++-
 15 files changed, 793 insertions(+), 246 deletions(-)

diff --git a/src/api/goalManagement/index.ts b/src/api/goalManagement/index.ts
index 2dde50d..f96d19e 100644
--- a/src/api/goalManagement/index.ts
+++ b/src/api/goalManagement/index.ts
@@ -310,7 +310,18 @@
                 url: `/account/dep/list?depId=${params}`,
                 method: "get"
             })
+        },
+        beforeUploadFile(fileName1:string,fileName2:string) {
+            return request({
+                url: '/minio/file/presign?prefixName='+fileName1+'&suffixName='+fileName2,
+                method: 'get',
+            })
+        },
+        searchFile(fileName:string) {
+            return request({
+                url: '/minio/file/view?obj='+fileName,
+                method: 'get',
+            })
         }
-
     }
 }
\ No newline at end of file
diff --git a/src/components/equipmentDailog/Dailog.vue b/src/components/equipmentDailog/Dailog.vue
index c75400c..230d038 100644
--- a/src/components/equipmentDailog/Dailog.vue
+++ b/src/components/equipmentDailog/Dailog.vue
@@ -324,22 +324,8 @@
 				</el-table>
 			</el-tab-pane>
 			<el-tab-pane label="保养维修标准" name="six" v-if="Dailogtype">
-				<el-upload
-					v-model:file-list="fileList"
-					class="upload-demo"
-					action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-					multiple
-					:on-preview="handlePreview"
-					:on-remove="handleRemove"
-					:before-remove="beforeRemove"
-					:limit="3"
-					:on-exceed="handleExceed"
-				>
-					<el-button type="primary">点击上传</el-button>
-					<template #tip>
-						<div class="el-upload__tip"></div>
-					</template>
-				</el-upload>
+				<uploaderFile :fileList="fileList" :systemName="'EQUIPMENT'" :disabled="disabled"
+							  @successUploader="successUploader"></uploaderFile>
 			</el-tab-pane>
 		</el-tabs>
 		<template #footer>
@@ -374,8 +360,10 @@
 import { facilityManagementApi } from '/@/api/facilityManagement';
 import { goalManagementApi } from '/@/api/goalManagement';
 import { deepClone } from '/@/utils/other';
+import uploaderFile from '/@/components/uploaderFile/index.vue';
 export default defineComponent({
-	components: { categoryDailog, regionDailog, DailogSearchUser, maintenanceDailog, detectDailog, repairDailog, standardDailog },
+	components: { categoryDailog, regionDailog, DailogSearchUser, maintenanceDailog,
+		detectDailog, repairDailog, standardDailog,uploaderFile },
 	setup(props, { emit }) {
 		const dialogVisible = ref(false);
 		const ruleFormRef = ref<FormInstance>();
@@ -415,9 +403,6 @@
 			repairStatus: '',
 
 			takecareStardardeDetailList: [
-				{
-					filePath: '123',
-				},
 			],
 
 			nextCheckDate: '',
@@ -528,11 +513,61 @@
 					.then((res) => {
 						if (res.data.code == 200) {
 							form.value = res.data.data;
+
+							//初始化日期格式
+							form.value.actualDestoryDate = timeC(form.value.actualDestoryDate);
+							form.value.actualRecoveryDate = timeC(form.value.actualRecoveryDate);
+							form.value.actualStopDate = timeC(form.value.actualStopDate);
+							form.value.destorySubmitDate = timeC(form.value.destorySubmitDate);
+							form.value.nextCheckDate = timeC(form.value.nextCheckDate);
+							form.value.nextTakecareDate = timeC(form.value.nextTakecareDate);
+							form.value.nextTestDate = timeC(form.value.nextTestDate);
+							form.value.previousCheckDate = timeC(form.value.previousCheckDate);
+							form.value.previousTakecareDate = timeC(form.value.previousTakecareDate);
+							form.value.previousTestDate = timeC(form.value.previousTestDate);
+							form.value.produceTime = timeC(form.value.produceTime);
+							form.value.recoverySubmitDate = timeC(form.value.recoverySubmitDate);
+							form.value.stopSubmitDate = timeC(form.value.stopSubmitDate);
+							form.value.useDate = timeC(form.value.useDate);
+
+							fileList.value = (res.data.data.takecareStardardeDetailList?res.data.data.takecareStardardeDetailList:[])
+							initFileListData()
 						} else {
 							ElMessage.error(res.data.msg);
 						}
 					});
 		};
+		const timeC = (timestamp: any) => {
+			let a = new Date(timestamp).getTime();
+			const date = new Date(a);
+			const Y = date.getFullYear() + '-';
+			const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+			const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '  ';
+			const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
+			const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
+			const s = date.getSeconds(); // 秒
+			const dateString = Y + M + D + h + m +`:${s}`;
+			// console.log('dateString', dateString); // > dateString 2021-07-06 14:23
+			return dateString;
+		};
+		const initFileListData = async () => {
+			for(var a = 0;a<fileList.value.length;a++){
+				fileList.value[a].name = fileList.value[a].filePath
+			}
+		}
+		// 上传成功组装数据
+		const successUploader = (list) =>{
+			fileList.value = list
+			const formFileList = []
+			for(var a = 0;a<fileList.value.length;a++){
+				formFileList.push(
+						{
+							filePath:fileList.value[a].fileName
+						}
+				)
+			}
+			form.value.takecareStardardeDetailList = formFileList
+		}
 		const rules = reactive<FormRules>({
 			qName: [],
 			positionNum: [],
@@ -628,6 +663,7 @@
 			form.value.testDetailList = [];
 			form.value.repaireDetailList = [];
 			form.value.checkStandardeDetailList = [];
+			fileList.value = []
 			dialogVisible.value = false;
 		};
 		const activeName = ref('first');
@@ -665,16 +701,7 @@
 			standardShow.value.openDailog(title, data);
 		};
 		// 上传
-		const fileList = ref<UploadUserFile[]>([
-			{
-				name: 'element-plus-logo.svg',
-				url: 'https://element-plus.org/images/element-plus-logo.svg',
-			},
-			{
-				name: 'element-plus-logo2.svg',
-				url: 'https://element-plus.org/images/element-plus-logo.svg',
-			},
-		]);
+		const fileList = ref([]);
 
 		const handleRemove: UploadProps['onRemove'] = (file, uploadFiles) => {
 			console.log(file, uploadFiles);
@@ -845,6 +872,9 @@
 			FullScreen,
 			timeDate,
 			ruleFormRef,
+			successUploader,
+			initFileListData,
+			timeC
 		};
 	},
 });
diff --git a/src/components/uploaderFile/index.vue b/src/components/uploaderFile/index.vue
new file mode 100644
index 0000000..e84783c
--- /dev/null
+++ b/src/components/uploaderFile/index.vue
@@ -0,0 +1,178 @@
+<template>
+	<el-upload
+		v-model:file-list="fileList"
+		multiple
+		:disabled="disabled"
+		class="upload-demo"
+		:http-request="uploadSectionFile"
+		:on-preview="handlePictureCardPreview"
+		:on-remove="handleRemove"
+		:on-success="successFile"
+		:on-error="errorFile"
+	>
+		<el-button type="primary">点击上传</el-button>
+		<template #tip>
+			<div class="el-upload__tip">
+				请上传文件
+				<!--jpg/png files with a size less than 500KB.-->
+			</div>
+			<slot name="file">
+
+			</slot>
+		</template>
+	</el-upload>
+
+	<!--<el-dialog v-model="dialogVisible">-->
+		<!--<img w-full :src="dialogImageUrl" alt="Preview Image" />-->
+	<!--</el-dialog>-->
+</template>
+<script lang="ts">
+import axios from 'axios';
+import { ref, defineComponent,onMounted,watch } from 'vue';
+import { Plus } from '@element-plus/icons-vue';
+import type { UploadProps, UploadUserFile } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+
+export default defineComponent({
+	props: {
+		fileList: {
+			type: Array,
+		},
+		disabled: {
+			type: Boolean,
+			default: () => false,
+		},
+		systemName: {
+			type: String,
+			default: () => '',
+		},
+	},
+	components: {
+		Plus,
+	},
+	setup(props, { emit }) {
+		const dialogImageUrl = ref('');
+		const dialogVisible = ref(false);
+
+		const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
+			console.log(uploadFile, uploadFiles);
+			emit('deleteFile',uploadFiles);
+		};
+
+		const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => {
+			goalManagementApi()
+					.searchFile(uploadFile.fileName)
+					.then((res) => {
+						window.open(res.data, "_blank");
+					})
+			dialogImageUrl.value = uploadFile.url!;
+			// dialogVisible.value = true;
+		};
+
+		const successFile = (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => {
+			console.log(response, uploadFile, uploadFiles);
+		};
+		const errorFile = (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => {
+			console.log(error, uploadFile, uploadFiles);
+		};
+		watch(props.fileList, (val) => {
+			viewList.value = val
+			// searchFile()
+		});
+		onMounted(() => {
+			if(props.fileList){
+				viewList.value = props.fileList
+				// searchFile()
+			}else {
+				viewList.value = []
+			}
+
+		});
+		const newFileList = ref([])
+		const viewList = ref([])
+		const searchFile = async () => {
+			for(var a = 0;a<props.fileList.length;a++){
+				await goalManagementApi()
+						.searchFile(props.fileList[a].fileName)
+						.then((res) => {
+							props.fileList[a].url = res.data
+						})
+			}
+		};
+		const uploadSectionFile = (param) => {
+			let form = new FormData();
+			form.append('file', param.file);
+			//组装文件名(传入后缀名)
+			var fileName1 = getFileName(param.file.type.split('/')[1], 1);
+			var fileName2 = getFileName(param.file.type.split('/')[1], 2);
+			goalManagementApi()
+				.beforeUploadFile(fileName1, fileName2)
+				.then((res) => {
+					// 转换形式
+					const reader = new FileReader();
+					reader.readAsArrayBuffer(param.file);
+					// 上传图片
+					reader.onload = () => { // 上传图片接口 url:上传图片地址 修改请求头
+						axios.put(res.data.uploadUrl, reader.result,
+							{
+								header:
+									{ "Content-Type": "multipart/form-data" }
+							}
+						)
+						.then(res1 =>
+						{
+							props.fileList[props.fileList.length-1].fileName=res.data.fileName
+							props.fileList[props.fileList.length-1].name=res.data.fileName
+							props.fileList[props.fileList.length-1].fileUrl=''
+							emit('successUploader',props.fileList);
+							ElMessage({
+								showClose: true,
+								message: '上传成功',
+								type: 'success',
+							});
+						})
+					};
+				});
+		};
+		const getFileName = (suffix, type) => {
+			var projectName = props.systemName;
+			var date = getNowDate();
+			var fileName1 = projectName + '/' + date + '_';
+			var fileName2 = '.' + suffix;
+			if (type == 1) {
+				return fileName1;
+			} else if (type == 2) {
+				return fileName2;
+			}
+			return '';
+		};
+
+		//获取当前年月日
+		const getNowDate = () => {
+			var a = new Date().getTime(); //获取到当前时间戳
+			var now = new Date(a); //创建一个指定的日期对象
+			var year = now.getFullYear(); //年份
+			var month = now.getMonth() + 1; //月份(0-11)
+			var date = now.getDate(); //天数(1到31)
+			return year + '-' + month + '-' + date;
+		};
+
+		return {
+			dialogImageUrl,
+			dialogVisible,
+			handleRemove,
+			handlePictureCardPreview,
+			successFile,
+			errorFile,
+			uploadSectionFile,
+			viewList
+		};
+	},
+});
+</script>
+<style scoped>
+	.upload-demo{
+		width: 100%;
+	}
+</style>
\ No newline at end of file
diff --git a/src/components/uploaderImg/index.vue b/src/components/uploaderImg/index.vue
index b769025..c30fad0 100644
--- a/src/components/uploaderImg/index.vue
+++ b/src/components/uploaderImg/index.vue
@@ -1,12 +1,13 @@
 <template>
 	<el-upload
-			v-model:file-list="fileList"
-			action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-			list-type="picture-card"
-			:on-preview="handlePictureCardPreview"
-			:on-remove="handleRemove"
-			:on-success="successFile"
-			:on-error="errorFile"
+		v-model:file-list="fileList"
+		:disabled="disabled"
+		:http-request="uploadSectionFile"
+		list-type="picture-card"
+		:on-preview="handlePictureCardPreview"
+		:on-remove="handleRemove"
+		:on-success="successFile"
+		:on-error="errorFile"
 	>
 		<el-icon><Plus /></el-icon>
 	</el-upload>
@@ -16,50 +17,141 @@
 	</el-dialog>
 </template>
 <script lang="ts">
-	import { ref,defineComponent } from 'vue'
-	import { Plus } from '@element-plus/icons-vue'
-	import type { UploadProps, UploadUserFile } from 'element-plus'
+import axios from 'axios';
+import { ref, defineComponent,onMounted,watch } from 'vue';
+import { Plus } from '@element-plus/icons-vue';
+import type { UploadProps, UploadUserFile } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
 
-	export default defineComponent({
-		props: {
-			// svg 图标组件名字
-			fileList: {
-				type: Array,
-			},
+export default defineComponent({
+	props: {
+		// svg 图标组件名字
+		fileList: {
+			type: Array,
 		},
-		components: {
-			Plus
+		disabled: {
+			type: Boolean,
+			default: () => false,
 		},
-		setup() {
-
-			const dialogImageUrl = ref('')
-			const dialogVisible = ref(false)
-
-			const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
-				console.log(uploadFile, uploadFiles)
-			}
-
-			const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => {
-				dialogImageUrl.value = uploadFile.url!
-				dialogVisible.value = true
-			}
-
-			const successFile = (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles)  => {
-				console.log(response, uploadFile,uploadFiles)
-			}
-			const errorFile = (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles)  => {
-				console.log(error, uploadFile,uploadFiles)
-			}
-
-
-			return {
-				dialogImageUrl,
-				dialogVisible,
-				handleRemove,
-				handlePictureCardPreview,
-				successFile,
-				errorFile
-			};
+		systemName: {
+			type: String,
+			default: () => '',
 		},
-	});
-</script>
\ No newline at end of file
+	},
+	components: {
+		Plus,
+	},
+	setup(props, { emit }) {
+		const dialogImageUrl = ref('');
+		const dialogVisible = ref(false);
+
+		const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
+			console.log(uploadFile, uploadFiles);
+		};
+
+		const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => {
+			dialogImageUrl.value = uploadFile.url!;
+			dialogVisible.value = true;
+		};
+
+		const successFile = (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => {
+			console.log(response, uploadFile, uploadFiles);
+		};
+		const errorFile = (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => {
+			console.log(error, uploadFile, uploadFiles);
+		};
+		watch(props.fileList, (val) => {
+			viewList.value = val
+			// searchFile()
+		});
+		onMounted(() => {
+			if(props.fileList){
+				viewList.value = props.fileList
+				// searchFile()
+			}else {
+				viewList.value = []
+			}
+
+		});
+		const newFileList = ref([])
+		const viewList = ref([])
+		const searchFile = async () => {
+			for(var a = 0;a<props.fileList.length;a++){
+				await goalManagementApi()
+						.searchFile(props.fileList[a].fileName)
+						.then((res) => {
+							props.fileList[a].url = res.data
+						})
+			}
+		};
+		const uploadSectionFile = (param) => {
+			let form = new FormData();
+			form.append('file', param.file);
+			//组装文件名(传入后缀名)
+			var fileName1 = getFileName(param.file.type.split('/')[1], 1);
+			var fileName2 = getFileName(param.file.type.split('/')[1], 2);
+			goalManagementApi()
+				.beforeUploadFile(fileName1, fileName2)
+				.then((res) => {
+					// 转换形式
+					const reader = new FileReader();
+					reader.readAsArrayBuffer(param.file);
+					// 上传图片
+					reader.onload = () => { // 上传图片接口 url:上传图片地址 修改请求头
+						axios.put(res.data.uploadUrl, reader.result,
+							{
+								header:
+									{ "Content-Type": "multipart/form-data" }
+							}
+						)
+						.then(res1 =>
+						{
+							props.fileList[props.fileList.length-1].fileName=res.data.fileName
+							props.fileList[props.fileList.length-1].fileUrl=''
+							emit('successUploader',props.fileList);
+							ElMessage({
+								showClose: true,
+								message: '上传成功',
+								type: 'success',
+							});
+						})
+					};
+				});
+		};
+		const getFileName = (suffix, type) => {
+			var projectName = props.systemName;
+			var date = getNowDate();
+			var fileName1 = projectName + '/' + date + '_';
+			var fileName2 = '.' + suffix;
+			if (type == 1) {
+				return fileName1;
+			} else if (type == 2) {
+				return fileName2;
+			}
+			return '';
+		};
+
+		//获取当前年月日
+		const getNowDate = () => {
+			var a = new Date().getTime(); //获取到当前时间戳
+			var now = new Date(a); //创建一个指定的日期对象
+			var year = now.getFullYear(); //年份
+			var month = now.getMonth() + 1; //月份(0-11)
+			var date = now.getDate(); //天数(1到31)
+			return year + '-' + month + '-' + date;
+		};
+
+		return {
+			dialogImageUrl,
+			dialogVisible,
+			handleRemove,
+			handlePictureCardPreview,
+			successFile,
+			errorFile,
+			uploadSectionFile,
+			viewList
+		};
+	},
+});
+</script>
diff --git a/src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue b/src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue
index 430d136..4e7f072 100644
--- a/src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue
+++ b/src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue
@@ -1,6 +1,7 @@
 <template>
 	<div class="system-edit-user-container">
-		<el-dialog :title="titles" v-model="isShowDialog" width="50%" draggable :fullscreen="full" @close="closeDialog(ruleFormRef)">
+		<el-dialog :title="titles" v-model="isShowDialog" width="50%" draggable :fullscreen="full"
+				   destroy-on-close @close="closeDialog(ruleFormRef)">
 			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
 			<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" size="default" label-width="140px">
 				<el-row :gutter="35">
@@ -94,7 +95,8 @@
 						<el-form-item label="事故照片" prop="fileList">
 							<!--<el-input v-model="ruleForm.fileList" :disabled="disabled"-->
 							<!--type="textarea" placeholder="请填写应急防范措施" maxlength="150"></el-input>-->
-							<uploaderImg :fileList="fileListDemo"></uploaderImg>
+							<uploaderImg :fileList="fileList" :disabled="disabled"
+										 :systemName="'INCIDENT_MANAGE'" @successUploader="successUploader"></uploaderImg>
 						</el-form-item>
 					</el-col>
 				</el-row>
@@ -157,7 +159,7 @@
 		const titles = ref();
 		const disabled = ref();
 		// 打开弹窗
-		const openDialog = (title: string, id: number, type: boolean) => {
+		const openDialog = async (title: string, id: number, type: boolean) => {
 			isShowDialog.value = true;
 			titles.value = title;
 			disabled.value = type;
@@ -167,24 +169,39 @@
 					.then((res) => {
 						if (res.data.code == 200) {
 							ruleForm.value = res.data.data;
+							fileList.value = (res.data.data.fileList?res.data.data.fileList:[])
+							initFileListData()
 						}
 					});
 			}
 		};
+		const initFileListData = async () => {
+			for(var a = 0;a<fileList.value.length;a++){
+				await goalManagementApi()
+						.searchFile(fileList.value[a].fileName)
+						.then((res) => {
+							fileList.value[a].url = res.data
+						})
+			}
+		}
 		//日期选择器
 		const value1 = ref('');
 		// 上传附件
-		const fileList = ref<UploadUserFile[]>([]);
-		const fileListDemo = ref<UploadUserFile[]>([
-			{
-				name: 'food.jpeg',
-				url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
-			},
-			{
-				name: 'food.jpeg',
-				url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
-			},
-		]);
+		const fileList = ref([]);
+		// 上传成功组装数据
+		const successUploader = (list) =>{
+			fileList.value = list
+			const formFileList = []
+			for(var a = 0;a<fileList.value.length;a++){
+				formFileList.push(
+					{
+						fileName:fileList.value[a].fileName,
+						fileUrl:''
+					}
+				)
+			}
+			ruleForm.value.fileList = formFileList
+		}
 		// 可选择树
 		const treeSelect = ref();
 
@@ -292,6 +309,9 @@
 		// const emit=defineEmits(['myAdd'])
 		// 表单提交验证必填项
 		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if(!ruleForm.value.fileList){
+				ruleForm.value.fileList = []
+			}
 			if (title == '新建事故快报') {
 				if (!formEl) return;
 				await formEl.validate((valid, fields) => {
@@ -327,12 +347,6 @@
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						isShowDialog.value = false;
-						ruleForm.value.fileList = [
-							// {
-							// 	fileUrl: 'url',
-							// 	fileName: 'name',
-							// },
-						];
 						accidentManagementSystemApi()
 							.accidentView(ruleForm.value)
 							.then((res) => {
@@ -380,6 +394,7 @@
 		};
 		const closeDialog = (formEl: FormInstance | undefined) => {
 			formEl.resetFields();
+			fileList.value = []
 			console.log(ruleForm);
 			isShowDialog.value = false;
 		};
@@ -459,7 +474,7 @@
 			getTreeList,
 			newTreeList,
 			closeDialog,
-			fileListDemo,
+			successUploader
 		};
 	},
 });
diff --git a/src/views/accidentManagementSystem/accidentExpress/index.vue b/src/views/accidentManagementSystem/accidentExpress/index.vue
index ce1a6df..e6b7863 100644
--- a/src/views/accidentManagementSystem/accidentExpress/index.vue
+++ b/src/views/accidentManagementSystem/accidentExpress/index.vue
@@ -41,7 +41,8 @@
 				<el-table-column align="center" prop="accidentName" label="事故名称" show-overflow-tooltip sortable></el-table-column>
 				<el-table-column align="center" prop="deptName" label="事故部门" show-overflow-tooltip sortable></el-table-column>
 				<el-table-column align="center" prop="occurrencePlace" label="发生地点" show-overflow-tooltip sortable></el-table-column>
-				<el-table-column align="center" prop="occurrenceTime" label="发生时间" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" prop="occurrenceTime" label="发生时间" show-overflow-tooltip sortable
+								 :formatter="dateFormat"></el-table-column>
 				<el-table-column align="center" prop="accidentCause" label="事故原因" show-overflow-tooltip sortable>
 					<template #default="scope">
 						<div v-if="scope.row.accidentCause=='1'">人的不安全行为</div>
@@ -49,7 +50,8 @@
 					</template>
 				</el-table-column>
 				<el-table-column align="center" prop="createName" label="创建人" show-overflow-tooltip sortable></el-table-column>
-				<el-table-column align="center" prop="gmtModitify" label="更新时间" show-overflow-tooltip sortable></el-table-column>
+				<el-table-column align="center" prop="gmtModitify" label="更新时间" show-overflow-tooltip sortable
+								 :formatter="dateFormat"></el-table-column>
 				<el-table-column label="操作" width="260" align="center" fixed="right">
 					<template #default="scope">
 						<!-- <el-button size="small" text disabled>
@@ -268,7 +270,16 @@
 				addRef.value.openDialog('修改事故快报',row,false);
 			}
 		};
-
+//格式化表格时间
+		const dateFormat = (row,column) => {
+			// 获取单元格数据
+			let data = row[column.property];
+			if(data == null) {
+				return null;
+			}
+			let dt = new Date(data)
+			return dt.getFullYear() + '-' + (dt.getMonth() + 1) + '-' + dt.getDate() + ' ' + dt.getHours() + ':' + dt.getMinutes() + ':' + dt.getSeconds()
+		};
 		return {
 			upButton,
 			upShow,
@@ -291,6 +302,7 @@
 			onDelete,
 			deletAll,
 			onDeleteAll,
+			dateFormat
 		};
 	},
 });
diff --git a/src/views/accidentManagementSystem/accidentReport/component/openAdd.vue b/src/views/accidentManagementSystem/accidentReport/component/openAdd.vue
index a17ed5e..0aa02af 100644
--- a/src/views/accidentManagementSystem/accidentReport/component/openAdd.vue
+++ b/src/views/accidentManagementSystem/accidentReport/component/openAdd.vue
@@ -166,11 +166,11 @@
 							/>
 						</el-form-item>
 					</el-col>
-					<!--          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">-->
-					<!--            <el-form-item label="事故照片">-->
-					<!--              <el-input v-model="ruleForm.describe" type="textarea" placeholder="请填写应急防范措施" maxlength="150"></el-input>-->
-					<!--            </el-form-item>-->
-					<!--          </el-col>-->
+					  <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="事故照片">
+							<uploaderImg :fileList="ruleForm.expressFileList" :disabled="true"></uploaderImg>
+						</el-form-item>
+					  </el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
 						<el-form-item label="相关人员笔录" prop="relevantPersonnelRecords">
 							<el-input v-model="ruleForm.relevantPersonnelRecords" :disabled="disabled"
@@ -186,8 +186,9 @@
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-						<el-form-item label="事故分析会议纪要" prop="fileList">
-							<uploaderImg :fileList="fileList" :disabled="disabled"></uploaderImg>
+						<el-form-item label="事故分析会议纪要">
+							<uploaderFile :fileList="fileList" :systemName="'INCIDENT_MANAGE'" :disabled="disabled"
+										  @successUploader="successUploader"></uploaderFile>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -221,6 +222,7 @@
 import AccidentName from '/@/views/accidentManagementSystem/workInjuryDeclaration/component/accidentName.vue';
 import RegionsDialog from '/@/components/regionsDialog/index.vue';
 import uploaderImg from '/@/components/uploaderImg/index.vue';
+import uploaderFile from '/@/components/uploaderFile/index.vue';
 import { emergencySuppliesApi } from '/@/api/contingencyManagement/emergencyResources';
 import { accidentManagementSystemApi } from '/@/api/workInjuryDeclaration';
 import { goalManagementApi } from '/@/api/goalManagement';
@@ -231,7 +233,8 @@
 		AccidentName,
 		DailogSearchUserManger,
 		RegionsDialog,
-		uploaderImg
+		uploaderImg,
+		uploaderFile
 	},
 	setup(props, { emit }) {
 		const isShowDialog = ref(false);
@@ -266,6 +269,8 @@
 		const titles = ref();
 		const disabled = ref();
 		const statusDisabled = ref(true)
+		// 上传附件
+		const fileList = ref([]);
 		// 打开弹窗
 		const openDialog = (title: string, id: number, type: boolean,statusDisabledFlag:string) => {
 			isShowDialog.value = true;
@@ -291,18 +296,53 @@
 							accidentDepartmentId.value = res.data.data.accidentDepartmentId
 							occurrencePlace.value = res.data.data.occurrencePlace
 							occurrenceTime.value = res.data.data.occurrenceTime
+							fileList.value = (res.data.data.fileList?res.data.data.fileList:[])
+							initFileListData()
 						}
 					});
 			}
 		};
+		const initFileListData = async () => {
+			//事故照片
+			if(ruleForm.value.expressFileList){
+				for(var a = 0;a<ruleForm.value.expressFileList.length;a++){
+					await goalManagementApi()
+							.searchFile(ruleForm.value.expressFileList[a].fileName)
+							.then((res) => {
+								ruleForm.value.expressFileList[a].url = res.data
+								console.log('ruleForm',ruleForm)
+							})
+				}
+			}else {
+				ruleForm.value.expressFileList = []
+			}
+
+			// 事故分析会议纪要
+			for(var a = 0;a<fileList.value.length;a++){
+				fileList.value[a].name = fileList.value[a].fileName
+			}
+		}
+		// 上传成功组装数据
+		const successUploader = (list) =>{
+			fileList.value = list
+			const formFileList = []
+			for(var a = 0;a<fileList.value.length;a++){
+				formFileList.push(
+						{
+							fileName:fileList.value[a].fileName,
+							fileUrl:''
+						}
+				)
+			}
+			ruleForm.value.fileList = formFileList
+		}
 		// 取消
 		const onCancel = (formEl: FormInstance | undefined) => {
 			resetForm(formEl);
 		};
 		//日期选择器
 		const value1 = ref('');
-		// 上传附件
-		const fileList = ref<UploadUserFile[]>([]);
+
 		// 可选择树
 		const treeSelect = ref();
 		//定义树形下拉框
@@ -423,7 +463,9 @@
 			delete ruleForm.value.accidentDepartmentId
 			delete ruleForm.value.occurrencePlace
 			delete ruleForm.value.occurrenceTime
-
+			if(!ruleForm.value.fileList){
+				ruleForm.value.fileList = []
+			}
 			if (title == '新建事故报告') {
 				if (!formEl) return;
 				await formEl.validate((valid, fields) => {
@@ -458,7 +500,6 @@
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						//TODO 上传组件待定
-						ruleForm.value.fileList = []
 						isShowDialog.value = false;
 						accidentManagementSystemApi()
 							.editAccidentReport(ruleForm.value)
@@ -512,12 +553,14 @@
 				};
 			}
 		};
+
 		const resetForm = (formEl: FormInstance | undefined) => {
 			isShowDialog.value = false;
 			if (!formEl) return;
 			formEl.resetFields();
 			// ruleForm.value.accidentExpressId = item[0].id
 			ruleForm.value = {}
+			fileList.value = []
 			accidentName.value = ''
 			accidentDepartmentId.value = ''
 			occurrencePlace.value = ''
@@ -629,7 +672,9 @@
 			accidentDepartmentId,
 			occurrencePlace,
 			occurrenceTime,
-			accidentName
+			accidentName,
+			successUploader,
+			initFileListData
 		};
 	},
 });
diff --git a/src/views/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue b/src/views/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue
index 9cad19d..3c9b50a 100644
--- a/src/views/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue
+++ b/src/views/accidentManagementSystem/workInjuryDeclaration/component/openAdd.vue
@@ -81,7 +81,8 @@
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 						<el-form-item label="相关附件">
-							<uploaderImg :fileList="fileList" :disabled="disabled"></uploaderImg>
+							<uploaderImg :fileList="fileList" :name="INCIDENT_MANAGE"
+										 @successUploader="successUploader" :disabled="disabled"></uploaderImg>
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -184,10 +185,35 @@
 					.then((res) => {
 						if (res.data.code == 200) {
 							ruleForm.value = res.data.data;
+							fileList.value = (res.data.data.fileList?res.data.data.fileList:[])
+							initFileListData()
 						}
 					});
 			}
 		};
+		const initFileListData = async () => {
+			for(var a = 0;a<fileList.value.length;a++){
+				await goalManagementApi()
+						.searchFile(fileList.value[a].fileName)
+						.then((res) => {
+							fileList.value[a].url = res.data
+						})
+			}
+		}
+		// 上传成功组装数据
+		const successUploader = (list) =>{
+			fileList.value = list
+			const formFileList = []
+			for(var a = 0;a<fileList.value.length;a++){
+				formFileList.push(
+						{
+							fileName:fileList.value[a].fileName,
+							fileUrl:''
+						}
+				)
+			}
+			ruleForm.value.fileList = formFileList
+		}
 		//日期选择器
 		const value1 = ref('');
 		// 上传附件
@@ -241,6 +267,7 @@
 		// 关闭弹窗
 		const closeDialog = (formEl: FormInstance | undefined) => {
 			formEl.resetFields();
+			fileList.value=[]
 			isShowDialog.value = false;
 		};
 		// 必填项提示
@@ -346,12 +373,14 @@
 		};
 		// 表单提交验证必填项
 		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if(!ruleForm.value.fileList){
+				ruleForm.value.fileList = []
+			}
 			if (title == '新建工伤申报') {
 				if (!formEl) return;
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						isShowDialog.value = false;
-						ruleForm.value.fileList=[]
 						delete ruleForm.value.accidentName
 						delete ruleForm.value.occurrenceTime
 						delete ruleForm.value.id
@@ -384,7 +413,6 @@
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						isShowDialog.value = false;
-						ruleForm.value.fileList=[]
 						delete ruleForm.value.accidentName
 						delete ruleForm.value.occurrenceTime
 						accidentManagementSystemApi()
@@ -491,7 +519,9 @@
 			newTreeList,
 			propse,
 			closeDialog,
-			uploaderImg
+			uploaderImg,
+			successUploader,
+			initFileListData
 		};
 	},
 });
diff --git a/src/views/contingencyManagement/contingency/component/openAdd.vue b/src/views/contingencyManagement/contingency/component/openAdd.vue
index d5495f2..a36d5c7 100644
--- a/src/views/contingencyManagement/contingency/component/openAdd.vue
+++ b/src/views/contingencyManagement/contingency/component/openAdd.vue
@@ -52,17 +52,8 @@
                     </el-col>
                     <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
                         <el-form-item label="相关附件" prop="fileList">
-                            <el-upload
-                                    v-model:file-list="fileList"
-                                    class="upload-demo"
-                                    action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-                                    :on-change="handleChange"
-                            >
-                                <el-button type="primary">点击上传</el-button>
-                                <template #tip>
-                                    <div class="el-upload__tip">添加相关附件</div>
-                                </template>
-                            </el-upload>
+                            <uploaderFile :fileList="fileList" :systemName="'EMERGENCY'" :disabled="disabled"
+                                          @successUploader="successUploader"></uploaderFile>
                         </el-form-item>
                     </el-col>
                 </el-row>
@@ -142,6 +133,7 @@
     import DailogSearchUserManger from "/@/components/DailogSearchUserManger/index.vue"
     import {contingencyApi} from "/@/api/contingencyManagement/contingency";
     import {goalManagementApi} from "/@/api/goalManagement";
+    import uploaderFile from '/@/components/uploaderFile/index.vue';
     // import {releaseDrillPlanApi} from "/@/api/releaseDrillPlan";
 
 
@@ -150,6 +142,7 @@
         components: {
             AddEmergencyPersonnel,
             DailogSearchUserManger,
+            uploaderFile
         },
         setup(prop, {emit}) {
             const isShowDialog = ref(false);
@@ -188,14 +181,34 @@
                         .then((res) => {
                             if (res.data.code == 200) {
                                 ruleForm.value = res.data.data;
+                                fileList.value = (res.data.data.fileList?res.data.data.fileList:[])
+                                initFileListData()
                                 listApi()
                             }
                         });
                 }
             }
             // 上传附件
-            const fileList = ref<UploadUserFile[]>([])
-
+            const fileList = ref([])
+            const initFileListData = async () => {
+                for(var a = 0;a<fileList.value.length;a++){
+                    fileList.value[a].name = fileList.value[a].fileName
+                }
+            }
+            // 上传成功组装数据
+            const successUploader = (list) =>{
+                fileList.value = list
+                const formFileList = []
+                for(var a = 0;a<fileList.value.length;a++){
+                    formFileList.push(
+                        {
+                            fileName:fileList.value[a].fileName,
+                            fileUrl:''
+                        }
+                    )
+                }
+                ruleForm.value.fileList = formFileList
+            }
             //定义树形下拉框
             const principalDepartmentId = ref()
             const data = ref()
@@ -313,6 +326,9 @@
                 }
             };
             const onSubmit = async (title: string, formEl: FormInstance | undefined) => {
+                if(!ruleForm.value.fileList){
+                    ruleForm.value.fileList = []
+                }
                 if (title == '新建应急队伍管理') {
                     if (!formEl) return;
                     await formEl.validate((valid, fields) => {
@@ -346,7 +362,6 @@
                     if (!formEl) return;
                     await formEl.validate((valid, fields) => {
                         if (valid) {
-                          ruleForm.value.fileList=[]
                             isShowDialog.value = false;
                             contingencyApi()
                                 .editEmergencyTeam(ruleForm.value)
@@ -390,6 +405,7 @@
                 isShowDialog.value = false;
                 if (!formEl) return;
                 formEl.resetFields();
+                fileList.value = []
                 tableData.value=[]
                 ruleForm.value = {}
             };
@@ -494,7 +510,9 @@
                 department,
                 peopleInsertBtn,
                 teamId,
-                newTreeList
+                newTreeList,
+                successUploader,
+                initFileListData
             };
         },
     });
diff --git a/src/views/contingencyManagement/contingency/index.vue b/src/views/contingencyManagement/contingency/index.vue
index 69ae1a4..597ec02 100644
--- a/src/views/contingencyManagement/contingency/index.vue
+++ b/src/views/contingencyManagement/contingency/index.vue
@@ -79,7 +79,9 @@
         </el-table-column>
         <el-table-column prop="teamDesc" label="队伍描述" show-overflow-tooltip sortable></el-table-column>
         <el-table-column prop="principalPhone" label="负责人手机" show-overflow-tooltip sortable></el-table-column>
-        <el-table-column prop="attachments" label="相关附件" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="fileList" label="相关附件" show-overflow-tooltip sortable>
+
+        </el-table-column>
         <el-table-column label="操作" width="200" align="center" fixed="right">
           <template #default="scope">
             <el-button size="small" text type="primary" @click="onEdit('详情',scope.row.id)">
@@ -179,6 +181,11 @@
       let res = await contingencyApi().getTeamManagementList(listQuery)
       if(res.data.code === '200'){
         tableData.value = res.data.data;
+        for(var a = 0;a<tableData.value.length;a++){
+          if(tableData.value[a].fileList!=null&&tableData.value[a].fileList!=''&&tableData.value[a].fileList.length!=0){
+            tableData.value[a].fileList = tableData.value[a].fileList[0].fileName
+          }
+        }
         pageIndex.value = res.data.pageIndex;
         pageSize.value = res.data.pageSize;
         total.value = res.data.total;
diff --git a/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue
index 81b4674..327405b 100644
--- a/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue
+++ b/src/views/contingencyManagement/emergencyDrill/drillImplementationEvaluation/component/approvalProgress.vue
@@ -167,20 +167,7 @@
           </el-col>
           <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" style="margin-bottom: 0!important;">
             <el-form-item label="预案附件">
-              <el-upload
-                  v-model:file-list="fileList"
-                  class="upload-demo"
-                  action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-                  :on-change="handleChange"
-              >
-                <el-button type="primary"
-                >点击上传</el-button>
-                <template #tip>
-                  <div class="el-upload__tip">
-                    添加相关附件
-                  </div>
-                </template>
-              </el-upload>
+              <uploaderFile :fileList="ruleForm.planFileList" :disabled="true"></uploaderFile>
             </el-form-item>
           </el-col>
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -368,20 +355,8 @@
           </el-col>
           <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
             <el-form-item label="附件列表">
-              <el-upload
-                  v-model:file-list="ruleForm.userList"
-                  class="upload-demo"
-                  action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-                  :on-change="handleChange"
-              >
-                <el-button type="primary"
-                >点击上传</el-button>
-                <template #tip>
-                  <div class="el-upload__tip">
-                    添加相关附件
-                  </div>
-                </template>
-              </el-upload>
+              <uploaderFile :fileList="fileList" :systemName="'EMERGENCY'" :disabled="disabled"
+                            @successUploader="successUploader"></uploaderFile>
             </el-form-item>
           </el-col>
         </el-row>
@@ -421,12 +396,14 @@
 import DailogSearchUser from "/@/components/DailogSearchUser/index.vue"
 import {emergencyDrillEvaluationApi} from "/@/api/contingencyManagement/emergencyDrillEvaluation";
 import {goalManagementApi} from "/@/api/goalManagement";
+import uploaderFile from '/@/components/uploaderFile/index.vue';
 export default defineComponent({
   name: 'approvalProgress',
   components: {
     UserSelections,
     RegionsDialog,
-    DailogSearchUser
+    DailogSearchUser,
+    uploaderFile
   },
   setup(props, { emit }) {
     const isShowDialog = ref(false)
@@ -512,6 +489,8 @@
                   ruleForm.value.evaluationUserListString += res.data.data.evaluationUserList[a].userName+';'
                 }
               }
+              fileList.value = (res.data.data.evaluationFileList?res.data.data.evaluationFileList:[])
+              initFileListData()
             });
       }
       if(title=='演练实施评价'){
@@ -548,6 +527,8 @@
                       }
                     }
                   }
+                  fileList.value = (res.data.data.evaluationFileList?res.data.data.evaluationFileList:[])
+                  initFileListData()
                 });
       }
       if(title=='演练实施查看评价'){
@@ -584,15 +565,41 @@
                         ruleForm.value.evaluationUserListString += res.data.data.evaluationUserList[a].userName+';'
                       }
                     }
-
+                    fileList.value = (res.data.data.evaluationFileList?res.data.data.evaluationFileList:[])
+                    initFileListData()
                   }
                 });
       }
+
     };
+    const initFileListData = async () => {
+      for(var a = 0;a<ruleForm.value.planFileList.length;a++){
+        ruleForm.value.planFileList[a].name = ruleForm.value.planFileList[a].fileName
+      }
+      // 事故分析会议纪要
+      for(var a = 0;a<fileList.value.length;a++){
+        fileList.value[a].name = fileList.value[a].fileName
+      }
+    }
+    // 上传成功组装数据
+    const successUploader = (list) =>{
+      fileList.value = list
+      const formFileList = []
+      for(var a = 0;a<fileList.value.length;a++){
+        formFileList.push(
+                {
+                  fileName:fileList.value[a].fileName,
+                  fileUrl:''
+                }
+        )
+      }
+      ruleForm.value.fileList = formFileList
+    }
     const resetForm = (formEl: FormInstance | undefined) => {
       isShowDialog.value = false;
       if (!formEl) return;
       formEl.resetFields();
+      fileList.value = []
     };
     // 关闭弹窗
     const closeDialog = () => {
@@ -605,7 +612,7 @@
     //日期选择器
     const value1 = ref('')
     // 上传附件
-    const fileList = ref<UploadUserFile[]>([])
+    const fileList = ref([])
     // 可选择树
     const treeSelect = ref()
     const tree = [
@@ -663,6 +670,9 @@
     // })
 
     const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+      if(!ruleForm.value.fileList){
+        ruleForm.value.fileList = []
+      }
       //演练负责人(评价)
       ruleForm.value.userList = ruleForm.value.evaluationUserList
 
@@ -861,7 +871,9 @@
       newTreeList,
       selectUser,
       submitForm,
-      realRuleForm
+      realRuleForm,
+      successUploader,
+      initFileListData
     };
   },
 });
diff --git a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue
index 8325c4b..8f988a3 100644
--- a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue
+++ b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue
@@ -162,20 +162,8 @@
           </el-col>
           <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" style="margin-bottom: 0!important;">
             <el-form-item label="预案附件">
-              <!--<el-upload-->
-                  <!--v-model:file-list="fileList"-->
-                  <!--class="upload-demo"-->
-                  <!--action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"-->
-                  <!--:on-change="handleChange"-->
-              <!--&gt;-->
-                <!--<el-button type="primary"-->
-                <!--&gt;点击上传</el-button>-->
-                <!--<template #tip>-->
-                  <!--<div class="el-upload__tip">-->
-                    <!--添加相关附件-->
-                  <!--</div>-->
-                <!--</template>-->
-              <!--</el-upload>-->
+              <uploaderFile :fileList="fileList" :systemName="'EMERGENCY'" :disabled="disabled"
+                            @successUploader="successUploader"></uploaderFile>
             </el-form-item>
           </el-col>
         </el-row>
@@ -215,12 +203,13 @@
 import {releaseDrillPlanApi} from "/@/api/contingencyManagement/emergencyDrillPlan";
 import {goalManagementApi} from "/@/api/goalManagement";
 import { Session } from '/@/utils/storage';
-
+import uploaderFile from '/@/components/uploaderFile/index.vue';
 export default defineComponent({
   name: 'openAdd',
   components: {
     RegionsDialog,
-    DailogSearchUser
+    DailogSearchUser,
+    uploaderFile
   },
   setup(props, { emit }) {
     const isShowDialog = ref(false)
@@ -281,14 +270,35 @@
                 for(var a = 0;a<res.data.data.chargeUserList.length;a++){
                   ruleForm.value.chargeUserListString += res.data.data.chargeUserList[a].userName+';'
                 }
+                fileList.value = (res.data.data.fileList?res.data.data.fileList:[])
+                initFileListData()
               }
             });
       }
     };
+    const initFileListData = async () => {
+      for(var a = 0;a<fileList.value.length;a++){
+        fileList.value[a].name = fileList.value[a].fileName
+      }
+    }
+    // 上传成功组装数据
+    const successUploader = (list) =>{
+      fileList.value = list
+      const formFileList = []
+      for(var a = 0;a<fileList.value.length;a++){
+        formFileList.push(
+                {
+                  fileName:fileList.value[a].fileName,
+                  fileUrl:''
+                }
+        )
+      }
+      ruleForm.value.fileList = formFileList
+    }
     //日期选择器
     const value1 = ref('')
     // 上传附件
-    const fileList = ref<UploadUserFile[]>([])
+    const fileList = ref([])
     // 可选择树
     const treeSelect = ref()
     const tree = [
@@ -318,6 +328,9 @@
     });
     // 表单提交验证必填项
     const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+      if(!ruleForm.value.fileList){
+        ruleForm.value.fileList = []
+      }
       ruleForm.value.userList = ruleForm.value.userList.concat(ruleForm.value.chargeUserList)
       delete ruleForm.value.planName
       delete ruleForm.value.chargeUserListString
@@ -412,6 +425,7 @@
     }
     const resetForm = (formEl: FormInstance | undefined) => {
       isShowDialog.value = false;
+      fileList.value=[]
       if (!formEl) return;
       ruleForm.value = {
         makingPlanDate: '', // 计划制定日期
@@ -473,7 +487,6 @@
         )
         ruleForm.value.userListString+=e[a].realName+';'
       }
-
     };
     const SearchFZUser = (e:any) => {
       console.log('演练负责人员',e[0].userName)
@@ -532,7 +545,9 @@
       onUser,
       userFZRef,
       SearchUser,
-      SearchFZUser
+      SearchFZUser,
+      successUploader,
+      initFileListData
     };
   },
 });
diff --git a/src/views/contingencyManagement/panManagement/component/openAdd.vue b/src/views/contingencyManagement/panManagement/component/openAdd.vue
index 6a6bd50..4114bb7 100644
--- a/src/views/contingencyManagement/panManagement/component/openAdd.vue
+++ b/src/views/contingencyManagement/panManagement/component/openAdd.vue
@@ -106,17 +106,8 @@
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 						<el-form-item label="相关附件">
-							<el-upload
-								v-model:file-list="fileList"
-								class="upload-demo"
-								action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-								:on-change="handleChange"
-							>
-								<el-button type="primary">点击上传</el-button>
-								<template #tip>
-									<div class="el-upload__tip">添加相关附件</div>
-								</template>
-							</el-upload>
+							<uploaderFile :fileList="fileList" :systemName="'EMERGENCY'" :disabled="disabled"
+										  @successUploader="successUploader"></uploaderFile>
 						</el-form-item>
 					</el-col>
 					<!--          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
@@ -158,13 +149,14 @@
 import RegionsDialog from '/@/components/regionsDialog/index.vue';
 import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
 import { goalManagementApi } from '/@/api/goalManagement';
-
+import uploaderFile from '/@/components/uploaderFile/index.vue';
 export default defineComponent({
 	name: 'openAdd',
 	components: {
 		CheckTemplate,
 		DailogSearchUserManger,
 		RegionsDialog,
+		uploaderFile
 	},
 	setup(prop, { emit }) {
 		const isShowDialog = ref(false);
@@ -211,15 +203,35 @@
 									responsibleDepartment.value.push(res.data.data.deptList[a].departmentId)
 								}
 							}
-
+							fileList.value = (res.data.data.fileList?res.data.data.fileList:[])
+							initFileListData()
 						}
 					});
 			}
 		};
+		const initFileListData = async () => {
+			for(var a = 0;a<fileList.value.length;a++){
+				fileList.value[a].name = fileList.value[a].fileName
+			}
+		}
+		// 上传成功组装数据
+		const successUploader = (list) =>{
+			fileList.value = list
+			const formFileList = []
+			for(var a = 0;a<fileList.value.length;a++){
+				formFileList.push(
+						{
+							fileName:fileList.value[a].fileName,
+							fileUrl:''
+						}
+				)
+			}
+			ruleForm.value.fileList = formFileList
+		}
 		//日期选择器
 		const releaseDate = ref('');
 		// 上传附件
-		const fileList = ref<UploadUserFile[]>([]);
+		const fileList = ref([]);
 		//el-tree-select回显
 		const propse = {
 			label: 'depName',
@@ -272,6 +284,9 @@
 		const data = ref();
 
 		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if(!ruleForm.value.fileList){
+				ruleForm.value.fileList = []
+			}
 			if (title == '新建应急预案管理') {
 				if (!formEl) return;
 				await formEl.validate((valid, fields) => {
@@ -306,10 +321,9 @@
 				if (!formEl) return;
 				await formEl.validate((valid, fields) => {
 					if (valid) {
-            ruleForm.value.fileList=[]
-            isShowDialog.value = false;
-            delete ruleForm.value.teamName
-            emergencyPlanApi()
+						isShowDialog.value = false;
+						delete ruleForm.value.teamName
+						emergencyPlanApi()
 							.editEmergencyTeam(ruleForm.value)
 							.then((res) => {
 								if (res.data.code == 200) {
@@ -356,6 +370,7 @@
 			if (!formEl) return;
 			formEl.resetFields();
 			ruleForm.value = {};
+			fileList.value = []
 		};
 		// 应急队伍弹窗
 		const Shows = ref();
@@ -429,6 +444,8 @@
 			onUser,
 			newTreeList,
 			changeDepartment,
+			successUploader,
+			initFileListData
 		};
 	},
 });
diff --git a/src/views/goalManagement/TargetBook/component/DailogAdd.vue b/src/views/goalManagement/TargetBook/component/DailogAdd.vue
index 06e9ea2..42054f9 100644
--- a/src/views/goalManagement/TargetBook/component/DailogAdd.vue
+++ b/src/views/goalManagement/TargetBook/component/DailogAdd.vue
@@ -1,5 +1,5 @@
 <template>
-	<el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable>
+	<el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable @close="resetForm">
 		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
 		<el-form :model="form" :disabled="disabled" label-width="120px">
 			<el-row>
@@ -28,22 +28,8 @@
 			<el-row>
 				<el-col :span="24">
 					<el-form-item label="责任书附件">
-						<el-upload
-							v-model:file-list="fileList"
-							class="upload-demo"
-							action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-							multiple
-							:on-preview="handlePreview"
-							:on-remove="handleRemove"
-							:before-remove="beforeRemove"
-							:limit="3"
-							:on-exceed="handleExceed"
-						>
-							<el-button type="primary">点击上传</el-button>
-							<template #tip>
-								<div class="el-upload__tip">添加相关附件</div>
-							</template>
-						</el-upload>
+						<uploaderFile :fileList="fileList" :systemName="'GOAL_MANAGE'" :disabled="disabled"
+									  @successUploader="successUploader" @deleteFile="deleteFile"></uploaderFile>
 					</el-form-item>
 				</el-col>
 			</el-row>
@@ -64,8 +50,9 @@
 import { ElMessage, ElMessageBox } from 'element-plus';
 import type { UploadProps, UploadUserFile } from 'element-plus';
 import { goalManagementApi } from '/@/api/goalManagement';
+import uploaderFile from '/@/components/uploaderFile/index.vue';
 export default defineComponent({
-	components: { DailogSearch },
+	components: { DailogSearch,uploaderFile },
 	setup(props, { emit }) {
 		const dialogVisible = ref<boolean>(false);
 		const form = ref({
@@ -89,12 +76,53 @@
 						if (res.data.code == 200) {
 							form.value = res.data.data;
 							form.value.signDate=timeC(form.value.signDate)
+
+
+							if(res.data.data.extraFile!=null&&res.data.data.extraFile!=''){
+								var extraFileList = res.data.data.extraFile.split(',')
+								for(var a = 0;a<extraFileList.length;a++){
+									fileList.value.push(
+											{
+												name:extraFileList[a]
+											}
+									)
+								}
+							}else {
+								fileList.value = []
+							}
 						} else {
 							ElMessage.error(res.data.msg);
 						}
 					});
 		};
-			const timeC = (timestamp: any) => {
+		// 上传成功组装数据
+		const successUploader = (list) =>{
+			console.log('successUploader',list)
+			fileList.value = list
+			var formFileList = ''
+			for(var a = 0;a<fileList.value.length;a++){
+				if(a==fileList.value.length-1){
+					formFileList+=fileList.value[a].name
+				}else {
+					formFileList+=fileList.value[a].name+','
+				}
+			}
+			form.value.extraFile = formFileList
+		}
+		const deleteFile = (list) =>{
+			console.log('deleteFile',list)
+			fileList.value = list
+			const formFileList = ''
+			for(var a = 0;a<fileList.value.length;a++){
+				if(a==fileList.value.length-1){
+					formFileList.value+=fileList.value[a].name
+				}else {
+					formFileList.value+=fileList.value[a].name+','
+				}
+			}
+			form.value.extraFile = formFileList
+		}
+		const timeC = (timestamp: any) => {
 			let a = new Date(timestamp).getTime();
 			const date = new Date(a);
 			const Y = date.getFullYear() + '-';
@@ -142,6 +170,7 @@
 				extraFile: '666', //责任书附件
 				jobId: '', //岗位
 			};
+			fileList.value = []
 		};
 		// 安全目标指标弹窗
 		const Shows = ref();
@@ -153,7 +182,7 @@
 		 form.value.jobName=val.date
 		}
 		// 点击上传
-		const fileList = ref<UploadUserFile[]>([
+		const fileList = ref([
 		]);
 
 		const handleRemove: UploadProps['onRemove'] = (file, uploadFiles) => {
@@ -204,6 +233,8 @@
 			full,
 			toggleFullscreen,
 			FullScreen,
+			successUploader,
+			deleteFile
 		};
 	},
 });
diff --git a/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue b/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue
index ef2895f..3bb2d2b 100644
--- a/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue
+++ b/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue
@@ -79,23 +79,9 @@
 			</el-row>
 			<el-row>
 				<el-col :span="24">
-					<el-form-item label="考核模板">
-						<el-upload
-							v-model:file-list="fileList"
-							class="upload-demo"
-							action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-							multiple
-							:on-preview="handlePreview"
-							:on-remove="handleRemove"
-							:before-remove="beforeRemove"
-							:limit="3"
-							:on-exceed="handleExceed"
-						>
-							<el-button type="primary">点击上传</el-button>
-							<template #tip>
-								<div class="el-upload__tip">添加相关附件</div>
-							</template>
-						</el-upload>
+					<el-form-item label="附件">
+						<uploaderFile :fileList="fileList" :systemName="'GOAL_MANAGE'" :disabled="disabled"
+									  @successUploader="successUploader" @deleteFile="deleteFile"></uploaderFile>
 					</el-form-item>
 				</el-col>
 			</el-row>
@@ -154,8 +140,9 @@
 import { goalManagementApi } from '/@/api/goalManagement';
 import type { UploadProps, UploadUserFile } from 'element-plus';
 import type { FormInstance, FormRules } from 'element-plus';
+import uploaderFile from '/@/components/uploaderFile/index.vue';
 export default defineComponent({
-	components: { DailogSearchUser, DailogSearch },
+	components: { DailogSearchUser, DailogSearch,uploaderFile },
 	setup(props, { emit }) {
 		const dialogVisible = ref<boolean>(false);
 		const ruleFormRef = ref<FormInstance>();
@@ -173,7 +160,7 @@
 			examineTemplateName: '',
 			examineTotalNumber: '', ////总分
 			acceptanceNumber: '', ///合格分数
-			extraFile: '9', //责任书附件
+			extraFile: '', //责任书附件
 			itemDetail: '', ////考核项目
 			memo: '', ////备注信息
 			numberDetailJson: [], ////各个考核项目的具体得分,json格式。形式为:[{“id”:"123","number":"123"}]
@@ -195,11 +182,55 @@
 							form.value = res.data.data;
 							form.value.examineDate = timeC(form.value.examineDate);
 							form.value.numberDetailJson = form.value.currentExamineDtoList;
+
+
+							if(res.data.data.extraFile!=null&&res.data.data.extraFile!=''){
+								var extraFileList = res.data.data.extraFile.split(',')
+								for(var a = 0;a<extraFileList.length;a++){
+									fileList.value.push(
+											{
+												name:extraFileList[a]
+											}
+									)
+								}
+							}else {
+								fileList.value = []
+							}
+
+							// fileList.value = (res.data.data.fileList?res.data.data.fileList:[])
 						} else {
 							ElMessage.error(res.data.msg);
 						}
 					});
 		};
+		// 上传成功组装数据
+		const successUploader = (list) =>{
+			console.log('successUploader',list)
+			fileList.value = list
+			var formFileList = ''
+			for(var a = 0;a<fileList.value.length;a++){
+				if(a==fileList.value.length-1){
+					formFileList+=fileList.value[a].name
+				}else {
+					formFileList+=fileList.value[a].name+','
+				}
+			}
+			form.value.extraFile = formFileList
+		}
+		const deleteFile = (list) =>{
+			console.log('deleteFile',list)
+			fileList.value = list
+			const formFileList = ''
+			for(var a = 0;a<fileList.value.length;a++){
+				if(a==fileList.value.length-1){
+					formFileList.value+=fileList.value[a].name
+				}else {
+					formFileList.value+=fileList.value[a].name+','
+				}
+			}
+			form.value.extraFile = formFileList
+		}
+
 		const timeC = (timestamp: any) => {
 			let a = new Date(timestamp).getTime();
 			const date = new Date(a);
@@ -287,6 +318,7 @@
 		const handleClose = (formEl: FormInstance | undefined) => {
 			if (!formEl) return;
 			formEl.resetFields();
+			fileList.value=[]
 		};
 		const activeName = ref('1');
 		// 新增弹窗
@@ -404,6 +436,8 @@
 			full,
 			toggleFullscreen,
 			FullScreen,
+			successUploader,
+			deleteFile
 		};
 	},
 });

--
Gitblit v1.9.2