refactor: use Salix in BasketView.vue
gitea/hedera-web/pipeline/pr-beta This commit looks good Details

This commit is contained in:
taro 2025-04-27 18:34:27 -03:00
parent a8277a2473
commit 56db6bc598
1 changed files with 95 additions and 62 deletions

View File

@ -7,7 +7,7 @@ import TicketDetails from 'src/pages/Ecomerce/TicketDetails.vue';
import { storeToRefs } from 'pinia'; import { storeToRefs } from 'pinia';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
const jApi = inject('jApi'); const api = inject('api');
const { t } = useI18n(); const { t } = useI18n();
const appStore = useAppStore(); const appStore = useAppStore();
const route = useRoute(); const route = useRoute();
@ -24,74 +24,107 @@ onBeforeMount(async () => {
}); });
const getOrder = async () => { const getOrder = async () => {
try { try {
const [data] = await jApi.query( const filter = {
`SELECT o.id, o.sent, include: [
ag.description agency, v.code method, {
ad.nickname, ad.postalCode, ad.city, ad.street relation: 'address',
FROM myOrder o scope: {
JOIN vn.agencyMode ag ON ag.id = o.agencyModeFk fields: ['nickname', 'city', 'postalCode', 'street'],
LEFT JOIN myAddress ad ON ad.id = o.addressFk }
JOIN vn.deliveryMethod v ON v.id = o.deliveryMethodFk },
WHERE o.id = #id;`, {
{ id: orderId.value } relation: 'agencyMode',
); scope: {
const { sent, method, agency, id, nickname, street, postalCode, city } = fields: ['description']
data; }
const taxBase = rows.value.reduce( },
(acc, row) => acc + row.price * row.quantity, {
0 relation: 'deliveryMethod',
); scope: {
const formattedData = { fields: ['code'],
id, },
landed: new Date(sent), },
agency, {
method, relation: 'rows',
nickname, scope: {
street, fields: ['id', 'quantity', 'price', 'itemFk'],
postalCode, include: [
city, {
taxBase relation: 'item',
}; scope: {
ticket.value = formattedData; fields: [
} catch (error) { 'longName',
console.error(error); 'tag5',
} 'value5',
}; 'tag6',
'value6',
'tag7',
'value7',
'image',
],
}
},
],
},
},
],
fields: [
'id',
'landed',
'delivery_method_id',
'addressFk',
'agencyModeFk',
'rows',
]
};
const getItems = async () => { const { data: order } = await api.get(`Orders/${orderId.value}`, {
try { params: {
const data = await jApi.query( filter: JSON.stringify(filter)
`SELECT bi.id, bi.amount, bi.price, i.longName item, }
i.tag5, i.value5, i.tag6, i.value6, i.tag7, i.value7, });
i.image, im.updated
FROM myOrderRow bi
JOIN vn.item i ON i.id = bi.itemFk
LEFT JOIN image im
ON im.collectionFk = 'catalog'
AND im.name = i.image
WHERE orderFk = #id`,
{ id: orderId.value }
);
const formattedData = data.map(i => { const taxBase = order.rows.reduce(
const { amount: quantity, ...item } = i; (acc, row) => acc + row.price * row.quantity,
0
);
const formattedData = {
id: order.id,
landed: new Date(order.landed),
agency: order.agencyMode.description,
method: order.deliveryMethod.code,
nickname: order.address.nickname,
street: order.address.street,
postalCode: order.address.postalCode,
city: order.address.city,
const formattedItem = { taxBase
quantity, };
...item ticket.value = formattedData;
};
return formattedItem;
});
rows.value = formattedData; const orderRows = order.rows.map(row => ({
} catch (error) { id: row.id,
console.error(error); quantity: row.quantity,
} price: row.price,
item: row.item.longName,
tag5: row.item.tag5,
value5: row.item.value5,
tag6: row.item.tag6,
value6: row.item.value6,
tag7: row.item.tag7,
value7: row.item.value7,
image: row.item.image,
}));
rows.value = orderRows;
} catch (error) {
console.error('Error getting orders:', error);
}
}; };
const fetchData = async () => { const fetchData = async () => {
await getItems();
await getOrder(); await getOrder();
}; };
</script> </script>