From 3f6bf89b1985b6668f02ffcc9af577b412e92e45 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期一, 24 三月 2025 17:17:45 +0800
Subject: [PATCH] bug修改

---
 src/views/safetyReview/projectManage/process.vue |  298 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 261 insertions(+), 37 deletions(-)

diff --git a/src/views/safetyReview/projectManage/process.vue b/src/views/safetyReview/projectManage/process.vue
index 2c3a2c9..d0a9785 100644
--- a/src/views/safetyReview/projectManage/process.vue
+++ b/src/views/safetyReview/projectManage/process.vue
@@ -3,8 +3,10 @@
     <div class="flow">
       <div class="content"  :class="{show: isShowMenu}" >
         <div class="content-middle" @click="clickMenu(true)">
-          <div style="margin-right:20px;height: 85px;display: flex;align-items: center;flex-shrink: 1;">
-            <img :src="projectPng">
+          <div class="project-title">
+<!--            <img :src="projectPng">-->
+            <span>项目</span>
+            <span>阶段</span>
           </div>
           <div v-for="item in menuList" :key="item.id" style="flex: 1" :class="{choose: item.status === 1 || item.status === 2}">
             <div class="header-item">
@@ -38,22 +40,26 @@
         <div class="card-header">{{selectedObj.id}}- {{selectedObj.name}}</div>
         <div class="card-content">
           <div :style="'height:' + middleContentHeight + 'px'" style="overflow-y: scroll;">
-            <rickAnalysis ref="riskRef" v-if="selectedObj.id === 2" @getNextStatus="getNextStatus"></rickAnalysis>
+            <rickAnalysis ref="riskRef" v-if="selectedObj.id === 1" @getNextStatus="getNextStatus"></rickAnalysis>
             <contract-manage ref="contractMngRef" v-if="selectedObj.id === 2" @getNextStatus="getNextStatus"></contract-manage>
             <evaluate-task-notice ref="evaluteRef" v-if="selectedObj.id === 3" @getNextStatus="getNextStatus"></evaluate-task-notice>
-            <evaluate-plan ref="evalPlanRef" v-if="selectedObj.id === 4" @getNextStatus="getNextStatus"></evaluate-plan>
-            <employ-notice-record ref="employNoticeRcdRef" v-if="selectedObj.id === 5" @getNextStatus="getNextStatus"></employ-notice-record>
-            <site-check-rcd ref="siteCheckRcdRef" v-if="selectedObj.id === 6" @getNextStatus="getNextStatus"></site-check-rcd>
+            <evaluate-plan ref="evalPlanRef" v-if="selectedObj.id === 4" @getNextStatus="getNextStatus" :projectId="projectId"></evaluate-plan>
+            <employ-notice-record ref="employNoticeRcdRef" v-if="selectedObj.id === 5" @getNextStatus="getNextStatus" :projectId="projectId"></employ-notice-record>
+            <site-check-rcd ref="siteCheckRcdRef" v-if="selectedObj.id === 6" @getNextStatus="getNextStatus" :projectId="projectId"></site-check-rcd>
             <inner-review ref="innerReviewRef" v-if="selectedObj.id === 7" @getNextStatus="getNextStatus"></inner-review>
             <tech-leader-review ref="techReviewRef" v-if="selectedObj.id === 8" @getNextStatus="getNextStatus"></tech-leader-review>
-            <upload-review-rcd ref="uploadReviewRef" v-if="selectedObj.id === 9" @getNextStatus="getNextStatus"></upload-review-rcd>
-            <rate-conclusion ref="rateConRef" v-if="selectedObj.id === 10" @getNextStatus="getNextStatus"></rate-conclusion>
-            <process-ctrl-review ref="proCtrlRef" v-if="selectedObj.id === 1" @getNextStatus="getNextStatus"></process-ctrl-review>
+            <upload-review-rcd ref="uploadReviewRef" v-if="selectedObj.id === 9" @getNextStatus="getNextStatus" :projectId="projectId"></upload-review-rcd>
+            <rate-conclusion ref="rateConRef" v-if="selectedObj.id === 10" @getNextStatus="getNextStatus" :projectId="projectId"></rate-conclusion>
+            <process-ctrl-review ref="proCtrlRef" v-if="selectedObj.id === 11" @getNextStatus="getNextStatus" :projectId="projectId"></process-ctrl-review>
+            <project-archive ref="proArchRef" v-if="selectedObj.id === 12" @getNextStatus="getNextStatus" :projectId="projectId"></project-archive>
+            <sign-confirm ref="signConfirmRef" v-if="selectedObj.id === 13" @getNextStatus="getNextStatus" :projectId="projectId"></sign-confirm>
+            <confirm-end ref="confirmEndRef" v-if="selectedObj.id === 14" @getNextStatus="getNextStatus" :projectId="projectId"></confirm-end>
           </div>
