PageTaskTemplateDetail.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <template>
  2. <div class="disaster-precaution-container">
  3. <header class="disaster-precaution-container__header">
  4. <img :src="BackIcon" alt="back" class="back-icon" @click="router.back()" />
  5. <span class="disaster-precaution-container__title">{{ name }}</span>
  6. </header>
  7. <main class="disaster-precaution-container__main">
  8. <TemplateTableMerge
  9. :operation-type="'template'"
  10. :main-table="templateDetail"
  11. :opinion-data="{} as ContentItem"
  12. :result-data="{} as ContentItem"
  13. height="calc(70vh - 25px)"
  14. />
  15. </main>
  16. </div>
  17. </template>
  18. <script lang="ts" setup>
  19. import { ref, computed, onMounted } from 'vue';
  20. import { useRoute, useRouter } from 'vue-router';
  21. import BackIcon from 'assets/svg/back.svg';
  22. import { TASK_TEMPLATE_LIST } from './src/constants/template-detail';
  23. import TemplateTableMerge from './src/components/TemplateTableMerge.vue';
  24. import { getTaskTemplateDetail } from '@/api/disaster-precaution';
  25. import type { SpanTableData } from '@/views/disaster/disaster-precaution/src/type';
  26. import type { ContentItem } from '@/types/disaster-precaution';
  27. const route = useRoute();
  28. const router = useRouter();
  29. const id = Number(route.params.id);
  30. const name = computed(() => {
  31. return TASK_TEMPLATE_LIST.find((item) => item.id === Number(id))?.name;
  32. });
  33. const templateDetail = ref<SpanTableData[]>([]);
  34. onMounted(async () => {
  35. const res = await getTaskTemplateDetail(id);
  36. templateDetail.value = res;
  37. });
  38. </script>
  39. <style lang="scss" scoped>
  40. @use '../style/disaster.scss' as *;
  41. .disaster-precaution-container__header {
  42. flex-direction: row !important;
  43. justify-content: flex-start !important;
  44. gap: 8px !important;
  45. }
  46. .disaster-precaution-container__main {
  47. width: calc(100vw - 300px);
  48. }
  49. </style>