zhouwx
2025-03-24 3f6bf89b1985b6668f02ffcc9af577b412e92e45
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">
@@ -49,15 +51,15 @@
            <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"></project-archive>
            <sign-confirm ref="signConfirmRef" v-if="selectedObj.id === 13" @getNextStatus="getNextStatus"></sign-confirm>
            <confirm-end ref="confirmEndRef" v-if="selectedObj.id === 14" @getNextStatus="getNextStatus"></confirm-end>
            <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 && 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) || (projectStatus === 'add'   && selectedObj.status !== 1 && selectedObj.id !== 14) " @click="clickEdit">变更</el-button>
            <el-button type="warning" style="width: 80px" v-if="selectedObj.id === 14 && selectedObj.status === 1" @click="confirm">确认完结</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>
@@ -67,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>
@@ -74,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"
@@ -83,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";
@@ -100,6 +105,7 @@
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([
  {
@@ -230,6 +236,7 @@
const projectId = ref()
const projectStatus = ref()
const toPath = ref();
const reportProcess = ref();
onMounted(() => {
  middleHeight.value = window.innerHeight - 250;
  middleContentHeight.value = window.innerHeight - 385;
@@ -242,6 +249,7 @@
    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;
@@ -261,6 +269,7 @@
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]
@@ -395,7 +404,7 @@
            nextObj.value = item;
          }
        }
        if(item.id === res.data && item.id !== 14){
        if(item.id === res.data){
          item.status = 3;
          selectedObj.value =item;
          setTimeout(() => {
@@ -444,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(() => {
@@ -489,14 +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;
      Cookies.set('projectId',projectId.value);
      console.log("CookiesprojectId",Cookies.get('projectId'))
      //跳转
    }, 10)
  }
@@ -514,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({
@@ -570,6 +604,7 @@
  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){
@@ -693,7 +728,22 @@
}
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 = () => {
@@ -777,7 +827,9 @@
        siteCheckRcdRef.value.riskOpen('add',projectId.value);
      }else if (type === 'clickEdit'){
        siteCheckRcdRef.value.riskOpen('clickEdit',projectId.value);
      }else {
      }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'){
@@ -922,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;
@@ -945,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;
@@ -962,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;
@@ -993,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;
@@ -1009,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{
@@ -1029,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);
@@ -1054,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;
@@ -1076,6 +1140,7 @@
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    font-size: 16px;
  }