-          <div style="display: flex;align-items: center;justify-content: center;margin-bottom: -20px">
+          <div style="display: flex;align-items: center;justify-content: center;margin-bottom: -30px;margin-top: 10px">
             <el-button type="primary" v-if="selectedObj.id !== 1" style="width: 80px" @click="back">上一步</el-button>
-            <el-button type="warning" style="width: 80px"  v-if="(projectStatus === 'add'   && selectedObj.status === 1)||(projectStatus === 'edit' && selectedObj.status === 1) " @click="save">保存</el-button>
-            <el-button type="warning" style="width: 80px"  v-if="(projectStatus === 'edit' && selectedObj.status !== 1) || (projectStatus === 'add'   && selectedObj.status !== 1) " @click="clickEdit">变更</el-button>
+            <el-button type="warning" style="width: 80px"  v-if="(projectStatus === 'add'   && selectedObj.status === 1 && selectedObj.id !== 14)||(projectStatus === 'edit' && selectedObj.status === 1 && selectedObj.id !== 14)  " @click="save">保存</el-button>
+            <el-button type="warning" style="width: 80px"  v-if="(projectStatus === 'edit' && selectedObj.status !== 1 && selectedObj.id !== 13 && selectedObj.id !== 14 && reportProcess != 14) || (projectStatus === 'add'   && selectedObj.status !== 1 && selectedObj.id !== 14 && reportProcess != 14) " @click="clickEdit">变更</el-button>
+            <el-button type="warning" style="width: 80px" v-if="selectedObj.id === 14 && selectedObj.status === 1 && reportProcess != 14" @click="confirm">确认完结</el-button>
             <el-button type="primary" style="width: 80px" v-if="selectedObj.id !== 14" @click="next">下一步</el-button>
           </div>
         </div>
@@ -63,6 +69,9 @@
       <el-button type="primary" v-if="selectedObj.id === 3" plain @click="downloadFile">
         评价任务通知书<el-icon class="el-icon--right"><Download /></el-icon>
       </el-button>
+      <el-button type="primary" v-if="selectedObj.id === 13" plain @click="downloadCommitFile">
+        承诺书<el-icon class="el-icon--right"><Download /></el-icon>
+      </el-button>
     </div>
   </div>
 </template>
@@ -70,7 +79,7 @@
 <script setup>
 
 import {onMounted, ref} from "vue";
-import {ElMessage} from "element-plus";
+import {ElMessage, ElMessageBox} from "element-plus";
 import rickAnalysis from "./components/riskAnalysis.vue"
 import contractManage from "./components/contractManage.vue"
 import evaluateTaskNotice from "./components/evaluateTaskNotice.vue"
@@ -79,7 +88,7 @@
 import status0Png from "@/assets/images/status0.png"
 import status1Png from "@/assets/images/status1.png"
 import status2Png from "@/assets/images/status2.png"
-import itemStatus2Png from "@/assets/images/itemStatus2.png"
+import itemStatus2Png from "@/assets/images/itemStatus2-1.png"
 import { useRoute } from 'vue-router'
 import {getProjectStatus} from "@/api/projectManage/project"
 import ContractManage from "./components/contractManage";
@@ -92,7 +101,11 @@
 import UploadReviewRcd from "./components/uploadReviewRcd"
 import RateConclusion from "./components/rateConclusion"
 import ProcessCtrlReview from "./components/processCtrlReview"
