From 92244ad96b723a1de0c4f83d3181ee171aa9daa1 Mon Sep 17 00:00:00 2001 From: alexm Date: Wed, 29 May 2024 07:47:47 +0200 Subject: [PATCH 1/2] feat(VnTable): refs #6825 merge where's --- src/components/VnTable/VnFilter.vue | 2 +- src/composables/useArrayData.js | 15 +- .../ExtendedList/CustomerExtendedList.vue | 61 ++ .../CustomerExtendedListActions.vue | 60 -- .../CustomerExtendedListFilter.vue | 571 ------------------ 5 files changed, 76 insertions(+), 633 deletions(-) delete mode 100644 src/pages/Customer/ExtendedList/CustomerExtendedListActions.vue delete mode 100644 src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue diff --git a/src/components/VnTable/VnFilter.vue b/src/components/VnTable/VnFilter.vue index 0eb2e2a19..d572b8be0 100644 --- a/src/components/VnTable/VnFilter.vue +++ b/src/components/VnTable/VnFilter.vue @@ -106,7 +106,7 @@ async function addFilter(value) { let params = { [field]: value }; if (columnFilter.value?.inWhere) { if (columnFilter.value.alias) field = columnFilter.value.alias + '.' + field; - params = { filter: { where: { [field]: value } } }; + return await arrayData.addFilterWhere(params); } await arrayData.addFilter({ params }); } diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js index ba6f62810..81a2bf01a 100644 --- a/src/composables/useArrayData.js +++ b/src/composables/useArrayData.js @@ -150,6 +150,13 @@ export function useArrayData(key, userOptions) { return { filter, params }; } + async function addFilterWhere(where) { + const storedFilter = { ...store.userFilter }; + if (!storedFilter?.where) storedFilter.where = {}; + where = { ...storedFilter.where, ...where }; + await addFilter({ filter: { where } }); + } + function sanitizerParams(params, exprBuilder) { for (const param in params) { if (params[param] === '' || params[param] === null) { @@ -188,7 +195,12 @@ export function useArrayData(key, userOptions) { if (store.limit) query.limit = store.limit; if (store.skip) query.skip = store.skip; if (store.userParams && Object.keys(store.userParams).length !== 0) - query.params = JSON.stringify(store.userParams); + query.params = store.userParams; + if (store.userFilter && Object.keys(store.userFilter).length !== 0) { + if (!query.params) query.params = {}; + query.params.filter = store.userFilter; + } + if (query.params) query.params = JSON.stringify(query.params); router.replace({ path: route.path, @@ -203,6 +215,7 @@ export function useArrayData(key, userOptions) { fetch, applyFilter, addFilter, + addFilterWhere, refresh, destroy, loadMore, diff --git a/src/pages/Customer/ExtendedList/CustomerExtendedList.vue b/src/pages/Customer/ExtendedList/CustomerExtendedList.vue index 3edb680fa..3a026763d 100644 --- a/src/pages/Customer/ExtendedList/CustomerExtendedList.vue +++ b/src/pages/Customer/ExtendedList/CustomerExtendedList.vue @@ -198,16 +198,44 @@ const columns = computed(() => [ align: 'left', label: t('customer.extendedList.tableVisibleColumns.payMethodFk'), name: 'payMethodFk', + columnFilter: { + component: 'select', + attrs: { + url: 'PayMethods', + }, + inWhere: true, + }, + format: (row, dashIfEmpty) => dashIfEmpty(row.payMethod), }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.sageTaxTypeFk'), name: 'sageTaxTypeFk', + columnFilter: { + component: 'select', + attrs: { + optionLabel: 'vat', + url: 'SageTaxTypes', + }, + alias: 'sti', + inWhere: true, + }, + format: (row, dashIfEmpty) => dashIfEmpty(row.sageTaxType), }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.sageTransactionTypeFk'), name: 'sageTransactionTypeFk', + columnFilter: { + component: 'select', + attrs: { + optionLabel: 'transaction', + url: 'SageTransactionTypes', + }, + alias: 'stt', + inWhere: true, + }, + format: (row, dashIfEmpty) => dashIfEmpty(row.sageTransactionType), }, { align: 'left', @@ -218,22 +246,34 @@ const columns = computed(() => [ condition: (value) => !value, icon: 'vn:disabled', }, + columnFilter: { + inWhere: true, + }, }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.isVies'), name: 'isVies', + columnFilter: { + inWhere: true, + }, }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.isTaxDataChecked'), name: 'isTaxDataChecked', + columnFilter: { + inWhere: true, + }, }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.isEqualizated'), name: 'isEqualizated', created: true, + columnFilter: { + inWhere: true, + }, }, { align: 'left', @@ -244,36 +284,57 @@ const columns = computed(() => [ condition: (value) => value, icon: 'vn:frozen', }, + columnFilter: { + inWhere: true, + }, }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.hasToInvoice'), name: 'hasToInvoice', + columnFilter: { + inWhere: true, + }, }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.hasToInvoiceByAddress'), name: 'hasToInvoiceByAddress', + columnFilter: { + inWhere: true, + }, }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.isToBeMailed'), name: 'isToBeMailed', + columnFilter: { + inWhere: true, + }, }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.hasLcr'), name: 'hasLcr', + columnFilter: { + inWhere: true, + }, }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.hasCoreVnl'), name: 'hasCoreVnl', + columnFilter: { + inWhere: true, + }, }, { align: 'left', label: t('customer.extendedList.tableVisibleColumns.hasSepaVnl'), name: 'hasSepaVnl', + columnFilter: { + inWhere: true, + }, }, { align: 'right', diff --git a/src/pages/Customer/ExtendedList/CustomerExtendedListActions.vue b/src/pages/Customer/ExtendedList/CustomerExtendedListActions.vue deleted file mode 100644 index 8355c7560..000000000 --- a/src/pages/Customer/ExtendedList/CustomerExtendedListActions.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - - - -es: - Client ticket list: Listado de tickets del cliente - Preview: Vista previa - diff --git a/src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue b/src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue deleted file mode 100644 index 1be20f26c..000000000 --- a/src/pages/Customer/ExtendedList/CustomerExtendedListFilter.vue +++ /dev/null @@ -1,571 +0,0 @@ - - - - - -es: - Social name: Razón social - From cb4a5f8d1b891eb34e1c2088cb9bf2bd0b7ac4dc Mon Sep 17 00:00:00 2001 From: carlossa Date: Wed, 5 Jun 2024 10:38:40 +0200 Subject: [PATCH 2/2] fix: refs #6825 css --- src/components/FormModel.vue | 2 ++ src/components/VnTable/VnTable.vue | 30 ++++++++++++++++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/components/FormModel.vue b/src/components/FormModel.vue index 2c2acb61c..0874a5bbc 100644 --- a/src/components/FormModel.vue +++ b/src/components/FormModel.vue @@ -196,6 +196,8 @@ async function save() { } catch (err) { console.error(err); notify('errors.writeRequest', 'negative'); + hasChanges.value = false; + isLoading.value = false; } isLoading.value = false; } diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue index 7488f0db9..93bcfdddb 100644 --- a/src/components/VnTable/VnTable.vue +++ b/src/components/VnTable/VnTable.vue @@ -43,6 +43,10 @@ const $props = defineProps({ type: Object, default: null, }, + cardClass: { + type: String, + default: 'flex-one', + }, }); const { t } = useI18n(); const stateStore = useStateStore(); @@ -300,7 +304,11 @@ defineExpose({ } " > - + {{ row[splittedColumns.title.name] }} + {{ row[splittedColumns.title.name] }} + - +
- +