PageTaskTemplateDetail.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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 :operation-type="operationType" :main-table="data!" height="calc(70vh - 40px)" />
  9. </main>
  10. </div>
  11. </template>
  12. <script lang="ts" setup>
  13. import { ref, computed, onMounted } from 'vue';
  14. import { useRoute, useRouter } from 'vue-router';
  15. import BackIcon from 'assets/svg/back.svg';
  16. import { TASK_TEMPLATE_LIST } from './src/constants/template-detail';
  17. import TemplateTableMerge from './src/components/TemplateTableMerge.vue';
  18. const route = useRoute();
  19. const router = useRouter();
  20. const id = route.params.id;
  21. const operationType = ref<'view' | 'edit'>('view');
  22. const name = computed(() => {
  23. return TASK_TEMPLATE_LIST.find((item) => item.id === Number(id))?.name;
  24. });
  25. const data = computed(() => {
  26. return TASK_TEMPLATE_LIST.find((item) => item.id === Number(id))?.data;
  27. });
  28. onMounted(() => {
  29. operationType.value = route.query.operate as unknown as 'view' | 'edit';
  30. });
  31. </script>
  32. <style lang="scss" scoped>
  33. @use '../style/disaster.scss' as *;
  34. .disaster-precaution-container__header {
  35. flex-direction: row !important;
  36. justify-content: flex-start !important;
  37. gap: 8cpx !important;
  38. }
  39. </style>