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

View File

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