_id.vue 2.7 KB

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