RegulationItem.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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" ref="dynamicComponentRef" @record-submitted="handleRecordSubmitted" />
  8. </div>
  9. </template>
  10. <script setup lang="ts">
  11. import { ref, computed, defineAsyncComponent } from 'vue';
  12. import { useRoute } from 'vue-router';
  13. const route = useRoute();
  14. const operate = route.query.operate;
  15. const id = Number(route.query.id);
  16. const headerTitle = computed(() => {
  17. switch (operate) {
  18. case 'regulation-create':
  19. return `创建管理规定`;
  20. case 'regulation-edit':
  21. return `编辑管理规定`;
  22. case 'notice-create':
  23. return `创建通知`;
  24. case 'notice-edit':
  25. return `编辑通知`;
  26. case 'notice-view':
  27. return `通知详情`;
  28. default:
  29. return '未知操作';
  30. }
  31. });
  32. const dynamicComponent = computed(() => {
  33. switch (operate) {
  34. case 'regulation-create':
  35. return defineAsyncComponent(() => import('./components/RegulationCreate.vue'));
  36. case 'regulation-edit':
  37. return defineAsyncComponent(() => import('./components/RegulationEdit.vue'));
  38. case 'notice-create':
  39. return defineAsyncComponent(() => import('./components/NoticeView.vue'));
  40. // return defineAsyncComponent(() => import('./components/NoticeCreate.vue'));
  41. case 'notice-edit':
  42. return defineAsyncComponent(() => import('./components/NoticeEdit.vue'));
  43. case 'notice-view':
  44. return defineAsyncComponent(() => import('./components/NoticeView.vue'));
  45. default:
  46. return '';
  47. }
  48. });
  49. const dynamicComponentRef = ref();
  50. function handleRecordSubmitted() {}
  51. </script>
  52. <style scoped lang="scss">
  53. @use '@/styles/page-details-layout.scss' as *;
  54. @use '@/styles/page-main-layout.scss' as *;
  55. .safety-platform-container__header {
  56. flex-direction: row !important;
  57. justify-content: flex-start !important;
  58. gap: 8px !important;
  59. }
  60. </style>