This commit is contained in:
William Buezas 2025-04-02 15:20:25 +02:00
parent 47a5abf1e3
commit 509a7870a9
2 changed files with 85 additions and 69 deletions

View File

@ -37,7 +37,7 @@ const { t } = useI18n();
>
<div class="column" style="margin-bottom: auto">
<div class="text-subtitle2 ellipsis-2-lines">
{{ item.item }}
{{ item.name }}
</div>
<div
class="row justify-between text-uppercase text-subtitle1 text-grey-7"
@ -76,7 +76,7 @@ const { t } = useI18n();
</div>
<div class="row justify-between items-cente q-gutter-x-xs">
<QBadge
:label="`x${item.grouping}`"
:label="`x${item?.prices[0]?.grouping}`"
color="grey-4"
class="col-2 justify-end text-body2"
>

View File

@ -92,7 +92,7 @@
@click="selectedCategory = cat.id"
data-cy="catalogCategoryButton"
>
<img :src="`statics/category/${cat.code}.svg`" />
<img :src="`statics/category/${cat.icon}.svg`" />
<QTooltip>{{ cat.name }}</QTooltip>
</QBtn>
</div>
@ -577,38 +577,26 @@ const getItems = async () => {
if (!basketOrderId.value || !isSomeFilterSelected.value) return;
loading.value = true;
const res = await jApi.execQuery(
`DROP TEMPORARY TABLE IF EXISTS tmp.item;
CREATE TEMPORARY TABLE tmp.item
(INDEX (itemFk))
ENGINE = MEMORY
SELECT i.id itemFk
FROM vn.item i
JOIN vn.itemType t ON t.id = i.typeFk
WHERE (${queryFilter.value});
CALL myOrder_calcCatalogFull(#orderId);
SELECT i.id, i.longName item, i.subName,
i.tag5, i.value5, i.tag6, i.value6,
i.tag7, i.value7, i.tag8, i.value8,
i.relevancy, i.size, i.category, b.minQuantity,
k.name ink, p.name producer, o.name origin,
b.available, b.price, b.grouping,
i.image, im.updated
FROM tmp.ticketCalculateItem b
JOIN vn.item i ON i.id = b.itemFk
LEFT JOIN vn.ink k ON k.id = i.inkFk
LEFT JOIN vn.producer p ON p.id = i.producerFk
LEFT JOIN vn.origin o ON o.id = i.originFk
LEFT JOIN image im ON im.collectionFk = 'catalog'
AND im.name = i.image
WHERE b.available > 0
ORDER BY ${selectedOrderBy.value}
LIMIT 5000;
DROP TEMPORARY TABLE tmp.item;
CALL vn.ticketCalculatePurge();`,
{ orderId: basketOrderId.value }
);
items.value = res.results[3].data;
const { data } = await api.get('Orders/catalogFilter', {
params: {
orderFk: basketOrderId.value,
orderBy: JSON.stringify({
field: 'relevancy DESC, name',
way: 'ASC',
isTag: false
}),
filter: {
where: {
and: [
{ typeFk: selectedType.value },
{ categoryFk: selectedCategory.value }
]
}
}
}
});
items.value = data;
await onItemsFetched();
loading.value = false;
} catch (error) {
@ -623,7 +611,6 @@ const getOrder = async () => {
try {
if (!basketOrderId.value) return;
order.value = data;
const filter = {
include: [
{
@ -645,6 +632,8 @@ const getOrder = async () => {
orderFk: basketOrderId.value
}
});
order.value = data;
} catch (error) {
console.error('Error getting order:', error);
}
@ -652,13 +641,25 @@ const getOrder = async () => {
const getCategories = async () => {
try {
categories.value = await jApi.query(
`SELECT c.id, l.name, c.color, c.code
FROM vn.itemCategory c
JOIN vn.itemCategoryL10n l ON l.id = c.id
WHERE c.display
ORDER BY display`
);
const { data } = await api.get('itemCategories', {
params: {
filter: JSON.stringify({
order: 'display ASC',
include: {
relation: 'itemTypes',
scope: {
fields: ['code', 'name']
}
}
})
}
});
categories.value = data.map(category => {
return {
...category,
icon: category.icon.split('-')[1]
};
});
} catch (error) {
console.error('Error getting categories:', error);
}
@ -667,23 +668,15 @@ const getCategories = async () => {
const getItemFamilies = async () => {
try {
if (!selectedCategory.value || !basketOrderId.value) return;
const res = await jApi.execQuery(
`CALL myOrder_getAvailable(#orderId);
SELECT DISTINCT t.id, l.name
FROM vn.item i
JOIN vn.itemType t ON t.id = i.typeFk
JOIN tmp.itemAvailable a ON a.id = i.id
JOIN vn.itemTypeL10n l ON l.id = t.id
WHERE t.order >= 0
AND t.categoryFk = #category
ORDER BY t.order, l.name ASC;
DROP TEMPORARY TABLE tmp.itemAvailable`,
const { data } = await api.get(
`Orders/${basketOrderId.value}/getItemTypeAvailable`,
{
category: selectedCategory.value,
orderId: basketOrderId.value
params: { itemCategoryId: selectedCategory.value }
}
);
itemFamilies.value = res.results[1].data;
itemFamilies.value = data;
} catch (error) {
console.error('Error getting available items:', error);
}
@ -706,7 +699,19 @@ const getItemColors = async () => {
orderId: basketOrderId.value
}
);
// const { data } = await api.get('Inks', {
// params: {
// filter: JSON.stringify({
// where: {
// 't.categoryFk': selectedCategory.value
// }
// })
// }
// });
// console.log('ink data: ', data);
itemColors.value = res.results[1].data;
// console.log('itemColors: ', itemColors.value);
} catch (error) {
console.error('Error getting available items:', error);
}
@ -815,19 +820,30 @@ const onCategoryChange = () => {
const getItemTags = async itemFk => {
try {
const tags = await jApi.query(
`SELECT l.name, it.value
FROM vn.itemTag it
JOIN vn.tag t ON t.id = it.tagFk
JOIN vn.tagL10n l ON l.id = t.id
WHERE it.itemFk = #itemFk
AND priority >= 0
ORDER BY it.priority`,
{
itemFk
const { data } = await api.get('ItemTags', {
params: {
filter: JSON.stringify({
where: {
itemFk
},
include: [
{
relation: 'tag',
scope: {
fields: ['name']
}
}
]
})
}
);
return tags;
});
return data.map(tag => {
return {
name: tag?.tag?.name,
value: tag.value
};
});
} catch (error) {
console.error('Error getting available items:', error);
}