index.vue 2.53 KB
<template>
  <div class="app-container">
    <component
      :is="appComponent" ref="appComponentRef" @view-exam="handleView" @do-approval="handleApproval" @do-back="handleBack"
      @view-transcript="handleViewTranscript" @view-merge="handleViewMerge"
    />
    <exam-view ref="examViewRef" @approval="handleApproval" />
    <do-approval ref="doApprovalRef" @approval="approval" />
    <view-files ref="viewFilesRef" />
    <view-merge ref="viewMergeRef" />
  </div>
</template>

<script setup name="Level_Approval">
import { getCurrentInstance } from '@vue/runtime-core'
import { computed, defineAsyncComponent } from 'vue'
import useUserStore from '@/store/modules/user'
import ExamView from '@/views/exam/level/apply/components/examView'
import DoApproval from './do'
import ViewFiles from '@/views/exam/components/viewFiles'
import ViewMerge from '@/views/exam/level/approval/components/mergeView'
import { useRoute } from 'vue-router'

const { proxy } = getCurrentInstance()
const userStore = useUserStore()
const route = useRoute()

const appComponent = computed(() => {
  let component
  switch (userStore.deptType) {
    case '1':
      component = defineAsyncComponent(() => import('./components/ztx'))
      break
    case '2':
    case '3':
      const step = route.query.step || '1'
      switch (step) {
        case '1':
          component = defineAsyncComponent(() => import('./components/province_step1'))
          break
        case '2':
          component = defineAsyncComponent(() => import('./components/province_step2'))
          break
        case '3':
          component = defineAsyncComponent(() => import('./components/province_step3'))
          break
      }
      break
    default:
      component = defineAsyncComponent(() => import('./components/city'))
      break
  }
  return component
})


function getList() {
  proxy.$refs['appComponentRef'].getList()
}

function handleApproval(rows, params) {
  proxy.$refs['doApprovalRef'].open(rows, params)
}

function handleView(row, params) {
  proxy.$refs['examViewRef'].open(row, params)
}

function approval(flag) {
  proxy.$refs['examViewRef']?.close()
  getList()
  approvalCompleted(flag)
}

function approvalCompleted(flag) {
  proxy.$refs['appComponentRef']?.approvalCompleted(flag)
}

function handleBack(row) {
  proxy.$refs['doApprovalRef'].open([JSON.stringify(row.sourceData)], {
    isBack: true
  })
}

function handleViewTranscript(row) {
  proxy.$refs['viewFilesRef'].open(row.transcript)
}

function handleViewMerge(row) {
  proxy.$refs['viewMergeRef'].open(row, null)
}

</script>