ResidenceAreas.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <template>
  2. <LayoutContainer>
  3. <UiLoadingPanel v-if="pending" />
  4. <div v-else>
  5. <!-- Afficher la liste des résidences -->
  6. <ul>
  7. <li v-for="area in allResidenceArea" :key="area.id">
  8. {{ area.label }}
  9. <UiButtonDelete :model="ResidenceArea" :entity="area" />
  10. <span class="edit-icon" @click="goToEditPage(area.id)">✏️</span>
  11. </li>
  12. </ul>
  13. </div>
  14. <button @click="goToCreatePage">Nouveau</button>
  15. </LayoutContainer>
  16. </template>
  17. <script setup lang="ts">
  18. import { useEntityFetch } from '~/composables/data/useEntityFetch'
  19. import ResidenceArea from '~/models/Billing/ResidenceArea'
  20. import { useRepo } from 'pinia-orm'
  21. import ResidenceAreasRepository from '~/stores/repositories/ResidenceAreasRepository'
  22. import { useRouter } from 'vue-router'
  23. const residenceAreasRepo = useRepo(ResidenceAreasRepository)
  24. const router = useRouter()
  25. const { fetchCollection } = useEntityFetch()
  26. const i18n = useI18n()
  27. const { data: residence_areas, pending } = fetchCollection(ResidenceArea)
  28. /**
  29. * On récupère les Residence Area via le store
  30. * (sans ça, les mises à jour SSE ne seront pas prises en compte)
  31. */
  32. const allResidenceArea: ComputedRef<Array<ResidenceArea>> = computed(() => {
  33. return residenceAreasRepo.getResidenceAreas()
  34. })
  35. const goToEditPage = (id: number) => {
  36. navigateTo(`/parameters/residence_areas/${id}`)
  37. }
  38. const goToCreatePage = () => {
  39. navigateTo(`/parameters/residence_areas/new`)
  40. }
  41. </script>
  42. <style scoped lang="scss"></style>