From 0f7bb9cfe15268a5b0f35d1152f7c1f33dc369eb Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 15 Apr 2025 08:46:31 +0200 Subject: [PATCH] fix: fixed event inclusion duplicateKey because of props assignment in onMounted --- .../Zone/Card/ZoneEventInclusionForm.vue | 36 ++++++++----------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/src/pages/Zone/Card/ZoneEventInclusionForm.vue b/src/pages/Zone/Card/ZoneEventInclusionForm.vue index 0eb3b1344..fad51765c 100644 --- a/src/pages/Zone/Card/ZoneEventInclusionForm.vue +++ b/src/pages/Zone/Card/ZoneEventInclusionForm.vue @@ -56,6 +56,7 @@ const isNew = computed(() => props.isNewMode); const eventInclusionFormData = ref({ wdays: [] }); const dated = ref(props.date || Date.vnNew()); const _inclusionType = ref('indefinitely'); +const hasDeletedEvent = ref(false); const inclusionType = computed({ get: () => _inclusionType.value, set: (val) => { @@ -84,7 +85,7 @@ const createEvent = async () => { } const zoneIds = props.zoneIds?.length ? props.zoneIds : [route.params.id]; - for (const id of zoneIds) { + for (const zoneId of zoneIds) { let today = eventInclusionFormData.value.dated ? moment(eventInclusionFormData.value.dated) : moment(dated.value); @@ -92,7 +93,7 @@ const createEvent = async () => { const { data } = await axios.get(`Zones/getEventsFiltered`, { params: { - zoneFk: id, + zoneFk: zoneId, started: today, ended: lastDay, }, @@ -106,28 +107,19 @@ const createEvent = async () => { await axios.delete( `Zones/${existsExclusion?.zoneFk}/exclusions/${existsExclusion?.id}`, ); + await refetchEvents(); + hasDeletedEvent.value = true; } - const { - dated: formDated, - started, - ended, - type, - weekDays, - wdays, - } = eventInclusionFormData.value; - const payload = { - dated: formDated, - started, - ended, - type, - weekDays, - wdays, - }; - - if (isNew.value || props.eventType === 'exclusion') - await axios.post(`Zones/${id}/events`, payload); - else await axios.put(`Zones/${id}/events/${props.event?.id}`, payload); + delete eventInclusionFormData.value.id; + if (isNew.value || hasDeletedEvent.value) + await axios.post(`Zones/${zoneId}/events`, eventInclusionFormData.value); + else + await axios.put( + `Zones/${zoneId}/events/${props.event?.id}`, + eventInclusionFormData.value, + ); + hasDeletedEvent.value = false; } quasar.notify({ message: t('globals.dataSaved'),