_id.vue 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. export default defineComponent({
  24. setup() {
  25. const {store, route} = useContext();
  26. const panel = 0
  27. const accessesRepository = store.$repo(Access)
  28. const accessesQuery = accessesRepository.with('person')
  29. const personActivitiesRepository = store.$repo(PersonActivity)
  30. const personActivitiesUri = `${accessesRepository.getModel().$entity}/${route.value.params.id}/${personActivitiesRepository.getModel().$entity}`
  31. const personActivitiesHearders = [
  32. {
  33. text: 'Activité',
  34. align: 'start',
  35. sortable: false,
  36. value: 'complementSpeciality',
  37. },
  38. { text: 'Date de début',
  39. value: 'startDate'
  40. }
  41. ]
  42. const nameRule = [
  43. (nameValue:string) => (nameValue || '').length <= 128 || `A maximum of 128 characters is allowed`
  44. ]
  45. return {
  46. accessesQuery,
  47. personActivitiesRepository,
  48. personActivitiesUri,
  49. personActivitiesHearders,
  50. panel,
  51. nameRule
  52. }
  53. },
  54. async asyncData({store, $rest, params}){
  55. const repository = store.$repo(Access);
  56. const entity = repository.getModel().$entity;
  57. const access = await $rest.getItem(`/api/${entity}`, params.id)
  58. // const accesses = await accessesData()
  59. repository.insert(access);
  60. },
  61. async beforeRouteLeave (to, from, next) {
  62. const flushAccess = await this.$store.$repo(Access).flush();
  63. const flushPerson = await this.$store.$repo(Person).flush();
  64. const flushPersonActivity = await this.$store.$repo(PersonActivity).flush();
  65. next();
  66. }
  67. })
  68. </script>