From 2aac44c550cdb242225a2a18f7238fb41c618779 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期一, 06 一月 2025 09:21:57 +0800
Subject: [PATCH] bug修改

---
 src/views/safetyReview/projectManage/components/employNoticeRecord.vue |  126 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 124 insertions(+), 2 deletions(-)

diff --git a/src/views/safetyReview/projectManage/components/employNoticeRecord.vue b/src/views/safetyReview/projectManage/components/employNoticeRecord.vue
index 4a7ae99..d84f6ee 100644
--- a/src/views/safetyReview/projectManage/components/employNoticeRecord.vue
+++ b/src/views/safetyReview/projectManage/components/employNoticeRecord.vue
@@ -64,12 +64,31 @@
         </el-table-column>
       </el-table>
     </el-form>
+    <el-upload
+        style="margin-top: 25px;width: 250px"
+        :disabled="projectType === 'view' || isEnd"
+        accept=".pdf"
+        :action="state.uploadUrl"
+        :data="{moduleType: 12,projectId: props.projectId}"
+        :headers="state.header"
+        method="post"
+        :limit="state.imgLimit"
+        :before-upload="beforeUpload"
+        :on-success="handleAvatarSuccess"
+        v-model:file-list="state.fileList"
+        :on-preview="handlePreview"
+        :on-remove="handleRemove">
+      <el-button type="primary">上传从业告知书pdf</el-button>
+      <template #tip>
+        <div class="el-upload__tip">只能上传pdf类型,最多上传1份</div>
+      </template>
+    </el-upload>
   </div>
 </template>
 <script setup>
 
 import {defineEmits, defineProps, onMounted, reactive, ref, watchEffect} from "vue"
-import {ElMessage} from "element-plus"
+import {ElMessage, ElMessageBox} from "element-plus"
 import {Search} from '@element-plus/icons-vue'
 import {addWorkRecord, editWorkRecord, getWorkDetail} from "@/api/projectManage/employNoticeRcd"
 import {getWorks, editWorks} from "@/api/projectManage/evaPlan"
@@ -77,6 +96,10 @@
 const props = defineProps(['projectId'])
 const emit = defineEmits(["getNextStatus"])
 import { useRoute } from 'vue-router'
+import {getToken} from "@/utils/auth";
+import {getFiles} from "@/api/projectManage/siteCheckRcd";
+import {delAccessoryFile} from "@/api/projectManage/project";
+import axios from "axios";
 const route = useRoute()
 const state = reactive({
   formData: {
@@ -92,9 +115,16 @@
   rules: {
     timeRange: [{required: true, message: '请选择技术服务期限', trigger: 'blur'}],
     investigationPlanDate: [{required: true, message: '请选择计划现场勘验时间', trigger: 'blur'}]
-  }
+  },
+  imgLimit: 1,
+  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/manage/accessory-file/uploadFile',
+  header: {
+    Authorization: getToken()
+  },
+  fileList: []
 })
 
+const isEnd = ref('')
 const isAmin = ref(false)
 const formRef = ref()
 onMounted(() => {
@@ -104,7 +134,9 @@
   }
   if(props.projectId){
     getWorksList(props.projectId)
+    getProcessFiles(props.projectId);
   }
+  isEnd.value = Cookies.get('end')
 
 });
 
@@ -113,12 +145,19 @@
   state.formData.projectId = val
   state.projectId = val
   projectType.value = route.query.type;
+  isEnd.value = Cookies.get('end')
   // await getWorksList(val)
   if(type === 'detail' || type === 'edit' ){
     const res = await getWorkDetail({projectId: val})
     if(res.code == 200){
       state.formData = JSON.parse(JSON.stringify(res.data))
       state.formData.timeRange = [state.formData.serviceStartDate,state.formData.serviceEndDate]
+      // state.fileList = res.data.accessoryFiles.map(item => {
+      //   return {
+      //     ...item,
+      //     name: item.originName,
+      //   }
+      // })
     }else {
       ElMessage.warning(res.message)
     }
@@ -189,7 +228,90 @@
   }
   await getWorksList(props.projectId)
 }
+const beforeUpload = (file) => {
+  let fileType = file.name.substring(file.name.lastIndexOf(".") + 1);
+  if (fileType === 'pdf') {
+  } else {
+    ElMessage.error("文件类型必须为pdf格式")
+    return false
+  }
+}
+const handleAvatarSuccess = (res) => {
+  if(res.code === 200){
+    getProcessFiles()
+    ElMessage({
+      type: 'success',
+      message: '文件上传成功'
+    })
+  }else {
+    state.fileList.splice(state.fileList.indexOf(uploadFile),1)
+    ElMessage({
+      type: 'warning',
+      message: res.message
+    })
+  }
+}
+const handleRemove = async (file, uploadFiles) => {
+  if (file && file.status === 'success') {
+    ElMessageBox.confirm(
+        '确定删除该附件?',
+        '提示',
+        {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning',
+        })
+        .then(async () => {
+          let accessoryFileId = "";
+          if (file.id) {
+            accessoryFileId = file.id
+          } else {
+            accessoryFileId = file.response.data.id
+          }
+          const res = await delAccessoryFile(accessoryFileId)
+          if (res.code == 200) {
+            ElMessage({
+              type: 'success',
+              message: '文件已删除'
+            })
+            await getProcessFiles()
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: res.message
+            })
+          }
+        })
+        .catch(() => {
+          getProcessFiles()
+        })
+  }
+}
 
+const getProcessFiles = async (id)=>{
+  const res = await getFiles({projectId: id ? id : props.projectId ,moduleType: 12})
+  if(res.code == 200){
+    if(res.data && res.data.length>0){
+      state.fileList = res.data.map(i=>{
+        return {
+          name: i.originName,
+          url: import.meta.env.VITE_APP_BASE_API + '/' + i.path,
+          id: i.id,
+          projectId: i.projectId,
+          moduleType: i.moduleType
+        }
+      })
+    }else{
+      state.fileList = []
+    }
+  }else {
+    ElMessage.warning(res.message)
+  }
+}
+const handlePreview = (file) => {
+  const url = file.url
+  window.open(url)
+}
 defineExpose({
   riskOpen
 });

--
Gitblit v1.9.2