_id.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <!-- Page de détails d'un sous-domaine -->
  2. <template>
  3. <main>
  4. <LayoutContainer>
  5. <v-card class="mb-5 mt-4">
  6. <FormToolbar title="subdomain" icon="fa-at"/>
  7. <v-container fluid class="container pa-6">
  8. <v-row>
  9. <v-col cols="12" sm="12">
  10. <v-skeleton-loader
  11. v-if="fetchState.pending"
  12. type="text"
  13. />
  14. <div v-else>
  15. <div>
  16. {{ $t('youRegisteredTheFollowingSubdomain')}} :
  17. </div>
  18. <div class="pa-8">
  19. <b>{{ entry.subdomain }}</b> <span class="grey--text">.opentalent.fr</span>
  20. </div>
  21. <div>
  22. <div v-if="entry.active">
  23. <v-icon class="ot_green--text icon small mr-2">
  24. fa-solid fa-check
  25. </v-icon>
  26. {{ $t('subdomainIsCurrentlyActive') }}
  27. </div>
  28. <div v-else>
  29. {{ $t('doYouWantToActivateThisSubdomain') }} ?
  30. </div>
  31. </div>
  32. <div class="mt-6 d-flex flex-row">
  33. <v-btn to="/parameters/communication" class="mr-12">{{ $t('back') }}</v-btn>
  34. <div v-if="!entry.active">
  35. <v-btn color="primary" @click="activateAndQuit(entry)">{{ $t('activate') }}</v-btn>
  36. </div>
  37. </div>
  38. </div>
  39. </v-col>
  40. </v-row>
  41. </v-container>
  42. </v-card>
  43. </LayoutContainer>
  44. </main>
  45. </template>
  46. <script lang="ts">
  47. import {computed, ComputedRef, defineComponent, useContext, useRouter} from '@nuxtjs/composition-api'
  48. import {useDataUtils} from "~/composables/data/useDataUtils";
  49. import {Subdomain} from "~/models/Organization/Subdomain";
  50. import {Repository as VuexRepository} from "@vuex-orm/core/dist/src/repository/Repository";
  51. import {Model, Query} from "@vuex-orm/core";
  52. import {repositoryHelper} from "~/services/store/repository";
  53. import {AnyJson} from "~/types/interfaces";
  54. import {queryHelper} from "~/services/store/query";
  55. import {QUERY_TYPE} from "~/types/enums";
  56. export default defineComponent({
  57. name: 'EditFormParametersSubdomain',
  58. setup () {
  59. const {$dataProvider, $dataPersister, route} = useContext()
  60. const {getItemToEdit} = useDataUtils($dataProvider)
  61. const id = parseInt(route.value.params.id)
  62. const {fetchState} = getItemToEdit(id, Subdomain)
  63. const router = useRouter();
  64. const repository: VuexRepository<Model> = repositoryHelper.getRepository(Subdomain)
  65. const query: ComputedRef<Query> = computed(() => repository.query())
  66. const entry: ComputedRef<AnyJson> = computed(() => {
  67. return queryHelper.getFlattenEntry(query.value, id)
  68. })
  69. const submit = async () => {
  70. await $dataPersister.invoke({
  71. type: QUERY_TYPE.MODEL,
  72. model: Subdomain,
  73. id: id,
  74. idTemp: null,
  75. query: query.value
  76. })
  77. }
  78. const activateAndQuit = async function() {
  79. repositoryHelper.updateStoreFromField(Subdomain, entry.value, true, 'active')
  80. await submit()
  81. router.push('/parameters/communication')
  82. }
  83. return {
  84. id,
  85. fetchState,
  86. entry,
  87. activateAndQuit
  88. }
  89. },
  90. beforeDestroy() {
  91. repositoryHelper.cleanRepository(Subdomain)
  92. }
  93. })
  94. </script>