-
+import ProjectArchive from "./components/projectArchive"
+import SignConfirm from "./components/signConfirm"
+import ConfirmEnd from "./components/confirmEnd"
+import Cookies from "js-cookie"
+import {delMonitor} from "@/api/sysUsers";
 const route = useRoute()
 const menuList = ref([
   {
@@ -212,12 +225,18 @@
 const uploadReviewRef = ref()
 const rateConRef = ref()
 const proCtrlRef = ref()
+const proArchRef = ref()
+const signConfirmRef = ref()
+const confirmEndRef = ref()
+
 const isShowMenu = ref(false)
 const selectedObj = ref({})
 const middleHeight = ref(0)
 const middleContentHeight = ref(0)
 const projectId = ref()
 const projectStatus = ref()
+const toPath = ref();
+const reportProcess = ref();
 onMounted(() => {
   middleHeight.value = window.innerHeight - 250;
   middleContentHeight.value = window.innerHeight - 385;
@@ -229,6 +248,8 @@
   if(route.query.type !== 'add'){
     projectStatus.value = route.query.type;
     projectId.value = route.query.id;
+    toPath.value = route.query.toPath;
+    reportProcess.value = route.query.process;
     getStatus(projectId.value);
   }else {
     projectStatus.value = route.query.type;
@@ -248,6 +269,11 @@
 const getStatus = async (projectId) => {
   const res = await getProjectStatus(projectId);
   if(res.code == 200){
+    reportProcess.value = res.data
+    let fiveObj = {}
+    if(toPath.value && toPath.value === 'toFive' ){
+      fiveObj = menuList.value[1].subMenus[0]
+    }
     if(res.data <= 4 ){
       menuList.value[0].subMenus.forEach(item => {
         if(item.id <= res.data){
@@ -275,6 +301,7 @@
       if(res.data === 4){
         menuList.value[0].subMenus[3].status = 3;
       }
+
       menuList.value[1].subMenus.forEach(item => {
         if(item.id <= res.data) {
           item.status = 2
@@ -297,6 +324,7 @@
       menuList.value[0].status = 2;
       menuList.value[1].status = 1;
       console.log("menu22",menuList.value)
+
     }
     if(res.data >= 6 && res.data <= 9){
       setMenuList(0);
@@ -364,6 +392,8 @@
       if(res.data === 11){
         menuList.value[3].subMenus[1].status = 3;
       }
+      let twelveObj = {};
+      let thirteenObj = {};
       menuList.value[4].subMenus.forEach(item => {
         if(item.id <= res.data) {
           item.status = 2
@@ -391,9 +421,22 @@
           menuList.value[4].status = 2;
           selectedObj.value =item;
         }
+        if(toPath.value && toPath.value === 'toTwelve' && item.id === 12){
+          twelveObj = item;
+        }else if(toPath.value && toPath.value === 'toThirteen' && item.id === 13){
+          thirteenObj = item;
+        }
       })
-
+      if(toPath.value && toPath.value === 'toTwelve' && twelveObj){
+        chooseSubMenu(twelveObj,true)
+      }else if(toPath.value && toPath.value === 'toThirteen' && thirteenObj){
+        chooseSubMenu(thirteenObj,true)
+      }
     }
+    if(toPath.value && toPath.value === 'toFive' && fiveObj){
+      chooseSubMenu(fiveObj,true)
+    }
+
   }else{
     ElMessage.warning(res.message)
   }
@@ -410,7 +453,16 @@
   link.download = '评价任务通知书.doc'
   link.click()
 }
+const downloadCommitFile = () => {
+  const link = document.createElement('a')
+  link.href = 'files/commitLetter.doc'
+  link.target = '_blank'
+  link.download = '承诺书.doc'
+  link.click()
+}
 
+
+const sixBtn = ref("");
 const chooseSubMenu = (val,flag) => {
   if(val.status === 0) {
     setTimeout(() => {
@@ -424,6 +476,7 @@
     setTimeout(() => {
       isShowMenu.value = false;
       selectedObj.value = val;
+
     }, 10)
   }else if(val.status === 2){
     setTimeout(() => {
@@ -454,17 +507,16 @@
     }, 10)
   }else if (val.status === 4) {
     setTimeout(() => {
+      if(val.id === 6){
+        sixBtn.value = Cookies.get('btn')
+      }
+      console.log('sixBtn.value',sixBtn.value)
       isShowMenu.value = false;
       nextObj.value = selectedObj.value;
       selectedObj.value = val;
       selectedObj.value.status = 1;
       nextObj.value.status = 2;
       nextObj.value = val;
-      // if(flag){
-      //   setTimeout(() => {
-      //     goRouter(selectedObj.value.id)
-      //   }, 10)
-      // }
       //跳转
     }, 10)
   }
@@ -482,7 +534,21 @@
     }else if (selectedObj.value.id+ 1 >11){
       nextMenu(4)
     }
-  }else {
+  }else if(selectedObj.value.id === 6){
+    if(selectedObj.value.id === 6) {
+      ElMessageBox.confirm(
+          '确定结束现场勘验?',
+          '提示',
+          {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning',
+          })
+          .then( async() => {
+            goRouter(selectedObj.value.id,'sixEnd')
+          })
+    }
+  } else {
     setTimeout(() => {
       isShowMenu.value = false;
       ElMessage({
@@ -497,7 +563,7 @@
   // }, 100)
 }
 
-const  nextMenu =  (id) => {
+const nextMenu = (id) => {
   menuList.value[id].subMenus.forEach( item => {
     if(item.id === selectedObj.value.id + 1){
       chooseSubMenu(item,true);
@@ -535,10 +601,10 @@
   goRouter(selectedObj.value.id,'clickEdit')
 }
 const getNextStatus = async (val) => {
-  projectId.value = val;
-  console.log("val",val)
+  projectId.value = val
   const res = await getProjectStatus(val);
   if(res.code == 200){
+    reportProcess.value = res.data
     if(res.data <=4){
       menuList.value[0].subMenus.forEach(item => {
         if(item.id <= res.data){
@@ -662,9 +728,28 @@
 }
 
 const save = () => {
-  goRouter(selectedObj.value.id,'add')
+  // if(selectedObj.value.id === 6) {
+  //   ElMessageBox.confirm(
+  //       '确定结束现场勘验?',
+  //       '提示',
+  //       {
+  //         confirmButtonText: '确定',
+  //         cancelButtonText: '取消',
+  //         type: 'warning',
+  //       })
+  //       .then( async() => {
+  //         goRouter(selectedObj.value.id,'add')
+  //       })
+  // }else {
+    goRouter(selectedObj.value.id,'add')
+  // }
+
 
 }
+const confirm = () => {
+  goRouter(selectedObj.value.id,'confirm')
+}
+
 const goRouter = (val,type) => {
   switch (val){
     case 1:
@@ -710,36 +795,162 @@
       console.log("3")
       break;
     case 4:
+      if(type === 'add'){
+        evalPlanRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        evalPlanRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          evalPlanRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          evalPlanRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("4")
       break;
     case 5:
+      if(type === 'add'){
+        employNoticeRcdRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        employNoticeRcdRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          employNoticeRcdRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          employNoticeRcdRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("5")
       break;
     case 6:
+      if(type === 'add'){
+        siteCheckRcdRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        siteCheckRcdRef.value.riskOpen('clickEdit',projectId.value);
+      }else if (type === 'sixEnd'){
+        siteCheckRcdRef.value.riskOpen('sixEnd',projectId.value);
+      } else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          siteCheckRcdRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          siteCheckRcdRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("6")
       break;
     case 7:
+      if(type === 'add'){
+        innerReviewRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        innerReviewRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          innerReviewRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          innerReviewRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("7")
       break;
     case 8:
+      if(type === 'add'){
+        techReviewRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        techReviewRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          techReviewRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          techReviewRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("8")
       break;
     case 9:
+      if(type === 'add'){
+        uploadReviewRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        uploadReviewRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          uploadReviewRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          uploadReviewRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("9")
       break;
     case 10:
+      if(type === 'add'){
+        rateConRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        rateConRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          rateConRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          rateConRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("10")
       break;
     case 11:
+      if(type === 'add'){
+        proCtrlRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        proCtrlRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          proCtrlRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          proCtrlRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("11")
       break;
     case 12:
+      if(type === 'add'){
+        proArchRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        proArchRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          proArchRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          proArchRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("12")
       break;
     case 13:
+      if(type === 'add'){
+        signConfirmRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        signConfirmRef.value.riskOpen('clickEdit',projectId.value);
+      }else {
+        if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          signConfirmRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          signConfirmRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("13")
       break;
     case 14:
+      if(type === 'add'){
+        confirmEndRef.value.riskOpen('add',projectId.value);
+      }else if (type === 'clickEdit'){
+        confirmEndRef.value.riskOpen('clickEdit',projectId.value);
+      }
+      else if (type === 'confirm'){
+        confirmEndRef.value.riskOpen('confirm',projectId.value);
+      }else {
+          if(projectStatus.value === 'view' || projectStatus.value === 'add'){
+          confirmEndRef.value.riskOpen('detail',projectId.value);
+        }else if(projectStatus.value === 'edit'){
+          confirmEndRef.value.riskOpen('edit',projectId.value);
+        }
+      }
       console.log("14")
       break;
   }
@@ -763,7 +974,7 @@
       max-height: 85px;
       cursor: pointer;
       background-color: hsla(0,0%,100%,.97);
-      background-image: url(../../../assets/images/bg.png);
+      //background-image: url(../../../assets/images/bg2.png);
       background-repeat: no-repeat;
       background-size: 100% 84px;
       overflow: hidden;
@@ -786,7 +997,7 @@
         pointer-events: auto;
         transform: translateX(-50%);
         width: 118px;
-        background-image: url(../../../assets/images/back.png);
+        background-image: url(../../../assets/images/back1.png);
       }
       .choose .header-item{
         color: #fff;
@@ -803,6 +1014,18 @@
       display: flex;
       flex-direction: row;
       box-shadow: 0 0 18px 3px rgba(145,146,171,.2);
+      .project-title{
+        margin-right: 20px;
+        height: 85px;
+        display: flex;
+        align-items: center;
+        flex-shrink: 1;
+        flex-direction: column;
+        justify-content: center;
+        font-size: 20px;
+        font-weight: 700;
+        color: rgb(255, 140, 138);
+      }
     }
     .header-item{
       position: relative;
@@ -834,11 +1057,11 @@
       font-size: 19px;
       color: #626c8b;
       border: 1px solid #fff;
-      background: rgba(198,230,255,.2);
+      background: rgba(233 223 211 / 20%);
       border-radius: 8px;
       display: flex;
       align-items: center;
-      width: 70%;
+      width: 80%;
       padding-left: 20px;
       padding-right: 15px;
       cursor: pointer;
@@ -850,13 +1073,13 @@
         line-height: 20px;
         text-align: center;
         border-radius: 50%;
-        background: #b9c2d5;
+        background: #f3ccb0;
         margin-right: 10px;
         min-width: 21px;
         min-height: 21px;
       }
       .item-icon-status1{
-        color: #3b75ff;
+        color: #f17235;
         background: #fff;
       }
       .item-icon-status2{
@@ -870,13 +1093,13 @@
       cursor: pointer;
       color: #fff;
       border: 1px solid #c6e6ff;
-      background: linear-gradient(90deg,#57b6ff,#3b75ff);
+      background: linear-gradient(90deg,rgb(239, 186, 141),rgb(255, 140, 138));
     }
     .itemPrev{
       cursor: pointer;
-      color: #3b75ff;
-      border: 1px solid #c6e6ff;
-      background: rgba(198,230,255,.4);
+      color: #f38323;
+      border: 1px solid #f5e4cf;
+      background: rgb(249 210 170 / 40%);
     }
     .itemPrev:hover{
       transform: scale(1.1);
@@ -895,7 +1118,7 @@
       padding: 12px 56px;
       font-size: 18px;
       color: #fff;
-      background-image: url(../../../assets/images/cardHeader.png);
+      background-image: url(../../../assets/images/cardHeader2.png);
       background-size: 100% 100%;
       background-repeat: no-repeat;
       margin: -20px;
@@ -917,6 +1140,7 @@
     overflow: hidden;
     white-space: nowrap;
     text-overflow: ellipsis;
+    font-size: 16px;
   }
 
 

--
Gitblit v1.9.2