zhouwx
2024-11-21 a6a8e49af8c8172f4209dd94e65f53f17825cc44
src/views/safetyReview/projectManage/process.vue
@@ -27,16 +27,19 @@
          <div :style="'height:' + middleContentHeight + 'px'" style="overflow-y: scroll;">
            <basic-info ref="basicRef" v-if="selectedObj.id === 1" :projectId="projectId" @getNextStatus="getNextStatus"></basic-info>
            <expert ref="expertRef" v-if="selectedObj.id === 2" :projectId="projectId" @getNextStatus="getNextStatus"></expert>
            <approval ref="approvalRef" v-if="selectedObj.id === 3" :projectId="projectId" @getNextStatus="getNextStatus"></approval>
            <approval ref="approvalRef" v-if="selectedObj.id === 3" :projectId="projectId" @getNextStatus="getNextStatus" @back-status="backStatus" ></approval>
            <archive ref="archiveRef" v-if="selectedObj.id === 4" :projectId="projectId" @getNextStatus="getNextStatus"></archive>
          </div>
          <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' || projectStatus === 'edit') && selectedObj.status ===1 && selectedObj.id !==4 && newProgress !== 4" @click="save">保存</el-button>
            <el-button type="warning" style="width: 80px"  v-if="(projectStatus === 'add' || projectStatus === 'edit') && selectedObj.status !==1 && newProgress !== 4 " @click="clickEdit">变更</el-button>
            <el-button type="warning" style="width: 80px"  v-if="(projectStatus === 'add' || projectStatus === 'edit') && selectedObj.status ===1 && selectedObj.id !==4 && selectedObj.id !==3 && newProgress !== 4" @click="save">保存</el-button>
            <el-button type="warning" style="width: 110px"  v-if="(projectStatus === 'add' || projectStatus === 'edit')  && selectedObj.id !==4 && (selectedObj.id ===3 && selectedObj.status !==2) && newProgress !== 4" @click="confirmApproval">确认生成审批单</el-button>
            <el-button type="warning" style="width: 80px" v-if="projectStatus === 'view' || selectedObj.id ===3 && selectedObj.status === 2"  @click="viewWord">查看审批单</el-button>
            <el-button type="warning" style="width: 80px"  v-if="(projectStatus === 'add' || projectStatus === 'edit') && selectedObj.status !==1 && selectedObj.id !==3 && newProgress !== 4 " @click="clickEdit">变更</el-button>
            <el-button type="warning" style="width: 80px"   v-if="selectedObj.id === 4 && selectedObj.status === 1 && newProgress !== 4" @click="confirm">确认完结</el-button>
            <el-button type="primary" style="width: 80px" v-if="selectedObj.id !== 4"  @click="next">下一步</el-button>
          </div>
        </div>
      </el-card>
