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();
@ -25,73 +25,106 @@ 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( },
{
relation: 'deliveryMethod',
scope: {
fields: ['code'],
},
},
{
relation: 'rows',
scope: {
fields: ['id', 'quantity', 'price', 'itemFk'],
include: [
{
relation: 'item',
scope: {
fields: [
'longName',
'tag5',
'value5',
'tag6',
'value6',
'tag7',
'value7',
'image',
],
}
},
],
},
},
],
fields: [
'id',
'landed',
'delivery_method_id',
'addressFk',
'agencyModeFk',
'rows',
]
};
const { data: order } = await api.get(`Orders/${orderId.value}`, {
params: {
filter: JSON.stringify(filter)
}
});
const taxBase = order.rows.reduce(
(acc, row) => acc + row.price * row.quantity, (acc, row) => acc + row.price * row.quantity,
0 0
); );
const formattedData = { const formattedData = {
id, id: order.id,
landed: new Date(sent), landed: new Date(order.landed),
agency, agency: order.agencyMode.description,
method, method: order.deliveryMethod.code,
nickname, nickname: order.address.nickname,
street, street: order.address.street,
postalCode, postalCode: order.address.postalCode,
city, city: order.address.city,
taxBase taxBase
}; };
ticket.value = formattedData; ticket.value = formattedData;
const orderRows = order.rows.map(row => ({
id: row.id,
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) { } catch (error) {
console.error(error); console.error('Error getting orders:', error);
}
};
const getItems = async () => {
try {
const data = await jApi.query(
`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 { amount: quantity, ...item } = i;
const formattedItem = {
quantity,
...item
};
return formattedItem;
});
rows.value = formattedData;
} catch (error) {
console.error(error);
} }
}; };
const fetchData = async () => { const fetchData = async () => {
await getItems();
await getOrder(); await getOrder();
}; };
</script> </script>