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"--> - <!-->--> - <!--<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> @@ -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