From ce5c21f4fa893e834f08a20b481a81fa7bb8fa3d Mon Sep 17 00:00:00 2001 From: Jon Date: Mon, 3 Feb 2025 16:20:16 +0100 Subject: [PATCH 01/61] fix: refs #8370 change param rely on month --- src/pages/Worker/Card/WorkerTimeControl.vue | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/pages/Worker/Card/WorkerTimeControl.vue b/src/pages/Worker/Card/WorkerTimeControl.vue index c580e5202..d181c70af 100644 --- a/src/pages/Worker/Card/WorkerTimeControl.vue +++ b/src/pages/Worker/Card/WorkerTimeControl.vue @@ -345,17 +345,35 @@ const getMailStates = async (date) => { const url = `WorkerTimeControls/${route.params.id}/getMailStates`; const month = date.getMonth() + 1; const prevMonth = month == 1 ? 12 : month - 1; + const postMonth = month == 12 ? 1 : month + 1; const params = { month, year: date.getFullYear(), }; const curMonthStates = (await axios.get(url, { params })).data; + + if (prevMonth == 12) { + params.year = params.year - 1; + } const prevMonthStates = ( await axios.get(url, { params: { ...params, month: prevMonth } }) ).data; - workerTimeControlMails.value = curMonthStates.concat(prevMonthStates); + if (postMonth == 1) { + params.year = date.getFullYear() + 1; + } + + const postMonthStates = ( + await axios.get(url, { + params: { ...params, month: postMonth }, + }) + ).data; + + workerTimeControlMails.value = curMonthStates.concat( + prevMonthStates, + postMonthStates + ); }; const showWorkerTimeForm = (propValue, formType) => { From cad6b077f066ee15018d2f904698feeb8ef4666d Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sat, 15 Feb 2025 17:45:06 +0100 Subject: [PATCH 02/61] fix: ticketfilter from and to --- src/components/ui/VnSearchbar.vue | 10 ++++++++++ src/composables/useArrayData.js | 15 +++++++++++---- src/pages/Ticket/TicketList.vue | 3 +++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/components/ui/VnSearchbar.vue b/src/components/ui/VnSearchbar.vue index 30e4135e2..98be77d09 100644 --- a/src/components/ui/VnSearchbar.vue +++ b/src/components/ui/VnSearchbar.vue @@ -69,6 +69,10 @@ const props = defineProps({ type: Boolean, default: true, }, + excludeParams: { + type: Object, + default: null, + }, }); const searchText = ref(); @@ -135,6 +139,12 @@ async function search() { }; delete filter.params.search; } + if (props.excludeParams) { + filter.params = { + ...filter.params, + exclude: props.excludeParams, + }; + } await arrayData.applyFilter(filter); searchText.value = undefined; } diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js index bd3cecf08..250756c59 100644 --- a/src/composables/useArrayData.js +++ b/src/composables/useArrayData.js @@ -74,12 +74,13 @@ export function useArrayData(key, userOptions) { } } - async function fetch({ append = false, updateRouter = true }) { + async function fetch(fetchOptions) { + let { append = false, updateRouter = true } = fetchOptions; if (!store.url) return; cancelRequest(); canceller = new AbortController(); - const { params, limit } = setCurrentFilter(); + let { params, limit } = setCurrentFilter(); let exprFilter; if (store?.exprBuilder) { @@ -97,7 +98,10 @@ export function useArrayData(key, userOptions) { if (!params?.filter?.order?.length) delete params?.filter?.order; params.filter = JSON.stringify(params.filter); - + if (fetchOptions?.exclude) { + params = { ...params, ...fetchOptions.exclude }; + delete params.exclude; + } store.isLoading = true; const response = await axios.get(store.url, { signal: canceller.signal, @@ -145,8 +149,11 @@ export function useArrayData(key, userOptions) { async function applyFilter({ filter, params }, fetchOptions = {}) { if (filter) store.userFilter = filter; store.filter = {}; + if (params?.exclude) { + fetchOptions = { ...fetchOptions, exclude: params.exclude }; + delete params.exclude; + } if (params) store.userParams = { ...params }; - const response = await fetch(fetchOptions); return response; } diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue index 8df19c0d9..b16472764 100644 --- a/src/pages/Ticket/TicketList.vue +++ b/src/pages/Ticket/TicketList.vue @@ -445,6 +445,9 @@ function setReference(data) { :array-data-props="{ url: 'Tickets/filter', order: ['shippedDate DESC', 'shippedHour ASC', 'zoneLanding ASC', 'id'], + label: t('Search items'), + excludeParams: { ...userParams }, + searchRemoveParams: true, exprBuilder, }" > From 3b3332f15cd6ec6431f01f31fc2f4655353e5676 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Sat, 15 Feb 2025 23:59:22 +0100 Subject: [PATCH 03/61] feat: use clientFK in dialog --- .../Customer/composables/getAddresses.js | 8 +++---- src/pages/Ticket/TicketList.vue | 22 ++++++++++++++++--- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/pages/Customer/composables/getAddresses.js b/src/pages/Customer/composables/getAddresses.js index e65e64455..5f18530e7 100644 --- a/src/pages/Customer/composables/getAddresses.js +++ b/src/pages/Customer/composables/getAddresses.js @@ -1,15 +1,15 @@ import axios from 'axios'; -export async function getAddresses(clientId, _filter = {}) { +export async function getAddresses(clientId, _filter = {}) { if (!clientId) return; const filter = { ..._filter, - fields: ['nickname', 'street', 'city', 'id'], + fields: ['nickname', 'street', 'city', 'id', 'isActive'], where: { isActive: true }, - order: 'nickname ASC', + order: ['isDefaultAddress DESC', 'isActive DESC', 'nickname ASC'], }; const params = { filter: JSON.stringify(filter) }; return await axios.get(`Clients/${clientId}/addresses`, { params, }); -}; \ No newline at end of file +} diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue index b16472764..6490f3b8e 100644 --- a/src/pages/Ticket/TicketList.vue +++ b/src/pages/Ticket/TicketList.vue @@ -1,6 +1,6 @@