WIP
This commit is contained in:
parent
47a5abf1e3
commit
509a7870a9
|
@ -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"
|
||||||
>
|
>
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue