codevdesign 1.0.33 → 1.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +12 -6
- package/assets/csqc.css +0 -259
- package/composants/csqcAide.vue +0 -55
- package/composants/csqcAlerteErreur.vue +0 -87
- package/composants/csqcChaise/chaiseConteneur.vue +0 -367
- package/composants/csqcChaise/chaiseItem.vue +0 -54
- package/composants/csqcCodeBudgetaireGenerique.vue +0 -336
- package/composants/csqcConfirmation.vue +0 -75
- package/composants/csqcDate.vue +0 -57
- package/composants/csqcDialogue.vue +0 -118
- package/composants/csqcEditeurTexteRiche.vue +0 -380
- package/composants/csqcEntete.vue +0 -163
- package/composants/csqcImportCSV.vue +0 -125
- package/composants/csqcModaleSaisie.vue +0 -95
- package/composants/csqcOptionSwitch.vue +0 -120
- package/composants/csqcRecherche.vue +0 -213
- package/composants/csqcRechercheUtilisateur.vue +0 -197
- package/composants/csqcSnackbar.vue +0 -88
- package/composants/csqcTable/csqcTable.vue +0 -383
- package/composants/csqcTable/csqcTableExportExcel.vue +0 -58
- package/composants/csqcTable/csqcTableModaleChoixColonnes.vue +0 -586
- package/composants/csqcTexteBilingue.vue +0 -175
- package/composants/csqcTiroir.vue +0 -156
- package/composants/gabarit/csqcMenu.vue +0 -281
- package/composants/gabarit/pivEntete.vue +0 -205
- package/composants/gabarit/pivPiedPage.vue +0 -70
- package/composants/gabarit/vueDefault.vue +0 -5
- package/composants/validateurs.ts +0 -183
- package/enums/choixLangue.ts +0 -10
- package/index.ts +0 -74
- package/locales/en.json +0 -100
- package/locales/fr.json +0 -101
- package/modeles/apiReponse.ts +0 -12
- package/modeles/assurancesAssuranceGeneraleGrics.ts +0 -10
- package/modeles/assurancesAssurancePersonnelleGrics.ts +0 -13
- package/modeles/assurancesContratGrics.ts +0 -14
- package/modeles/assurancesDetailsPrimeReguliereGrics.ts +0 -12
- package/modeles/assurancesDonneesAssureurGrics.ts +0 -13
- package/modeles/assurancesEmployeGrics.ts +0 -11
- package/modeles/assurancesGrics.ts +0 -14
- package/modeles/assurancesRegimeAssuranceGrics.ts +0 -9
- package/modeles/assurancesRegimeBaseEmployeurGrics.ts +0 -9
- package/modeles/assurancesRegimeBaseGrics.ts +0 -9
- package/modeles/composants/csqcMenuModele.ts +0 -18
- package/modeles/composants/datatableColonne.ts +0 -31
- package/modeles/composants/snackbar.ts +0 -18
- package/modeles/data.ts +0 -24
- package/modeles/droitIntervention.ts +0 -14
- package/modeles/employeAdresseGrics.ts +0 -13
- package/modeles/employeAdressesPersonnellesGrics.ts +0 -12
- package/modeles/employeAffectationCorpsEmploiGrics.ts +0 -9
- package/modeles/employeBanquesCongeBanqueGrics.ts +0 -9
- package/modeles/employeBanquesCongeGrics.ts +0 -14
- package/modeles/employeBanquesCongeRegimeAbsenceGrics.ts +0 -9
- package/modeles/employeCourrielsPersonnels.ts +0 -9
- package/modeles/employeCourrielsProfessionnels.ts +0 -9
- package/modeles/employeEmploisCategorieGrics.ts +0 -9
- package/modeles/employeEmploisClasseGrics.ts +0 -9
- package/modeles/employeEmploisCorpsEmploiGrics.ts +0 -9
- package/modeles/employeEmploisEtatEmploiGrics.ts +0 -9
- package/modeles/employeEmploisGrics.ts +0 -37
- package/modeles/employeEmploisGroupePaieGrics.ts +0 -9
- package/modeles/employeEmploisLieuTravailPrincipalGrics.ts +0 -10
- package/modeles/employeEmploisLieuxTravailSecondairesGrics.ts +0 -10
- package/modeles/employeEmploisRegimeAbsenceGrics.ts +0 -9
- package/modeles/employeEmploisSecteurGrics.ts +0 -9
- package/modeles/employeEmploisStatutEngagementGrics.ts +0 -9
- package/modeles/employeExperienceEmploiGrics.ts +0 -9
- package/modeles/employeExperienceEmployeGrics.ts +0 -12
- package/modeles/employeExperienceExperiencesGrics.ts +0 -11
- package/modeles/employeExperienceExperiencesTotalesGrics.ts +0 -15
- package/modeles/employeExperienceGrics.ts +0 -17
- package/modeles/employeGrics.ts +0 -31
- package/modeles/employeMinsLsCodev.ts +0 -10
- package/modeles/employeTelephoneGrics.ts +0 -12
- package/modeles/employeTelephonesPersonnelsGrics.ts +0 -11
- package/modeles/employeTelephonesProfessionnelsGrics.ts +0 -11
- package/modeles/groupeCE.ts +0 -14
- package/modeles/groupeCEIntervalle.ts +0 -13
- package/modeles/historiquesAbsenceBanqueGrics.ts +0 -9
- package/modeles/historiquesAbsenceGrics.ts +0 -21
- package/modeles/historiquesAbsenceLieuTravailGrics.ts +0 -9
- package/modeles/historiquesAbsenceSousBanqueGrics.ts +0 -9
- package/modeles/intervention.ts +0 -35
- package/modeles/motifsAbsenceBanque.ts +0 -9
- package/modeles/motifsAbsenceGrics.ts +0 -17
- package/modeles/motifsAbsenceRegimeAbsence.ts +0 -9
- package/modeles/motifsAbsenceSousMotifs.ts +0 -9
- package/modeles/motifsAbsenceTraitementBanques.ts +0 -11
- package/modeles/notificationGabaritDefaut.ts +0 -10
- package/modeles/response.ts +0 -12
- package/modeles/role.ts +0 -31
- package/modeles/roleMin.ts +0 -12
- package/modeles/syndicat.ts +0 -26
- package/modeles/syndicatGroupeCe.ts +0 -10
- package/modeles/syndicatResponsable.ts +0 -15
- package/modeles/syndicatUnite.ts +0 -10
- package/modeles/typeEnseignement.ts +0 -14
- package/modeles/typeTelephone.ts +0 -12
- package/modeles/unite.ts +0 -23
- package/modeles/uniteTypeEnseignement.ts +0 -12
- package/modeles/utilisateur.ts +0 -15
- package/outils/appAxios.ts +0 -116
- package/outils/csqcOutils.ts +0 -366
- package/outils/rafraichisseurToken.ts +0 -187
|
@@ -1,367 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="pa-2 mt-2 mb-1 mr-1">
|
|
3
|
-
<!-- Affiche la carte récap si activée et qu'il y a des unités -->
|
|
4
|
-
<div v-if="activerDivPreferences && unites && unites.length > 0">
|
|
5
|
-
<v-card
|
|
6
|
-
width="375"
|
|
7
|
-
variant="outlined"
|
|
8
|
-
>
|
|
9
|
-
<v-card-text class="pt-0 mt-0">
|
|
10
|
-
<v-progress-linear
|
|
11
|
-
v-if="chargementEnCours"
|
|
12
|
-
indeterminate
|
|
13
|
-
/>
|
|
14
|
-
|
|
15
|
-
<div
|
|
16
|
-
v-else
|
|
17
|
-
class="pt-2"
|
|
18
|
-
>
|
|
19
|
-
<div class="text-overline text-h6 mb-2">{{ texteTitre }}</div>
|
|
20
|
-
|
|
21
|
-
<div>
|
|
22
|
-
<v-list-item
|
|
23
|
-
v-for="uniteId in Object.keys(dictChaisesReleve)"
|
|
24
|
-
:key="uniteId"
|
|
25
|
-
class="mb-1"
|
|
26
|
-
>
|
|
27
|
-
<ChaisePreferenceItem
|
|
28
|
-
:uniteId="Number(uniteId)"
|
|
29
|
-
:preferences="preferences"
|
|
30
|
-
:dictChaisesReleve="dictChaisesReleve"
|
|
31
|
-
:unites="unites"
|
|
32
|
-
/>
|
|
33
|
-
</v-list-item>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
</v-card-text>
|
|
37
|
-
|
|
38
|
-
<v-card-actions>
|
|
39
|
-
<div class="flex-grow-1" />
|
|
40
|
-
<v-btn
|
|
41
|
-
v-if="!chargementEnCours"
|
|
42
|
-
rounded
|
|
43
|
-
variant="outlined"
|
|
44
|
-
size="small"
|
|
45
|
-
@click.stop="modifier"
|
|
46
|
-
>
|
|
47
|
-
{{ texteBoutonModifier }}
|
|
48
|
-
</v-btn>
|
|
49
|
-
</v-card-actions>
|
|
50
|
-
</v-card>
|
|
51
|
-
</div>
|
|
52
|
-
|
|
53
|
-
<csqcDialogue
|
|
54
|
-
ref="modale"
|
|
55
|
-
:operation-en-cours="chargementEnCours"
|
|
56
|
-
:btn-ok-desactiver="chargementEnCours"
|
|
57
|
-
:titre="texteTitre"
|
|
58
|
-
:btn-annuler-texte="texteBoutonAnnuler"
|
|
59
|
-
@annuler="annuler"
|
|
60
|
-
@ok="ok"
|
|
61
|
-
><template #content>
|
|
62
|
-
<div class="pt-2"></div>
|
|
63
|
-
<hr class="pt-0 mt-0 pl-0" />
|
|
64
|
-
<div class="pt-4">
|
|
65
|
-
<i>{{ info }}</i>
|
|
66
|
-
|
|
67
|
-
<v-progress-linear
|
|
68
|
-
v-if="chargementEnCours"
|
|
69
|
-
indeterminate
|
|
70
|
-
/>
|
|
71
|
-
|
|
72
|
-
<div
|
|
73
|
-
v-else
|
|
74
|
-
class="pt-4"
|
|
75
|
-
>
|
|
76
|
-
<v-row v-if="!toutesUnitesPreferencesSelectionnees">
|
|
77
|
-
<v-col cols="12">
|
|
78
|
-
<v-alert
|
|
79
|
-
v-model="afficherErreur"
|
|
80
|
-
type="error"
|
|
81
|
-
variant="tonal"
|
|
82
|
-
dismissible
|
|
83
|
-
>
|
|
84
|
-
{{ texteMessageErreur }}
|
|
85
|
-
</v-alert>
|
|
86
|
-
</v-col>
|
|
87
|
-
</v-row>
|
|
88
|
-
|
|
89
|
-
<v-row>
|
|
90
|
-
<v-col
|
|
91
|
-
v-for="uniteId in Object.keys(dictChaisesReleve)"
|
|
92
|
-
:key="uniteId"
|
|
93
|
-
cols="12"
|
|
94
|
-
sm="6"
|
|
95
|
-
md="4"
|
|
96
|
-
>
|
|
97
|
-
<label>{{ getUnite(uniteId)?.nom ?? '' }}</label>
|
|
98
|
-
<br />
|
|
99
|
-
<v-radio-group v-model="selection[uniteId]">
|
|
100
|
-
<v-radio
|
|
101
|
-
v-for="chaise in dictChaisesReleve[uniteId]"
|
|
102
|
-
:key="chaise.id"
|
|
103
|
-
:label="chaise.nom"
|
|
104
|
-
:value="chaise.id"
|
|
105
|
-
/>
|
|
106
|
-
</v-radio-group>
|
|
107
|
-
</v-col>
|
|
108
|
-
</v-row>
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
111
|
-
</template>
|
|
112
|
-
</csqcDialogue>
|
|
113
|
-
</div>
|
|
114
|
-
</template>
|
|
115
|
-
|
|
116
|
-
<script setup lang="ts">
|
|
117
|
-
import { ref, computed, onMounted, nextTick, watch, toRefs } from 'vue'
|
|
118
|
-
import { useDisplay } from 'vuetify'
|
|
119
|
-
import ChaisePreferenceItem from './chaiseItem.vue'
|
|
120
|
-
import csqcDialogue from '../csqcDialogue.vue'
|
|
121
|
-
import axios from '../../outils/appAxios'
|
|
122
|
-
import type { Unite } from '@/codev/modeles/unite'
|
|
123
|
-
import { useI18n } from 'vue-i18n'
|
|
124
|
-
const modale = ref<InstanceType<typeof csqcDialogue> | null>(null)
|
|
125
|
-
|
|
126
|
-
interface Chaise {
|
|
127
|
-
id: number
|
|
128
|
-
nom: string
|
|
129
|
-
}
|
|
130
|
-
interface Preference {
|
|
131
|
-
uniteId: number
|
|
132
|
-
chaiseId: number
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/** Props */
|
|
136
|
-
const props = defineProps<{
|
|
137
|
-
activerDivPreferences?: boolean
|
|
138
|
-
typeIntervenant: number
|
|
139
|
-
demandeId: number
|
|
140
|
-
formulaireId: number
|
|
141
|
-
urlBase: string
|
|
142
|
-
texteTitre?: string
|
|
143
|
-
texteInfo?: string
|
|
144
|
-
largeurModale?: number
|
|
145
|
-
}>()
|
|
146
|
-
const { typeIntervenant, demandeId, formulaireId, urlBase } = toRefs(props)
|
|
147
|
-
/** Emits */
|
|
148
|
-
const emit = defineEmits<{
|
|
149
|
-
(e: 'annuler'): void
|
|
150
|
-
(e: 'confirmer'): void
|
|
151
|
-
}>()
|
|
152
|
-
|
|
153
|
-
const { t } = useI18n({ useScope: 'global' })
|
|
154
|
-
const { xs } = useDisplay()
|
|
155
|
-
const isXs = computed(() => xs.value)
|
|
156
|
-
|
|
157
|
-
/** State */
|
|
158
|
-
const visible = ref(false)
|
|
159
|
-
const chargementEnCours = ref(false)
|
|
160
|
-
const afficherErreur = ref(false)
|
|
161
|
-
const unites = ref<Unite[]>([])
|
|
162
|
-
const preferences = ref<Preference[]>([])
|
|
163
|
-
const dictChaisesReleve = ref<Record<string, Chaise[]>>({})
|
|
164
|
-
const selection = ref<Record<string, number>>({})
|
|
165
|
-
const modeModifier = ref(false)
|
|
166
|
-
|
|
167
|
-
/** Textes */
|
|
168
|
-
const texteMessageErreur = computed(() => t('csqc.csqcChaise.erreur'))
|
|
169
|
-
const texteBoutonAnnuler = computed(() => t('csqc.bouton.annuler'))
|
|
170
|
-
const texteBoutonModifier = computed(() => t('csqc.bouton.modifier'))
|
|
171
|
-
const texteTitre = computed(() =>
|
|
172
|
-
props.texteTitre && props.texteTitre.length > 0 ? props.texteTitre : t('csqc.csqcChaise.titre'),
|
|
173
|
-
)
|
|
174
|
-
const info = computed(() =>
|
|
175
|
-
props.texteInfo && props.texteInfo.length > 0 ? props.texteInfo : t('csqc.csqcChaise.info'),
|
|
176
|
-
)
|
|
177
|
-
|
|
178
|
-
// Option A — ne recharger que si typeIntervenant change
|
|
179
|
-
|
|
180
|
-
const largeur = computed(() => props.largeurModale ?? 1200)
|
|
181
|
-
const activerDivPreferences = computed(() => props.activerDivPreferences ?? true)
|
|
182
|
-
|
|
183
|
-
function getUnite(uniteId: string) {
|
|
184
|
-
return unites.value.find((u: Unite) => String(u.id) === String(uniteId))
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/*
|
|
188
|
-
function estPrefere(uniteId: string | number, chaiseId: number) {
|
|
189
|
-
return preferences.value.some(p => String(p.uniteId) === String(uniteId) && p.chaiseId === chaiseId)
|
|
190
|
-
}*/
|
|
191
|
-
|
|
192
|
-
/** Sélection par défaut à partir des préférences existantes */
|
|
193
|
-
function definitionSelectionDepart() {
|
|
194
|
-
for (const uniteId in dictChaisesReleve.value) {
|
|
195
|
-
const chaises = dictChaisesReleve.value[uniteId] ?? []
|
|
196
|
-
const pref = preferences.value.find(
|
|
197
|
-
p => String(p.uniteId) === String(uniteId) && chaises.some(chaise => chaise.id === p.chaiseId),
|
|
198
|
-
)
|
|
199
|
-
const chaiseIdDefaut = pref?.chaiseId ?? (chaises.length === 1 ? (chaises[0]?.id ?? -1) : -1)
|
|
200
|
-
selection.value[uniteId] = chaiseIdDefaut
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/** Toutes les unités ont-elles une préférence sélectionnée ? */
|
|
205
|
-
const toutesUnitesPreferencesSelectionnees = computed(() => {
|
|
206
|
-
for (const uniteId in dictChaisesReleve.value) {
|
|
207
|
-
const chaises = dictChaisesReleve.value[uniteId] ?? []
|
|
208
|
-
const uniteOk = chaises.some(c => preferences.value.some(p => p.chaiseId === c.id))
|
|
209
|
-
if (!uniteOk) return false
|
|
210
|
-
}
|
|
211
|
-
return true
|
|
212
|
-
})
|
|
213
|
-
|
|
214
|
-
async function charger() {
|
|
215
|
-
await chargerUnites()
|
|
216
|
-
await chargementPreferences()
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
async function chargerUnites() {
|
|
220
|
-
const url = `${props.urlBase}/api/ComposantUI/Unites`
|
|
221
|
-
const unitesData = (await axios.getAxios().get<Unite[]>(url)) as unknown as Unite[]
|
|
222
|
-
unites.value = unitesData ?? []
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
async function chargementPreferences() {
|
|
226
|
-
chargementEnCours.value = true
|
|
227
|
-
|
|
228
|
-
// Chaises par unité
|
|
229
|
-
{
|
|
230
|
-
const data = (await axios
|
|
231
|
-
.getAxios()
|
|
232
|
-
.get<
|
|
233
|
-
Record<string, Chaise[]>
|
|
234
|
-
>(`${props.urlBase}/api/ComposantUI/ReleveDe/${props.typeIntervenant}/Demande/${props.demandeId}`)) as unknown as Record<
|
|
235
|
-
string,
|
|
236
|
-
Chaise[]
|
|
237
|
-
>
|
|
238
|
-
dictChaisesReleve.value = data ?? {}
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
// Préférences de l'usager
|
|
242
|
-
{
|
|
243
|
-
const data = (await axios
|
|
244
|
-
.getAxios()
|
|
245
|
-
.get<
|
|
246
|
-
Preference[]
|
|
247
|
-
>(`${props.urlBase}/api/ComposantUI/Preferences/${props.formulaireId}/TypeIntervenant/${props.typeIntervenant}`)) as unknown as Preference[]
|
|
248
|
-
preferences.value = (data ?? []).filter(Boolean)
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
definitionSelectionDepart()
|
|
252
|
-
|
|
253
|
-
// Sauvegarde immédiate pour les choix uniques (si demandé par ton flux)
|
|
254
|
-
await sauvegarder()
|
|
255
|
-
|
|
256
|
-
chargementEnCours.value = false
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
async function ouvrir() {
|
|
260
|
-
if (!activerDivPreferences.value) {
|
|
261
|
-
await chargementPreferences()
|
|
262
|
-
visible.value = true
|
|
263
|
-
return
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
if (!toutesUnitesPreferencesSelectionnees.value) {
|
|
267
|
-
visible.value = true
|
|
268
|
-
return
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
await ok()
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
function annuler() {
|
|
275
|
-
visible.value = false
|
|
276
|
-
modeModifier.value = false
|
|
277
|
-
emit('annuler')
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
function modifier() {
|
|
281
|
-
modeModifier.value = true
|
|
282
|
-
visible.value = true
|
|
283
|
-
modale.value?.ouvrir()
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
async function sauvegarder() {
|
|
287
|
-
for (const uniteId in dictChaisesReleve.value) {
|
|
288
|
-
const chaiseId = selection.value[uniteId]
|
|
289
|
-
if (!chaiseId || chaiseId <= 0) continue
|
|
290
|
-
|
|
291
|
-
const chaises = dictChaisesReleve.value[uniteId] ?? []
|
|
292
|
-
if (chaises.length === 0) continue
|
|
293
|
-
|
|
294
|
-
// Préférence existante pour CETTE unité ?
|
|
295
|
-
const prefIndexDeUnite = preferences.value.findIndex(p => chaises.some(c => c.id === p.chaiseId))
|
|
296
|
-
|
|
297
|
-
try {
|
|
298
|
-
const data = (await axios
|
|
299
|
-
.getAxios()
|
|
300
|
-
.put<Preference>(
|
|
301
|
-
`${props.urlBase}/api/ComposantUI/Preferences/${props.formulaireId}` +
|
|
302
|
-
`/Unite/${encodeURIComponent(uniteId)}` +
|
|
303
|
-
`/Chaise/${chaiseId}` +
|
|
304
|
-
`/TypeIntervenant/${props.typeIntervenant}`,
|
|
305
|
-
)) as unknown as Preference
|
|
306
|
-
const itemRecu = data as Preference
|
|
307
|
-
|
|
308
|
-
if (prefIndexDeUnite >= 0) {
|
|
309
|
-
// remplace l'élément à l'index
|
|
310
|
-
preferences.value.splice(prefIndexDeUnite, 1, itemRecu)
|
|
311
|
-
} else {
|
|
312
|
-
// ajoute un nouvel élément
|
|
313
|
-
preferences.value.push(itemRecu)
|
|
314
|
-
}
|
|
315
|
-
} catch (e) {
|
|
316
|
-
console.error(e)
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
async function soumettre() {
|
|
321
|
-
modeModifier.value = false
|
|
322
|
-
await ouvrir()
|
|
323
|
-
}
|
|
324
|
-
/** Validation finale */
|
|
325
|
-
async function ok() {
|
|
326
|
-
await sauvegarder()
|
|
327
|
-
|
|
328
|
-
if (toutesUnitesPreferencesSelectionnees.value) {
|
|
329
|
-
if (!modeModifier.value) emit('confirmer')
|
|
330
|
-
visible.value = false
|
|
331
|
-
modeModifier.value = false
|
|
332
|
-
} else {
|
|
333
|
-
afficherErreur.value = true
|
|
334
|
-
await nextTick()
|
|
335
|
-
}
|
|
336
|
-
modale.value?.fermer()
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
onMounted(async () => {
|
|
340
|
-
chargementEnCours.value = true
|
|
341
|
-
await charger()
|
|
342
|
-
chargementEnCours.value = false
|
|
343
|
-
})
|
|
344
|
-
|
|
345
|
-
// si le type d'intervenant change
|
|
346
|
-
watch(typeIntervenant, async (nv, ov) => {
|
|
347
|
-
if (nv === ov) return
|
|
348
|
-
await rechargerPourTypeIntervenant()
|
|
349
|
-
})
|
|
350
|
-
|
|
351
|
-
async function rechargerPourTypeIntervenant() {
|
|
352
|
-
try {
|
|
353
|
-
chargementEnCours.value = true
|
|
354
|
-
preferences.value = []
|
|
355
|
-
dictChaisesReleve.value = {}
|
|
356
|
-
selection.value = {}
|
|
357
|
-
afficherErreur.value = false
|
|
358
|
-
|
|
359
|
-
// recharge les données dépendantes
|
|
360
|
-
await chargementPreferences()
|
|
361
|
-
} finally {
|
|
362
|
-
chargementEnCours.value = false
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
defineExpose({ charger, soumettre })
|
|
367
|
-
</script>
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<v-list-item-title>{{ nomUnite }}</v-list-item-title>
|
|
4
|
-
<v-list-item-subtitle v-if="getPreference != ''">
|
|
5
|
-
{{ getPreference }}
|
|
6
|
-
</v-list-item-subtitle>
|
|
7
|
-
<v-list-item-subtitle
|
|
8
|
-
v-if="getPreference == ''"
|
|
9
|
-
class="messageErreurChaiseItem"
|
|
10
|
-
>
|
|
11
|
-
{{ $t('csqc.message.chaiseSelection') }}
|
|
12
|
-
</v-list-item-subtitle>
|
|
13
|
-
</div>
|
|
14
|
-
</template>
|
|
15
|
-
<script lang="ts" setup>
|
|
16
|
-
import { computed } from 'vue'
|
|
17
|
-
|
|
18
|
-
// Définition des props
|
|
19
|
-
const props = defineProps<{
|
|
20
|
-
uniteId: number
|
|
21
|
-
preferences: { chaiseId: number }[]
|
|
22
|
-
dictChaisesReleve: Record<number, { id: number; nom: string }[]>
|
|
23
|
-
unites: { id: number; nom: string }[]
|
|
24
|
-
}>()
|
|
25
|
-
|
|
26
|
-
const nomUnite = computed(() => {
|
|
27
|
-
if (!props.uniteId || !props.unites?.length) {
|
|
28
|
-
return ''
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const unite = props.unites.find(u => u.id == props.uniteId)
|
|
32
|
-
return unite?.nom || ''
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
const getPreference = computed(() => {
|
|
36
|
-
const chaises = props.dictChaisesReleve?.[props.uniteId] ?? []
|
|
37
|
-
const prefs = props.preferences ?? []
|
|
38
|
-
|
|
39
|
-
for (const chaise of chaises) {
|
|
40
|
-
if (prefs.some(p => p.chaiseId === chaise.id)) {
|
|
41
|
-
return chaise.nom
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return ''
|
|
46
|
-
})
|
|
47
|
-
</script>
|
|
48
|
-
|
|
49
|
-
<style scoped>
|
|
50
|
-
.messageErreurChaiseItem {
|
|
51
|
-
color: red !important;
|
|
52
|
-
font-style: italic;
|
|
53
|
-
}
|
|
54
|
-
</style>
|