From 86437338508d3a4ed9b5d29e7ca5c73430f3fcd8 Mon Sep 17 00:00:00 2001 From: alexm Date: Fri, 28 Feb 2025 14:28:09 +0100 Subject: [PATCH 1/4] feat(orderCatalog): load when reload section --- src/pages/Order/Card/OrderCatalog.vue | 28 ++++++++++++++++++++- src/pages/Order/Card/OrderCatalogFilter.vue | 20 +++++---------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/pages/Order/Card/OrderCatalog.vue b/src/pages/Order/Card/OrderCatalog.vue index 4b3992f21..dbb66c0ec 100644 --- a/src/pages/Order/Card/OrderCatalog.vue +++ b/src/pages/Order/Card/OrderCatalog.vue @@ -10,6 +10,7 @@ import OrderCatalogFilter from 'src/pages/Order/Card/OrderCatalogFilter.vue'; import VnSearchbar from 'src/components/ui/VnSearchbar.vue'; import { useArrayData } from 'src/composables/useArrayData'; import RightMenu from 'src/components/common/RightMenu.vue'; +import { onUnmounted } from 'vue'; const route = useRoute(); const router = useRouter(); @@ -23,16 +24,40 @@ const catalogParams = { const arrayData = useArrayData(dataKey, { url: 'Orders/CatalogFilter', userParams: catalogParams, + exprBuilder, + searchUrl: 'table', }); const store = arrayData.store; const tags = ref([]); const itemRefs = ref({}); -onMounted(() => { +onMounted(async () => { stateStore.rightDrawer = true; checkOrderConfirmation(); + + if ( + arrayData.store.userParams && + Object.keys(arrayData.store.userParams).some((key) => !key.startsWith('order')) + ) { + await arrayData.fetch({}); + } }); +onUnmounted(() => { + arrayData.destroy(); +}); + +function exprBuilder(param, value) { + switch (param) { + case 'categoryFk': + case 'typeFk': + return { [param]: value }; + case 'search': + if (/^\d+$/.test(value)) return { 'i.id': value }; + else return { 'i.name': { like: `%${value}%` } }; + } +} + async function checkOrderConfirmation() { const response = await axios.get(`Orders/${route.params.id}`); if (response.data.isConfirmed === 1) { @@ -96,6 +121,7 @@ watch( :tag-value="tagValue" :tags="tags" :initial-catalog-params="catalogParams" + :arrayData /> diff --git a/src/pages/Order/Card/OrderCatalogFilter.vue b/src/pages/Order/Card/OrderCatalogFilter.vue index 262f503fd..476d16df5 100644 --- a/src/pages/Order/Card/OrderCatalogFilter.vue +++ b/src/pages/Order/Card/OrderCatalogFilter.vue @@ -24,6 +24,10 @@ const props = defineProps({ type: Array, required: true, }, + arrayData: { + type: Object, + required: true, + }, }); const { t } = useI18n(); @@ -74,17 +78,6 @@ const loadTypes = async (id) => { typeList.value = data; }; -function exprBuilder(param, value) { - switch (param) { - case 'categoryFk': - case 'typeFk': - return { [param]: value }; - case 'search': - if (/^\d+$/.test(value)) return { 'i.id': value }; - else return { 'i.name': { like: `%${value}%` } }; - } -} - const applyTags = (tagInfo, params, search) => { if (!tagInfo || !tagInfo.values.length) { params.tagGroups = null; @@ -152,9 +145,8 @@ function addOrder(value, field, params) { :data-key="props.dataKey" :hidden-tags="['filter', 'orderFk', 'orderBy']" :unremovable-params="['orderFk', 'orderBy']" - :expr-builder="exprBuilder" :custom-tags="['tagGroups', 'categoryFk']" - :redirect="false" + :arrayData > diff --git a/src/pages/Customer/components/CustomerSummaryTable.vue b/src/pages/Customer/components/CustomerSummaryTable.vue index bb6f4442b..09c7e714c 100644 --- a/src/pages/Customer/components/CustomerSummaryTable.vue +++ b/src/pages/Customer/components/CustomerSummaryTable.vue @@ -20,7 +20,12 @@ const { t } = useI18n(); const route = useRoute(); const router = useRouter(); const { viewSummary } = useSummaryDialog(); - +const $props = defineProps({ + id: { + type: Number, + default: null, + }, +}); const filter = { include: [ { @@ -43,7 +48,7 @@ const filter = { }, }, ], - where: { clientFk: route.params.id }, + where: { clientFk: $props.id ?? route.params.id }, order: ['shipped DESC', 'id'], limit: 30, }; From 38658b6df940a0b04f134c4d1004086968d63c5f Mon Sep 17 00:00:00 2001 From: carlossa Date: Fri, 28 Feb 2025 15:31:01 +0100 Subject: [PATCH 3/4] fix: error 400 --- src/pages/Worker/Card/WorkerCalendarItem.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/Worker/Card/WorkerCalendarItem.vue b/src/pages/Worker/Card/WorkerCalendarItem.vue index 893a81c6d..72c8266dc 100644 --- a/src/pages/Worker/Card/WorkerCalendarItem.vue +++ b/src/pages/Worker/Card/WorkerCalendarItem.vue @@ -79,7 +79,7 @@ const editEvent = async (event) => { }; const { data } = await axios.patch( `Workers/${route.params.id}/updateAbsence`, - params + params, ); if (data) emit('refresh'); @@ -94,7 +94,7 @@ const deleteEvent = async (event, date) => { if (data) emit('onDeletedEvent', date.getTime()); }; -const handleDateSelected = (date) => { +const handleDateSelected = async (date) => { if (!props.absenceType) { notify(t('Choose an absence type from the right menu'), 'warning'); return; @@ -108,14 +108,14 @@ const handleDateSelected = (date) => { if (!event) createEvent(_date); }; -const handleEventSelected = (event, { year, month, day }) => { +const handleEventSelected = async (event, { year, month, day }) => { if (!props.absenceType) { notify(t('Choose an absence type from the right menu'), 'warning'); return; } const date = new Date(year, month - 1, day); - if (!event?.absenceId) createEvent(date); + if (!event?.absenceId) await createEvent(date); else if (event.type == props.absenceType.code) deleteEvent(event, date); else editEvent(event); }; From 65ed3025942841514a5a655901e2a52e82642932 Mon Sep 17 00:00:00 2001 From: carlossa Date: Fri, 28 Feb 2025 15:32:02 +0100 Subject: [PATCH 4/4] fix: hotfix calendar error400 --- src/pages/Worker/Card/WorkerCalendarItem.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Worker/Card/WorkerCalendarItem.vue b/src/pages/Worker/Card/WorkerCalendarItem.vue index 72c8266dc..86d227ad3 100644 --- a/src/pages/Worker/Card/WorkerCalendarItem.vue +++ b/src/pages/Worker/Card/WorkerCalendarItem.vue @@ -94,7 +94,7 @@ const deleteEvent = async (event, date) => { if (data) emit('onDeletedEvent', date.getTime()); }; -const handleDateSelected = async (date) => { +const handleDateSelected = (date) => { if (!props.absenceType) { notify(t('Choose an absence type from the right menu'), 'warning'); return;