_id.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <template>
  2. <v-row justify="center" align="center">
  3. <v-col cols="12" sm="8" md="8">
  4. <FormComponent>
  5. <v-expansion-panels v-model="panel" focusable>
  6. <ExpansionPanelComponent title="Informations générales">
  7. <InputComponent :query="accessesQuery" field="person.name" :rules="nameRule" />
  8. <InputComponent :query="accessesQuery" field="person.givenName" />
  9. </ExpansionPanelComponent>
  10. <ExpansionPanelComponent title="Activités">
  11. <DataTableComponent :repository="personActivitiesRepository" :uri="personActivitiesUri" :headers="personActivitiesHearders"></DataTableComponent>
  12. </ExpansionPanelComponent>
  13. </v-expansion-panels>
  14. </FormComponent>
  15. </v-col>
  16. </v-row>
  17. </template>
  18. <script lang="ts">
  19. import {defineComponent, useContext} from '@nuxtjs/composition-api'
  20. import {Access} from '@/models/Access/Access'
  21. import {Person} from '@/models/Person/Person'
  22. import {PersonActivity} from '@/models/Person/PersonActivity'
  23. import accessesData from '@/data/accessesData'
  24. export default defineComponent({
  25. setup() {
  26. const {store, route} = useContext();
  27. const panel = 0
  28. const accessesRepository = store.$repo(Access)
  29. const accessesQuery = accessesRepository.with('person')
  30. const personActivitiesRepository = store.$repo(PersonActivity)
  31. const personActivitiesUri = `${accessesRepository.getModel().$entity}/${route.value.params.id}/${personActivitiesRepository.getModel().$entity}`
  32. const personActivitiesHearders = [
  33. {
  34. text: 'Activité',
  35. align: 'start',
  36. sortable: false,
  37. value: 'complementSpeciality',
  38. },
  39. { text: 'Date de début',
  40. value: 'startDate'
  41. }
  42. ]
  43. const nameRule = [
  44. (nameValue:string) => (nameValue || '').length <= 128 || `A maximum of 128 characters is allowed`
  45. ]
  46. return {
  47. accessesQuery,
  48. personActivitiesRepository,
  49. personActivitiesUri,
  50. personActivitiesHearders,
  51. panel,
  52. nameRule
  53. }
  54. },
  55. async asyncData({store, $rest, params}){
  56. const repository = store.$repo(Access);
  57. const entity = repository.getModel().$entity;
  58. const access = await $rest.getItem(`/api/${entity}`, params.id)
  59. // const accesses = await accessesData()
  60. repository.insert(access);
  61. },
  62. async beforeRouteLeave (to, from, next) {
  63. const flushAccess = await this.$store.$repo(Access).flush();
  64. const flushPerson = await this.$store.$repo(Person).flush();
  65. const flushPersonActivity = await this.$store.$repo(PersonActivity).flush();
  66. next();
  67. }
  68. })
  69. </script>