@@ -46,7 +49,7 @@
<script setup>
import {onMounted, ref} from "vue";
import {nextTick, onMounted, ref} from "vue";
import status0Png from '@/assets/images/status0.png'
import status1Png from '@/assets/images/status1.png'
import status2Png from '@/assets/images/status2.png'
@@ -57,6 +60,7 @@
import archive from  './components/projectArchive.vue'
import {ElMessage} from "element-plus";
import {get} from "@vueuse/core";
import {getProjectInfo} from "@/api/projectManage";
const selectedObj = ref({})
const nextObj = ref({})
@@ -125,6 +129,10 @@
const save = () => {
  goRouter(selectedObj.value.id,'add')
}
const confirmApproval = () => {
  goRouter(selectedObj.value.id,'confirmApproval')
}
const goRouter = (selectId,type) => {
  switch (selectId){
@@ -136,91 +144,135 @@
      }
      break;
    case 2:
      if(type === 'add' || type === 'clickEdit'){
        expertRef.value.riskOpen(type,projectId.value);
      if(type === 'add' || type === 'clickEdit' || type === 'backTwo'){
        if(type === 'backTwo'){
          expertRef.value.riskOpen('detail',projectId.value);
        }else {
          expertRef.value.riskOpen(type,projectId.value);
        }
      }else if(projectStatus.value === 'view' || projectStatus.value === 'edit' || projectStatus.value === 'add'){
        expertRef.value.riskOpen('detail',projectId.value);
      }
      break;
    case 3:
      if(type === 'add' || type === 'clickEdit'){
        approvalRef.value.riskOpen(type,projectId.value);
      if(type === 'add' || type === 'clickEdit' || type === 'confirmApproval' || type === 'viewWord'){
          approvalRef.value.riskOpen(type,projectId.value);
      }else if(projectStatus.value === 'view' || projectStatus.value === 'edit' || projectStatus.value === 'add'){
        approvalRef.value.riskOpen('detail',projectId.value);
        if(projectStatus.value === 'view'){
          approvalRef.value.riskOpen('view',projectId.value);
        }else{
          approvalRef.value.riskOpen('detail',projectId.value);
        }
      }
      break;
    case 4:
      if(type === 'add' || type === 'clickEdit' || type === 'confirm'){
        archiveRef.value.riskOpen(type,projectId.value);
      } else if(projectStatus.value === 'view' || projectStatus.value === 'edit' || projectStatus.value === 'add'){
        archiveRef.value.riskOpen('detail',projectId.value);
        if(projectStatus.value === 'view'){
          archiveRef.value.riskOpen('view',projectId.value);
        }else{
          archiveRef.value.riskOpen('detail',projectId.value);
        }
      }
      break;
  }
}
const getStatus = (id) => {
const getStatus = async (id) => {
  //projectId 项目id,根据id获取当前状态
  projectId.value = Number(id)
  //调接口
  const res = projectId.value
  //当前项目状态,编辑、查看的时候定位到最新状态
  newProgress.value = res
  menuList.value.forEach(item => {
    if(projectStatus.value === 'edit'){
      if(item.id <= res){
        item.status = 2
  const res = await getProjectInfo(projectId.value)
  if(res.code === 200) {
    //当前项目状态,编辑、查看的时候定位到最新状态
    newProgress.value = res.data.step
    menuList.value.forEach(item => {
      if(projectStatus.value === 'edit'){
        if(item.id <=  newProgress.value){
          item.status = 2
        }
        if(item.id ==  newProgress.value){
          selectedObj.value =item
          setTimeout(() => {
            goRouter(selectedObj.value.id)
          }, 10)
        }
        if(item.id ==  newProgress.value +1){
          item.status = 1
        }
      }else if(projectStatus.value === 'view'){
        if(item.id <=  newProgress.value){
          item.status = 2
        }
        if(item.id ==  newProgress.value){
          selectedObj.value =item
          setTimeout(() => {
            goRouter(selectedObj.value.id)
          }, 10)
        }
      }
      if(item.id == res){
      if( newProgress.value == 4 && item.id == 4){
        item.status = 2
        selectedObj.value =item
        setTimeout(() => {
          goRouter(selectedObj.value.id)
        }, 10)
      }
      if(item.id == res +1){
        item.status = 1
      }
    }else if(projectStatus.value === 'view'){
      if(item.id <= res){
        item.status = 2
      }
      if(item.id == res){
        selectedObj.value =item
        setTimeout(() => {
          goRouter(selectedObj.value.id)
        }, 10)
      }
    }
    if(res == 4 && item.id == 4){
      item.status = 2
      selectedObj.value =item
      setTimeout(() => {
        goRouter(selectedObj.value.id)
      }, 10)
    }
  })
    })
  }
  else {
    ElMessage.warning(res.message)
  }
  console.log('menuList.value',menuList.value)
}
const getNextStatus = (id) => {
  //projectId 项目id,根据id获取当前状态
const getNextStatus = async (id) => {
  projectId.value = Number(id)
  //调接口
  const res = projectId.value
  newProgress.value = res
  //定位到下一步状态
  menuList.value.forEach(item => {
    if(item.id <= res){
      item.status = 2
    }else if(item.id == res + 1){
      item.status = 1
      selectedObj.value =item
    }
  const res = await getProjectInfo(projectId.value)
  if(res.code === 200) {
    newProgress.value = res.data.step
    //定位到下一步状态
    menuList.value.forEach(item => {
      if(item.id <=  newProgress.value){
        item.status = 2
      }else if(item.id ==  newProgress.value + 1){
        item.status = 1
        selectedObj.value =item
      }
    if(res == 4 && item.id == 4){
      item.status = 2
      selectedObj.value =item
    }
  })
      if( newProgress.value == 4 && item.id == 4){
        item.status = 2
        selectedObj.value =item
      }
    })
  }else {
    ElMessage.warning(res.message)
  }
}
const backStatus = async (id) => {
  projectId.value = Number(id)
  const res = await getProjectInfo(projectId.value)
  if(res.code === 200) {
    newProgress.value = res.data.step
    //审核不通过状态回到第二步定位到2
    menuList.value.forEach(item => {
      if(item.id == newProgress.value){
        selectedObj.value =item
      }
      if(item.id <= newProgress.value){
        item.status = 2
      }else if(item.id == newProgress.value + 1){
        item.status = 1
      }else if(item.id > newProgress.value + 1){
        item.status = 0
      }
    })
   await nextTick(() => {
      goRouter(selectedObj.value.id,'backTwo')
    })
  }
}
const confirm = () => {
@@ -277,6 +329,11 @@
const clickEdit = () => {
  goRouter(selectedObj.value.id,'clickEdit')
}
const viewWord = () => {
  goRouter(selectedObj.value.id,'viewWord')
}
const clickMenu = (item) => {
  if(item.status == 0){
    setTimeout(() => {