From 65c2b24b782e020475ef2b9f720e6b871507102f Mon Sep 17 00:00:00 2001 From: robert Date: Mon, 13 Jan 2025 14:30:58 +0100 Subject: [PATCH 1/4] feat: refs #8387 crudModel --- src/components/CrudModel.vue | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/components/CrudModel.vue b/src/components/CrudModel.vue index 940b72ff0..81276e7b0 100644 --- a/src/components/CrudModel.vue +++ b/src/components/CrudModel.vue @@ -151,14 +151,22 @@ function filter(value, update, filterOptions) { } async function onSubmit() { - if (!hasChanges.value) { - return quasar.notify({ + try { + if (!hasChanges.value) { + return quasar.notify({ + type: 'negative', + message: t('globals.noChanges'), + }); + } + isLoading.value = true; + await saveChanges($props.saveFn ? formData.value : null); + } catch (e) { + const errMessage = e?.response?.data?.error?.message; + quasar.notify({ type: 'negative', - message: t('globals.noChanges'), + message: t(`${errMessage}`), }); } - isLoading.value = true; - await saveChanges($props.saveFn ? formData.value : null); } async function onSubmitAndGo() { -- 2.40.1 From 0b9788d38b0159c277dfc244f5628dbd75cf2f82 Mon Sep 17 00:00:00 2001 From: robert Date: Wed, 15 Jan 2025 10:33:49 +0100 Subject: [PATCH 2/4] feat: refs #8387 changes --- src/components/CrudModel.vue | 8 ++------ src/pages/Item/Card/ItemTags.vue | 14 +++++++++++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/components/CrudModel.vue b/src/components/CrudModel.vue index 81276e7b0..7e8c6a3de 100644 --- a/src/components/CrudModel.vue +++ b/src/components/CrudModel.vue @@ -83,7 +83,7 @@ const saveButtonRef = ref(null); const watchChanges = ref(); const formUrl = computed(() => $props.url); -const emit = defineEmits(['onFetch', 'update:selected', 'saveChanges']); +const emit = defineEmits(['onFetch', 'update:selected', 'saveChanges', 'dataError']); defineExpose({ reload, @@ -161,11 +161,7 @@ async function onSubmit() { isLoading.value = true; await saveChanges($props.saveFn ? formData.value : null); } catch (e) { - const errMessage = e?.response?.data?.error?.message; - quasar.notify({ - type: 'negative', - message: t(`${errMessage}`), - }); + emit('dataError', e); } } diff --git a/src/pages/Item/Card/ItemTags.vue b/src/pages/Item/Card/ItemTags.vue index 992b1042b..d64929f78 100644 --- a/src/pages/Item/Card/ItemTags.vue +++ b/src/pages/Item/Card/ItemTags.vue @@ -9,6 +9,7 @@ import VnInput from 'src/components/common/VnInput.vue'; import FetchData from 'components/FetchData.vue'; import VnSelect from 'src/components/common/VnSelect.vue'; import axios from 'axios'; +import { useQuasar } from 'quasar'; const route = useRoute(); const { t } = useI18n(); @@ -16,7 +17,7 @@ const { t } = useI18n(); const itemTagsRef = ref(null); const tagOptions = ref([]); const valueOptionsMap = ref(new Map()); - +const quasar = useQuasar(); const getSelectedTagValues = async (tag) => { if (!tag.tagFk && tag.tag.isFree) return; const filter = { @@ -63,6 +64,15 @@ const insertTag = (rows) => { const submitTags = async (data) => { itemTagsRef.value.onSubmit(data); }; + +const errMessage = ref(); +function showError(error) { + errMessage.value = error?.response?.data?.error?.message; + quasar.notify({ + type: 'negative', + message: t(`${errMessage.value}`), + }); +}