EvaluationDepartmentItem.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <template>
  2. <div class="safety-platform-container">
  3. <header class="safety-platform-container__header">
  4. <BreadcrumbBack />
  5. <span class="breadcrumb-title">{{ headerTitle }}</span>
  6. </header>
  7. <component :is="dynamicComponent" :id="id" />
  8. </div>
  9. </template>
  10. <script setup lang="ts">
  11. import { computed, defineAsyncComponent } from 'vue';
  12. import { useRoute } from 'vue-router';
  13. import BreadcrumbBack from '@/components/BreadcrumbBack.vue';
  14. const route = useRoute();
  15. const operate = computed(() => route.query.operate as string);
  16. const id = computed(() => (route.query.id ? Number(route.query.id) : undefined));
  17. const headerTitle = computed(() => {
  18. if (operate.value === 'evaluationDepartment-feedback') {
  19. return '反馈';
  20. }
  21. if (operate.value === 'evaluationDepartment-advanced-person') {
  22. return '先进个人信息';
  23. }
  24. return '安全考核管理(部门)详情';
  25. });
  26. const dynamicComponent = computed(() => {
  27. if (operate.value === 'evaluationDepartment-feedback') {
  28. return defineAsyncComponent(() => import('./components/EvaluationDepartmentFeedback.vue'));
  29. }
  30. if (operate.value === 'evaluationDepartment-advanced-person') {
  31. return defineAsyncComponent(() => import('./components/EvaluationDepartmentAdvancedPerson.vue'));
  32. }
  33. return null;
  34. });
  35. </script>
  36. <style scoped lang="scss">
  37. @use '@/styles/page-details-layout.scss' as *;
  38. @use '@/styles/page-main-layout.scss' as *;
  39. .safety-platform-container__header {
  40. flex-direction: row !important;
  41. justify-content: flex-start !important;
  42. gap: 8px !important;
  43. }
  44. </style>