From 36102aff0021dbf35f3936d03e1918a2e4a70bec Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 25 Apr 2025 13:52:05 +0200 Subject: [PATCH 01/16] style: adjust column alignment and add class for improved layout --- src/pages/Ticket/TicketAdvance.vue | 23 +++++++++++++++-------- src/pages/Ticket/TicketFuture.vue | 21 ++++++++++++++++++--- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/pages/Ticket/TicketAdvance.vue b/src/pages/Ticket/TicketAdvance.vue index bf3593acd..c0b6c2bb4 100644 --- a/src/pages/Ticket/TicketAdvance.vue +++ b/src/pages/Ticket/TicketAdvance.vue @@ -101,7 +101,7 @@ const ticketColumns = computed(() => [ format: (row, dashIfEmpty) => dashIfEmpty(row.lines), }, { - align: 'left', + align: 'right', label: t('advanceTickets.import'), name: 'totalWithVat', hidden: true, @@ -169,15 +169,17 @@ const ticketColumns = computed(() => [ label: t('advanceTickets.notMovableLines'), headerClass: 'horizontal-separator', name: 'notMovableLines', + class: 'shrink', }, { align: 'left', label: t('advanceTickets.futureLines'), headerClass: 'horizontal-separator', name: 'futureLines', + class: 'shrink', }, { - align: 'left', + align: 'right', label: t('advanceTickets.futureImport'), name: 'futureTotalWithVat', hidden: true, @@ -332,7 +334,12 @@ watch( if (!$el) return; const head = $el.querySelector('thead'); const firstRow = $el.querySelector('thead > tr'); - + const headSelectionCol = $el.querySelector( + 'thead tr.bg-header th.q-table--col-auto-width', + ); + if (headSelectionCol) { + headSelectionCol.classList.add('horizontal-separator'); + } const newRow = document.createElement('tr'); destinationElRef.value = document.createElement('th'); originElRef.value = document.createElement('th'); @@ -341,8 +348,10 @@ watch( destinationElRef.value.classList.add('text-uppercase', 'color-vn-label'); originElRef.value.classList.add('text-uppercase', 'color-vn-label'); - destinationElRef.value.setAttribute('colspan', '7'); - originElRef.value.setAttribute('colspan', '9'); + originElRef.value.classList.add('advance-icon'); + + destinationElRef.value.setAttribute('colspan', '9'); + originElRef.value.setAttribute('colspan', '11'); destinationElRef.value.textContent = `${t( 'advanceTickets.destination', @@ -453,10 +462,8 @@ watch( selection: 'multiple', }" v-model:selected="selectedTickets" - :pagination="{ rowsPerPage: 0 }" - :no-data-label="t('globals.noResults')" :right-search="false" - :order="['futureTotalWithVat ASC']" + :order="['futureTotalWithVat ASC']" auto-load :disable-option="{ card: true }" > diff --git a/src/pages/Ticket/TicketFuture.vue b/src/pages/Ticket/TicketFuture.vue index 6ed3afcc6..0939708c1 100644 --- a/src/pages/Ticket/TicketFuture.vue +++ b/src/pages/Ticket/TicketFuture.vue @@ -85,6 +85,7 @@ const ticketColumns = computed(() => [ label: t('advanceTickets.liters'), name: 'liters', align: 'left', + class: 'shrink', headerClass: 'horizontal-separator', }, { @@ -177,7 +178,12 @@ watch( if (!$el) return; const head = $el.querySelector('thead'); const firstRow = $el.querySelector('thead > tr'); - + const headSelectionCol = $el.querySelector( + 'thead tr.bg-header th.q-table--col-auto-width', + ); + if (headSelectionCol) { + headSelectionCol.classList.add('horizontal-separator'); + } const newRow = document.createElement('tr'); destinationElRef.value = document.createElement('th'); originElRef.value = document.createElement('th'); @@ -185,9 +191,10 @@ watch( newRow.classList.add('bg-header'); destinationElRef.value.classList.add('text-uppercase', 'color-vn-label'); originElRef.value.classList.add('text-uppercase', 'color-vn-label'); + originElRef.value.classList.add('advance-icon'); - destinationElRef.value.setAttribute('colspan', '7'); - originElRef.value.setAttribute('colspan', '9'); + destinationElRef.value.setAttribute('colspan', '9'); + originElRef.value.setAttribute('colspan', '7'); originElRef.value.textContent = `${t('advanceTickets.origin')}`; destinationElRef.value.textContent = `${t('advanceTickets.destination')}`; @@ -371,4 +378,12 @@ watch( :deep(.horizontal-bottom-separator) { border-bottom: 4px solid white !important; } +:deep(th.advance-icon::after) { + content: '>>'; + font-size: larger; + position: absolute; + text-align: center; + float: 0; + left: 0; +} From 797a48b04cb16131b32611550c4d1ee942ad9a95 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 25 Apr 2025 15:40:06 +0200 Subject: [PATCH 02/16] feat(TicketAdvance): add futurePreparation column to ticket table --- src/pages/Ticket/TicketAdvance.vue | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/pages/Ticket/TicketAdvance.vue b/src/pages/Ticket/TicketAdvance.vue index c0b6c2bb4..aa78fe7f0 100644 --- a/src/pages/Ticket/TicketAdvance.vue +++ b/src/pages/Ticket/TicketAdvance.vue @@ -145,6 +145,15 @@ const ticketColumns = computed(() => [ headerClass: 'horizontal-separator', name: 'futureLiters', }, + { + label: t('advanceTickets.preparation'), + name: 'futurePreparation', + field: 'futurePreparation', + align: 'left', + sortable: true, + headerClass: 'horizontal-separator', + columnFilter: false, + }, { align: 'left', label: t('advanceTickets.futureZone'), From 5e27f56796602f85109ffdb27bfac71b27decf30 Mon Sep 17 00:00:00 2001 From: alexm Date: Mon, 28 Apr 2025 11:28:13 +0200 Subject: [PATCH 03/16] fix(useArrayData): ensure options are set correctly on mount --- src/composables/useArrayData.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js index 9f95d639c..b046dfada 100644 --- a/src/composables/useArrayData.js +++ b/src/composables/useArrayData.js @@ -19,7 +19,7 @@ export function useArrayData(key, userOptions) { let canceller = null; onMounted(() => { - setOptions(); + setOptions(userOptions ?? {}); reset(['skip']); const query = route.query; @@ -39,9 +39,8 @@ export function useArrayData(key, userOptions) { setCurrentFilter(); }); - if (key && userOptions) setOptions(); - - function setOptions(params = userOptions) { + function setOptions(params) { + if (!params) return; const allowedOptions = [ 'url', 'filter', From b90c2bc2a33faa092d7a416792f9ce534244a9d8 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Mon, 28 Apr 2025 13:55:35 +0200 Subject: [PATCH 04/16] fix: remove unused searchFn after each filter change --- .../Ticket/Negative/TicketLackFilter.vue | 5 ---- src/pages/Ticket/TicketAdvanceFilter.vue | 18 +++--------- src/pages/Ticket/TicketFilter.vue | 17 +---------- src/pages/Ticket/TicketFutureFilter.vue | 29 ++++--------------- 4 files changed, 11 insertions(+), 58 deletions(-) diff --git a/src/pages/Ticket/Negative/TicketLackFilter.vue b/src/pages/Ticket/Negative/TicketLackFilter.vue index 78c030476..780c7e4b9 100644 --- a/src/pages/Ticket/Negative/TicketLackFilter.vue +++ b/src/pages/Ticket/Negative/TicketLackFilter.vue @@ -130,8 +130,6 @@ const setUserParams = (params) => { ($event) => onCategoryChange($event, searchFn) " :options="categoriesOptions" - option-value="id" - option-label="name" hide-selected dense filled @@ -145,10 +143,7 @@ const setUserParams = (params) => { await getItemPackingTypes()); {{ formatFn(tag.value) }} -