student.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <template>
  2. <LayoutContainer v-if="!fetchState.pending">
  3. <UiForm :id="id" :model="model" :query="query()">
  4. <template #form.input="{entry, updateRepository}">
  5. <v-expansion-panels focusable multiple :value="[0,1,2]">
  6. <!-- Suivi pédagogique -->
  7. <UiExpansionPanel id="educational_follow_up" icon="fa-graduation-cap">
  8. <v-container fluid class="container">
  9. <v-row>
  10. <v-col cols="12" sm="6">
  11. <UiInputCheckbox field="trackingValidation" :data="entry['trackingValidation']" @update="updateRepository" />
  12. </v-col>
  13. <v-col cols="12" sm="6">
  14. <UiInputCheckbox field="editCriteriaNotationByAdminOnly" :data="entry['editCriteriaNotationByAdminOnly']" @update="updateRepository" />
  15. </v-col>
  16. <v-col cols="12" sm="6">
  17. <UiInputEnum field="educationPeriodicity" :data="entry['educationPeriodicity']" enum-type="education_periodicity" @update="updateRepository" />
  18. </v-col>
  19. <v-col cols="12" sm="6" v-if="organizationProfile.hasModule(['AdvancedEducationNotation'])">
  20. <UiInputEnum field="advancedEducationNotationType" :data="entry['advancedEducationNotationType']" enum-type="advanced_education_notation" @update="updateRepository" />
  21. </v-col>
  22. <v-col cols="12" sm="6">
  23. <UiInputText
  24. label="averageMax"
  25. field="average"
  26. type="number"
  27. :data="entry['average']"
  28. @update="updateRepository"
  29. :rules="rules().averageRules"
  30. />
  31. </v-col>
  32. </v-row>
  33. </v-container>
  34. </UiExpansionPanel>
  35. <!-- Bulletins -->
  36. <UiExpansionPanel id="bulletin_parameters" icon="fa-file-alt">
  37. <v-container fluid class="container">
  38. <v-row>
  39. <v-col cols="12" sm="6">
  40. <UiInputCheckbox field="bulletinWithTeacher" :data="entry['bulletinWithTeacher']" @update="updateRepository" />
  41. </v-col>
  42. <v-col cols="12" sm="6">
  43. <UiInputCheckbox field="bulletinPrintAddress" :data="entry['bulletinPrintAddress']" @update="updateRepository" />
  44. </v-col>
  45. <v-col cols="12" sm="6">
  46. <UiInputCheckbox field="bulletinSignatureDirector" :data="entry['bulletinSignatureDirector']" @update="updateRepository" />
  47. </v-col>
  48. <v-col cols="12" sm="6">
  49. <UiInputCheckbox field="bulletinDisplayLevelAcquired" :data="entry['bulletinDisplayLevelAcquired']" @update="updateRepository" />
  50. </v-col>
  51. <v-col cols="12" sm="6">
  52. <div class="d-flex flex-row">
  53. <UiInputCheckbox field="bulletinShowEducationWithoutEvaluation" :data="entry['bulletinShowEducationWithoutEvaluation']" @update="updateRepository" />
  54. <UiHelp>
  55. <p v-html="$t('bulletinShowEducationWithoutEvaluationHelp')" />
  56. </UiHelp>
  57. </div>
  58. </v-col>
  59. <v-col cols="12" sm="6">
  60. <UiInputCheckbox field="bulletinViewTestResults" :data="entry['bulletinViewTestResults']" @update="updateRepository" />
  61. </v-col>
  62. <v-col cols="12" sm="6">
  63. <UiInputCheckbox field="bulletinShowAbsences" :data="entry['bulletinShowAbsences']" @update="updateRepository" />
  64. </v-col>
  65. <v-col cols="12" sm="6">
  66. <UiInputCheckbox field="bulletinShowAverages" :data="entry['bulletinShowAverages']" @update="updateRepository" />
  67. </v-col>
  68. <v-col cols="12" sm="6">
  69. <div class="d-flex flex-row">
  70. <UiInputCheckbox field="bulletinEditWithoutEvaluation" :data="entry['bulletinEditWithoutEvaluation']" @update="updateRepository" />
  71. <UiHelp>
  72. <p v-html="$t('bulletinEditWithoutEvaluationHelp')" />
  73. </UiHelp>
  74. </div>
  75. </v-col>
  76. <v-col cols="12" sm="6">
  77. <UiInputEnum field="bulletinReceiver" :data="entry['bulletinReceiver']" enum-type="organization_bulletin_send_to" @update="updateRepository" />
  78. </v-col>
  79. </v-row>
  80. </v-container>
  81. </UiExpansionPanel>
  82. <!-- Abscences -->
  83. <UiExpansionPanel id="attendance" icon="fa-check">
  84. <v-container fluid class="container">
  85. <v-row>
  86. <v-col cols="12" sm="6">
  87. <UiInputCheckbox field="sendAttendanceEmail" :data="entry['sendAttendanceEmail']" @update="updateRepository" />
  88. </v-col>
  89. <v-col cols="12" sm="6" v-if="organizationProfile.hasModule(['Sms'])">
  90. <UiInputCheckbox field="sendAttendanceSms" :data="entry['sendAttendanceSms']" @update="updateRepository" />
  91. </v-col>
  92. </v-row>
  93. </v-container>
  94. </UiExpansionPanel>
  95. </v-expansion-panels>
  96. </template>
  97. </UiForm>
  98. </LayoutContainer>
  99. </template>
  100. <script lang="ts">
  101. import {computed, ComputedRef, defineComponent, reactive, useContext} from '@nuxtjs/composition-api'
  102. import { Organization } from '@/models/Organization/Organization'
  103. import { repositoryHelper } from '~/services/store/repository'
  104. import {useDataUtils} from "~/composables/data/useDataUtils";
  105. import {Parameters} from "~/models/Organization/Parameters";
  106. import {Model, Query, Item} from "@vuex-orm/core";
  107. import {$organizationProfile} from "~/services/profile/organizationProfile";
  108. import {Repository as VuexRepository} from "@vuex-orm/core/dist/src/repository/Repository";
  109. import ModelsUtils from "~/services/utils/modelsUtils";
  110. import i18n from "~/config/nuxtConfig/i18n";
  111. export default defineComponent({
  112. name: 'parameters',
  113. setup () {
  114. const {store, $dataProvider, app: {i18n}} = useContext()
  115. const organizationProfile = reactive($organizationProfile(store))
  116. const {getItemToEdit} = useDataUtils($dataProvider)
  117. const id = store.state.profile.organization.parametersId
  118. const {fetchState} = getItemToEdit(id, Parameters)
  119. const repositoryParameters: VuexRepository<Model> = repositoryHelper.getRepository(Parameters)
  120. const query: ComputedRef<Query> = computed(() => repositoryParameters.query())
  121. return {
  122. query: () => query.value,
  123. rules: () => getRules(i18n),
  124. id,
  125. fetchState,
  126. model: Parameters,
  127. organizationProfile,
  128. }
  129. }
  130. })
  131. function getRules (i18n: any) {
  132. return {
  133. averageRules: [
  134. (averageValue: number) => (averageValue >= 1 && averageValue <= 100) || i18n.t('between_0_and_100')
  135. ]
  136. }
  137. }
  138. </script>