feat: family filter

This commit is contained in:
Javier Segarra 2024-04-29 14:21:39 +02:00
parent 1ccad36020
commit 56a6f24071
3 changed files with 53 additions and 3 deletions

View File

@ -23,15 +23,40 @@ const defaultParams = {
}; };
const warehouses = ref(); const warehouses = ref();
const categoriesOptions = ref([]);
const itemTypesRef = ref(null);
const itemTypesFilter = {
fields: ['id', 'name', 'categoryFk'],
include: 'category',
order: 'name ASC',
where: {},
};
const handleWarehouses = async (data) => { const handleWarehouses = async (data) => {
warehouses.value = data; warehouses.value = data;
defaultParams.warehouse = data.find((w) => w.name === DEFAULT_WAREHOUSE).id; defaultParams.warehouse = data.find((w) => w.name === DEFAULT_WAREHOUSE).id;
}; };
const onCategoryChange = async (categoryFk, search) => {
if (!categoryFk) {
itemTypesFilter.where.categoryFk = null;
delete itemTypesFilter.where.categoryFk;
} else {
itemTypesFilter.where.categoryFk = categoryFk;
}
search();
await itemTypesRef.value.fetch();
};
</script> </script>
<template> <template>
<FetchData url="Warehouses" @on-fetch="handleWarehouses" auto-load /> <FetchData url="Warehouses" @on-fetch="handleWarehouses" auto-load />
<FetchData
url="ItemCategories"
:filter="{ fields: ['id', 'name'], order: 'name ASC' }"
@on-fetch="(data) => (categoriesOptions = data)"
auto-load
/>
<VnFilterPanel <VnFilterPanel
:data-key="props.dataKey" :data-key="props.dataKey"
:params="defaultParams" :params="defaultParams"
@ -39,7 +64,7 @@ const handleWarehouses = async (data) => {
> >
<template #tags="{ tag, formatFn }"> <template #tags="{ tag, formatFn }">
<div class="q-gutter-x-xs"> <div class="q-gutter-x-xs">
<strong>{{ t(`ticket.negative.${tag.label}`) }}: </strong> <strong>{{ t(`negative.${tag.label}`) }}: </strong>
<span>{{ formatFn(tag.value) }}</span> <span>{{ formatFn(tag.value) }}</span>
</div> </div>
</template> </template>
@ -75,9 +100,29 @@ const handleWarehouses = async (data) => {
/> />
</QItemSection> </QItemSection>
</QItem> </QItem>
<QItem>
<QItemSection v-if="categoriesOptions">
<VnSelect
:label="t('negative.categoryFk')"
v-model="params.categoryFk"
@update:model-value="
($event) => onCategoryChange($event, searchFn)
"
:options="categoriesOptions"
option-value="id"
option-label="name"
hide-selected
dense
outlined
rounded
/> </QItemSection
><QItemSection v-else>
<QSkeleton class="full-width" type="QSelect" />
</QItemSection>
</QItem>
<QItem v-if="warehouses"> <QItem>
<QItemSection> <QItemSection v-if="warehouses">
<VnSelect <VnSelect
:label="t('Warehouse')" :label="t('Warehouse')"
v-model="params.warehouse" v-model="params.warehouse"
@ -95,6 +140,9 @@ const handleWarehouses = async (data) => {
:input-debounce="0" :input-debounce="0"
/> />
</QItemSection> </QItemSection>
<QItemSection v-else>
<QSkeleton class="full-width" type="QSelect" />
</QItemSection>
</QItem> </QItem>
</QList> </QList>
</template> </template>

View File

@ -11,6 +11,7 @@ negative:
warehouseFk: 'Warehouse' warehouseFk: 'Warehouse'
producer: 'Producer' producer: 'Producer'
category: 'category' category: 'category'
categoryFk: 'Family'
warehouse: 'warehouse' warehouse: 'warehouse'
lack: 'Negative' lack: 'Negative'
inkFk: 'inkFk' inkFk: 'inkFk'

View File

@ -12,6 +12,7 @@ negative:
warehouseFk: 'Almacen' warehouseFk: 'Almacen'
producer: 'Producer' producer: 'Producer'
category: 'Categoria' category: 'Categoria'
categoryFk: 'Familia'
warehouse: 'Almacen' warehouse: 'Almacen'
lack: 'Negativo' lack: 'Negativo'
inkFk: 'Color' inkFk: 'Color'