organization.vue 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <!-- Page de détails de l'organization courante -->
  2. <template>
  3. <LayoutContainer v-if="!fetchState.pending">
  4. <!-- Définit le contenu des trois slots du header de la page -->
  5. <LayoutBannerTop>
  6. <template #block1>
  7. {{ entry.name }}
  8. </template>
  9. <template #block2>
  10. N°Siret : {{ entry.siretNumber }}
  11. </template>
  12. <template #block3>
  13. {{ entry.description }}
  14. </template>
  15. </LayoutBannerTop>
  16. <!-- Rend le contenu de la page -->
  17. <NuxtChild />
  18. </LayoutContainer>
  19. </template>
  20. <script lang="ts">
  21. import {computed, defineComponent, useContext, ComputedRef} from '@nuxtjs/composition-api'
  22. import { Item, Query } from '@vuex-orm/core'
  23. import { Organization } from '~/models/Organization/Organization'
  24. import { queryHelper } from '~/services/store/query'
  25. import { repositoryHelper } from '~/services/store/repository'
  26. import {ContactPoint} from "~/models/Core/ContactPoint";
  27. import {BankAccount} from "~/models/Core/BankAccount";
  28. import {OrganizationAddressPostal} from "~/models/Organization/OrganizationAddressPostal";
  29. import {Country} from "~/models/Core/Country";
  30. import {TypeOfPractice} from "~/models/Organization/TypeOfPractice";
  31. import {Network} from "~/models/Network/Network";
  32. import {NetworkOrganization} from "~/models/Network/NetworkOrganization";
  33. import {AddressPostal} from "~/models/Core/AddressPostal";
  34. import {OrganizationArticle} from "~/models/Organization/OrganizationArticle";
  35. import {File} from "~/models/Core/File"
  36. import {useDataUtils} from "~/composables/data/useDataUtils";
  37. export default defineComponent({
  38. name: 'Organization',
  39. middleware({ $ability, redirect }) {
  40. if(!$ability.can('display', 'organization_page'))
  41. return redirect('/error')
  42. },
  43. setup () {
  44. const {store, $dataProvider} = useContext()
  45. const {getItemToEdit} = useDataUtils($dataProvider)
  46. const id = store.state.profile.organization.id
  47. const {fetchState} = getItemToEdit(id, Organization)
  48. const repository = repositoryHelper.getRepository(Organization)
  49. const query: ComputedRef<Query> = computed(() => repository.query())
  50. const entry: ComputedRef<Item> = computed(() => {
  51. return queryHelper.getItem(query.value, id)
  52. })
  53. return {
  54. entry,
  55. fetchState
  56. }
  57. },
  58. beforeDestroy() {
  59. repositoryHelper.cleanRepository(Organization)
  60. repositoryHelper.cleanRepository(ContactPoint)
  61. repositoryHelper.cleanRepository(BankAccount)
  62. repositoryHelper.cleanRepository(OrganizationAddressPostal)
  63. repositoryHelper.cleanRepository(AddressPostal)
  64. repositoryHelper.cleanRepository(Country)
  65. repositoryHelper.cleanRepository(TypeOfPractice)
  66. repositoryHelper.cleanRepository(Network)
  67. repositoryHelper.cleanRepository(NetworkOrganization)
  68. repositoryHelper.cleanRepository(OrganizationArticle)
  69. repositoryHelper.cleanRepository(File)
  70. }
  71. })
  72. </script>