Resolve conflicts

This commit is contained in:
William Buezas 2024-09-11 15:10:54 -03:00
commit f95a8c9daa
13 changed files with 267 additions and 146 deletions

View File

@ -40,25 +40,35 @@ export default {
] ]
}, },
of: 'de', of: 'de',
// Menu
home: 'Inici', // Sections titles
catalog: 'Catàleg', Home: 'Inici',
pendingOrders: 'Comandes pendents', Orders: 'Comandes',
confirmedOrders: 'Comandes confirmades', Ticket: `Detall de l'encarrec`,
invoices: 'Factures', 'Pending orders': 'Comandes pendents',
agencyPackages: 'Paquets per agència', 'Last orders': 'Comandes confirmades',
accountConfig: 'Configuració', Invoices: 'Factures',
addressesList: 'Adreces', Basket: 'Cistella',
addressDetails: 'Configuració', Catalog: 'Catàleg',
checkout: 'Configurar encàrrec', Administration: 'Administració',
controlPanel: 'Panell de control', 'Control panel': 'Panell de control',
adminConnections: 'Connexions', Users: 'Usuaris',
adminItems: 'Articles', Connections: 'Connexions',
adminVisits: 'Visites', Visits: 'Visites',
adminUsers: "Gestió d'usuaris", News: 'Notícies',
adminPhotos: 'Imatges', Photos: 'Imatges',
adminNews: 'Gestió de noticies', Images: 'Imatges',
adminNewsDetails: 'Afegir o editar notícia', Items: 'Articles',
Agencies: 'Agències',
Reports: 'Informes',
Configuration: 'Configuració',
Shelves: 'Prestatgeries',
Account: 'Compte',
Addresses: 'Adreces',
Confirm: 'Confirmar',
Checkout: `Configurar l'encarrec`,
'Address details': 'Configuració',
'Admin news details': `Afegir o editar notícia`,
// //
orderLoadedIntoBasket: 'Comanda carregada a la cistella!', orderLoadedIntoBasket: 'Comanda carregada a la cistella!',
loadAnOrder: loadAnOrder:
@ -71,7 +81,7 @@ export default {
noData: 'Sense dades', noData: 'Sense dades',
confirm: 'Confirmar', confirm: 'Confirmar',
delete: 'Esborrar', delete: 'Esborrar',
reallyDelete: 'Estàs segur que vols esborrar la línia?',
emptyList: 'Llista buida', emptyList: 'Llista buida',
modify: 'Modificar' modify: 'Modificar',
confirmDelete: 'Estàs segur que vols esborrar la línia?'
}; };

View File

@ -53,25 +53,34 @@ export default {
] ]
}, },
// menu // Sections titles
home: 'Home', Home: 'Home',
catalog: 'Catalog', Orders: 'Orders',
pendingOrders: 'Pending orders', Ticket: 'Detalle del pedido',
confirmedOrders: 'Confirmed orders', 'Pending orders': 'Pending orders',
invoices: 'Invoices', 'Last orders': 'Confirmed orders',
agencyPackages: 'Bundles by agency', Invoices: 'Invoices',
accountConfig: 'Configuration', Basket: 'Basket',
addressesList: 'Addresses', Catalog: 'Catalog',
addressDetails: 'Configuration', Administration: 'Administration',
checkout: 'Configure order', 'Control panel': 'Control panel',
controlPanel: 'Control panel', Users: 'Users',
adminConnections: 'Connections', Connections: 'Connections',
adminItems: 'Items', Visits: 'Visits',
adminVisits: 'Visits', News: 'News',
adminUsers: 'User management', Photos: 'Images',
adminPhotos: 'Images', Images: 'Images',
adminNews: 'News management', Items: 'Items',
adminNewsDetails: 'Add or edit new', Agencies: 'Agencies',
Reports: 'Reports',
Configuration: 'Configuration',
Shelves: 'Shelves',
Account: 'Account',
Addresses: 'Addresses',
Confirm: 'Confirm',
Checkout: 'Configure order',
'Address details': 'Configuration',
'Admin news details': 'Add or edit new',
// //
orderLoadedIntoBasket: 'Order loaded into basket!', orderLoadedIntoBasket: 'Order loaded into basket!',
loadAnOrder: 'Please load a pending order to the cart or start a new one', loadAnOrder: 'Please load a pending order to the cart or start a new one',
@ -83,7 +92,8 @@ export default {
noData: 'No data', noData: 'No data',
confirm: 'Confirm', confirm: 'Confirm',
delete: 'Delete', delete: 'Delete',
reallyDelete: 'Are you sure you want to delete the line?', confirmDelete: 'Are you sure you want to delete the line?',
emptyList: 'Empty list',
orders: 'Orders', orders: 'Orders',
order: 'Pending order', order: 'Pending order',
@ -107,6 +117,5 @@ export default {
save: 'Save', save: 'Save',
cancel: 'Cancel', cancel: 'Cancel',
of: 'of', of: 'of',
emptyList: 'Empty list',
modify: 'Modify' modify: 'Modify'
}; };

View File

@ -59,25 +59,34 @@ export default {
] ]
}, },
// Menu // Sections titles
home: 'Inicio', Home: 'Inicio',
catalog: 'Catálogo', Orders: 'Pedidos',
pendingOrders: 'Pedidos pendientes', Ticket: 'Pedido',
confirmedOrders: 'Pedidos confirmados', 'Pending orders': 'Pedidos pendientes',
invoices: 'Facturas', 'Last orders': 'Pedidos confirmados',
agencyPackages: 'Bultos por agencia', Invoices: 'Facturas',
accountConfig: 'Configuración', Basket: 'Cesta',
addressesList: 'Direcciones', Catalog: 'Catálogo',
addressDetails: 'Configuración', Administration: 'Administración',
checkout: 'Configurar pedido', 'Control panel': 'Panel de control',
controlPanel: 'Panel de control', Users: 'Usuarios',
adminConnections: 'Conexiones', Connections: 'Conexiones',
adminItems: 'Artículos', Visits: 'Visitas',
adminVisits: 'Visitas', News: 'Noticias',
adminUsers: 'Gestión de usuarios', Photos: 'Imágenes',
adminPhotos: 'Imágenes', Images: 'Imágenes',
adminNews: 'Gestión de noticias', Items: 'Artículos',
adminNewsDetails: 'Añadir o editar noticia', Agencies: 'Agencias',
Reports: 'Informes',
Configuration: 'Configuración',
Shelves: 'Estanterías',
Account: 'Cuenta',
Addresses: 'Direcciones',
Confirm: 'Confirmar',
Checkout: 'Configurar pedido',
'Address details': 'Configuración',
'Admin news details': 'Añadir o editar noticia',
// //
orderLoadedIntoBasket: '¡Pedido cargado en la cesta!', orderLoadedIntoBasket: '¡Pedido cargado en la cesta!',
loadAnOrder: loadAnOrder:
@ -90,7 +99,8 @@ export default {
noData: 'Sin datos', noData: 'Sin datos',
confirm: 'Confirmar', confirm: 'Confirmar',
delete: 'Borrar', delete: 'Borrar',
reallyDelete: '¿Estás seguro de que quieres borrar la línea?', confirmDelete: '¿Estás seguro de que quieres borrar la línea?',
emptyList: 'Lista vacía',
orders: 'Pedidos', orders: 'Pedidos',
order: 'Pedido pendiente', order: 'Pedido pendiente',
@ -123,6 +133,5 @@ export default {
save: 'Guardar', save: 'Guardar',
cancel: 'Cancelar', cancel: 'Cancelar',
of: 'de', of: 'de',
emptyList: 'Lista vacía',
modify: 'Modificar' modify: 'Modificar'
}; };

View File

@ -40,25 +40,35 @@ export default {
] ]
}, },
of: 'de', of: 'de',
// Menu
home: 'Accueil', // Sections titles
catalog: 'Catalogue', Home: 'Accueil',
pendingOrders: 'Commandes en attente', Orders: 'Commandes',
confirmedOrders: 'Commandes confirmées', Ticket: 'Détail de la commande',
invoices: 'Factures', 'Pending orders': 'Commandes en attente',
agencyPackages: 'Liste par agence', 'Last orders': 'Commandes confirmées',
accountConfig: 'Configuration', Invoices: 'Factures',
addressesList: 'Adresses', Basket: 'Panier',
addressDetails: 'Configuration', Catalog: 'Catalogue',
checkout: "Définissez l'ordre", Administration: 'Administration',
controlPanel: 'Panneau de configuration', 'Control panel': 'Panneau de configuration',
adminConnections: 'Connexions', Users: 'Utilisateurs',
adminItems: 'Articles', Connections: 'Connexions',
adminVisits: 'Visites', Visits: 'Visites',
adminUsers: 'Gestion des utilisateurs', News: 'Nouvelles',
adminPhotos: 'Images', Photos: 'Images',
adminNews: 'Gestion des nouvelles', Images: 'Images',
adminNewsDetails: 'Ajouter ou editer nouvelles', Items: 'Articles',
Agencies: 'Agences',
Reports: 'Rapports',
Configuration: 'Configuration',
Shelves: 'Étagères',
Account: 'Compte',
Addresses: 'Adresses',
Confirm: 'Confirmer',
Checkout: 'Configurer la commande',
'Address details': 'Configuration',
'Admin news details': 'Ajouter ou éditer une nouvelle',
// //
orderLoadedIntoBasket: 'Commande chargée dans le panier!', orderLoadedIntoBasket: 'Commande chargée dans le panier!',
loadAnOrder: loadAnOrder:
@ -71,7 +81,7 @@ export default {
noData: 'Aucune donnée', noData: 'Aucune donnée',
confirm: 'Confirmer', confirm: 'Confirmer',
delete: 'Effacer', delete: 'Effacer',
reallyDelete: 'Voulez-vous vraiment supprimer la ligne?',
emptyList: 'Vider la liste', emptyList: 'Vider la liste',
modify: 'Modifier' modify: 'Modifier',
confirmDelete: 'Voulez-vous vraiment supprimer la ligne?'
}; };

View File

@ -40,26 +40,34 @@ export default {
] ]
}, },
of: 'de', of: 'de',
// Sections titles
// Menu Home: 'Início',
home: 'Principio', Orders: 'Pedidos',
catalog: 'Catálogo', Ticket: 'Detalhe do pedido',
pendingOrders: 'Pedidos pendentes', 'Pending orders': 'Pedidos pendentes',
confirmedOrders: 'Pedidos confirmados', 'Last orders': 'Pedidos confirmados',
invoices: 'Facturas', Invoices: 'Faturas',
agencyPackages: 'Bultos por agencia', Basket: 'Carrinho',
accountConfig: 'Configuração', Catalog: 'Catálogo',
addressesList: 'Moradas', Administration: 'Administração',
addressDetails: 'Configuração', 'Control panel': 'Painel de controle',
checkout: 'Configurar encomenda', Users: 'Usuários',
controlPanel: 'Painel de controle', Connections: 'Conexões',
adminConnections: 'Conexões', Visits: 'Visitas',
adminItems: 'Artigos', News: 'Notícias',
adminVisits: 'Visitas', Photos: 'Imagens',
adminUsers: 'Gestão de usuários', Images: 'Imagens',
adminPhotos: 'Imagens', Items: 'Artigos',
adminNews: 'Gestão de notícias', Agencies: 'Agências',
adminNewsDetails: 'Ajouter ou editer nouvelles', Reports: 'Informes',
Configuration: 'Configuração',
Shelves: 'Estantes',
Account: 'Conta',
Addresses: 'Moradas',
Confirm: 'Confirme',
Checkout: 'Configurar encomenda',
'Address details': 'Configuração',
'Admin news details': 'Adicionar ou editar notícia',
// //
orderLoadedIntoBasket: 'Pedido carregado na cesta!', orderLoadedIntoBasket: 'Pedido carregado na cesta!',
loadAnOrder: 'Carregue um pedido pendente no carrinho ou inicie um novo', loadAnOrder: 'Carregue um pedido pendente no carrinho ou inicie um novo',
@ -71,7 +79,7 @@ export default {
noData: 'Sem dados', noData: 'Sem dados',
confirm: 'Confirme', confirm: 'Confirme',
delete: 'Eliminar', delete: 'Eliminar',
reallyDelete: 'Tens certeza que queres eliminar esta linha?',
emptyList: 'Lista vazia', emptyList: 'Lista vazia',
modify: 'Modificar' modify: 'Modificar',
confirmDelete: 'Tens certeza que queres eliminar esta linha?'
}; };

View File

@ -95,12 +95,12 @@ const logoutSupplantedUser = async () => {
<QList v-for="item in menuEssentialLinks" :key="item.id"> <QList v-for="item in menuEssentialLinks" :key="item.id">
<QItem v-if="!item.childs" :to="`/${item.path}`"> <QItem v-if="!item.childs" :to="`/${item.path}`">
<QItemSection> <QItemSection>
<QItemLabel>{{ item.description }}</QItemLabel> <QItemLabel>{{ $t(item.description) }}</QItemLabel>
</QItemSection> </QItemSection>
</QItem> </QItem>
<QExpansionItem <QExpansionItem
v-if="item.childs" v-if="item.childs"
:label="item.description" :label="$t(item.description)"
expand-separator expand-separator
> >
<QList> <QList>
@ -112,7 +112,7 @@ const logoutSupplantedUser = async () => {
> >
<QItemSection> <QItemSection>
<QItemLabel> <QItemLabel>
{{ subitem.description }} {{ $t(subitem.description) }}
</QItemLabel> </QItemLabel>
</QItemSection> </QItemSection>
</QItem> </QItem>

View File

@ -1,5 +1,5 @@
<script setup> <script setup>
import { onBeforeMount, ref, inject, onMounted } from 'vue'; import { onBeforeMount, ref, inject } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { useAppStore } from 'stores/app'; import { useAppStore } from 'stores/app';
@ -17,6 +17,12 @@ const rows = ref([]);
const ticket = ref({}); const ticket = ref({});
const orderId = ref(null); const orderId = ref(null);
onBeforeMount(async () => {
await appStore.check();
orderId.value = route.params.id || basketOrderId.value;
if (orderId.value) await fetchData();
});
const getOrder = async () => { const getOrder = async () => {
try { try {
const [data] = await jApi.query( const [data] = await jApi.query(
@ -67,7 +73,6 @@ const getItems = async () => {
WHERE orderFk = #id`, WHERE orderFk = #id`,
{ id: orderId.value } { id: orderId.value }
); );
console.log('data', data);
const formattedData = data.map(i => { const formattedData = data.map(i => {
const { amount: quantity, ...item } = i; const { amount: quantity, ...item } = i;
@ -89,15 +94,6 @@ const fetchData = async () => {
await getItems(); await getItems();
await getOrder(); await getOrder();
}; };
onBeforeMount(() => {
appStore.check();
});
onMounted(async () => {
orderId.value = route.params.id || basketOrderId.value;
await fetchData();
});
</script> </script>
<template> <template>

View File

@ -278,6 +278,8 @@ onMounted(async () => {
today.value.setHours(0, 0, 0, 0); today.value.setHours(0, 0, 0, 0);
if (route.params.id) { if (route.params.id) {
notify(t('rememberReconfiguringImpact'), 'warning');
const [order] = await jApi.query( const [order] = await jApi.query(
`SELECT m.code deliveryMethod, o.sent, o.agencyModeFk, o.addressFk `SELECT m.code deliveryMethod, o.sent, o.agencyModeFk, o.addressFk
FROM myOrder o FROM myOrder o
@ -485,6 +487,7 @@ en-US:
pickup: Pickup pickup: Pickup
addressStepQuestion: Where do you want to receive the order? addressStepQuestion: Where do you want to receive the order?
addressStepQuestionPickup: To which address do you want to associate the order? (Optional) addressStepQuestionPickup: To which address do you want to associate the order? (Optional)
rememberReconfiguringImpact: Remember that if you reconfigure your order prices or quantities of your items may change
es-ES: es-ES:
receiveOrPickOrder: ¿Quieres recibir o recoger el pedido? receiveOrPickOrder: ¿Quieres recibir o recoger el pedido?
receiveOrder: Recibir en mi tienda receiveOrder: Recibir en mi tienda
@ -506,6 +509,7 @@ es-ES:
pickup: Recogida pickup: Recogida
addressStepQuestion: ¿Dónde quieres recibir el pedido? addressStepQuestion: ¿Dónde quieres recibir el pedido?
addressStepQuestionPickup: ¿A qué dirección quieres asociar el pedido? (Opcional) addressStepQuestionPickup: ¿A qué dirección quieres asociar el pedido? (Opcional)
rememberReconfiguringImpact: Recuerda que si vuelves a configurar el pedido los precios o cantidades de tus artículos podrían cambiar
ca-ES: ca-ES:
receiveOrPickOrder: Vols rebre o recollir la comanda? receiveOrPickOrder: Vols rebre o recollir la comanda?
receiveOrder: Rebre en mi tenda receiveOrder: Rebre en mi tenda
@ -527,6 +531,7 @@ ca-ES:
pickup: Recollida pickup: Recollida
addressStepQuestion: On vols rebre la comanda? addressStepQuestion: On vols rebre la comanda?
addressStepQuestionPickup: A què direcció vols associar la comanda? (Opcional) addressStepQuestionPickup: A què direcció vols associar la comanda? (Opcional)
rememberReconfiguringImpact: Recorda que si tornes a configurar la comanda els preus o quantitats dels teus articles podrien canviar
fr-FR: fr-FR:
receiveOrPickOrder: Voulez-vous recevoir ou récuperer l'ordre? receiveOrPickOrder: Voulez-vous recevoir ou récuperer l'ordre?
receiveOrder: Livraison à la boutique receiveOrder: Livraison à la boutique
@ -548,6 +553,7 @@ fr-FR:
pickup: Retrait pickup: Retrait
addressStepQuestion: Adresse livraison? addressStepQuestion: Adresse livraison?
addressStepQuestionPickup: À quelle adresse voulez-vous associer la commande? (Optionnel) addressStepQuestionPickup: À quelle adresse voulez-vous associer la commande? (Optionnel)
rememberReconfiguringImpact: Rappelez-vous que si jamais vous commandez des prix fixés ou les quantités de vos articles pourraient changer
pt-PT: pt-PT:
receiveOrPickOrder: Queres receber ou levantar a encomenda? receiveOrPickOrder: Queres receber ou levantar a encomenda?
receiveOrder: Receber na minha loja receiveOrder: Receber na minha loja
@ -569,4 +575,5 @@ pt-PT:
pickup: Recolhida pickup: Recolhida
addressStepQuestion: Onde queres receber a encomenda? addressStepQuestion: Onde queres receber a encomenda?
addressStepQuestionPickup: Para qual endereço deseja associar o pedido? (Opcional) addressStepQuestionPickup: Para qual endereço deseja associar o pedido? (Opcional)
rememberReconfiguringImpact: Lembre-se que si voltas a configurar a encomenda os preços ou quantidades de ítens poderíam variar
</i18n> </i18n>

View File

@ -63,7 +63,6 @@ const fetchInvoices = async () => {
LIMIT 100`, LIMIT 100`,
params params
); );
console.log(invoices.value);
}; };
onMounted(async () => { onMounted(async () => {

View File

@ -120,8 +120,10 @@ const deleteRow = id => {
dense dense
flat flat
@click.stop=" @click.stop="
openConfirmationModal(null, t('reallyDelete'), () => openConfirmationModal(
deleteRow(row.id) null,
t('confirmDelete'),
() => deleteRow(row.id)
) )
" "
> >
@ -165,6 +167,14 @@ const deleteRow = id => {
</QItemSection> </QItemSection>
</QItem> </QItem>
</QList> </QList>
<div
v-if="!rows.length && showItems"
class="row items-center justify-center q-pa-md"
style="margin-top: 32px"
>
<QIcon class="q-mr-md" name="block" size="sm" />
<span>{{ t('emptyList') }}</span>
</div>
</QCard> </QCard>
</template> </template>

View File

@ -22,8 +22,8 @@ export default route(function (/* { store, ssrContext } */) {
const createHistory = process.env.SERVER const createHistory = process.env.SERVER
? createMemoryHistory ? createMemoryHistory
: process.env.VUE_ROUTER_MODE === 'history' : process.env.VUE_ROUTER_MODE === 'history'
? createWebHistory ? createWebHistory
: createWebHashHistory; : createWebHashHistory;
const Router = createRouter({ const Router = createRouter({
scrollBehavior: () => ({ left: 0, top: 0 }), scrollBehavior: () => ({ left: 0, top: 0 }),
@ -41,7 +41,7 @@ export default route(function (/* { store, ssrContext } */) {
if (from.name === to.name) return; if (from.name === to.name) return;
const app = useAppStore(); const app = useAppStore();
app.$patch({ app.$patch({
title: i18n.global.t(to.name || 'home'), title: i18n.global.t(to.meta.title || 'home'),
subtitle: null, subtitle: null,
useRightDrawer: false, useRightDrawer: false,
rightDrawerOpen: true rightDrawerOpen: true

View File

@ -32,106 +32,169 @@ const routes = [
{ {
name: 'home', name: 'home',
path: '/cms/home', path: '/cms/home',
meta: {
title: 'Home'
},
component: () => import('src/pages/Cms/HomeView.vue') component: () => import('src/pages/Cms/HomeView.vue')
}, },
{ {
name: 'confirmedOrders', name: 'confirmedOrders',
path: '/ecomerce/orders', path: '/ecomerce/orders',
meta: {
title: 'Last orders'
},
component: () => import('pages/Ecomerce/OrdersView.vue') component: () => import('pages/Ecomerce/OrdersView.vue')
}, },
{ {
name: 'ticket', name: 'ticket',
path: '/ecomerce/ticket/:id', path: '/ecomerce/ticket/:id',
meta: {
title: 'Ticket'
},
component: () => import('pages/Ecomerce/TicketView.vue') component: () => import('pages/Ecomerce/TicketView.vue')
}, },
{ {
name: 'invoices', name: 'invoices',
path: '/ecomerce/invoices', path: '/ecomerce/invoices',
meta: {
title: 'Invoices'
},
component: () => import('pages/Ecomerce/InvoicesView.vue') component: () => import('pages/Ecomerce/InvoicesView.vue')
}, },
{ {
name: 'pendingOrders', name: 'pendingOrders',
path: '/ecomerce/pending', path: '/ecomerce/pending',
meta: {
title: 'Pending orders'
},
component: () => import('pages/Ecomerce/PendingOrders.vue') component: () => import('pages/Ecomerce/PendingOrders.vue')
}, },
{ {
name: 'catalog', name: 'catalog',
path: '/ecomerce/catalog/:category?/:type?', path: '/ecomerce/catalog/:category?/:type?',
meta: {
title: 'Catalog'
},
component: () => import('pages/Ecomerce/Catalog.vue') component: () => import('pages/Ecomerce/Catalog.vue')
}, },
{ {
name: 'basket', name: 'basket',
path: '/ecomerce/basket/:id?', path: '/ecomerce/basket/:id?',
meta: {
title: 'Basket'
},
component: () => import('pages/Ecomerce/BasketView.vue') component: () => import('pages/Ecomerce/BasketView.vue')
}, },
{ {
name: 'confirm', name: 'confirm',
path: '/ecomerce/confirm/:id?', path: '/ecomerce/confirm/:id?',
meta: {
title: 'Confirm'
},
component: () => import('pages/Ecomerce/ConfirmView.vue') component: () => import('pages/Ecomerce/ConfirmView.vue')
}, },
{ {
name: 'checkout', name: 'checkout',
path: '/ecomerce/checkout/:id?', path: '/ecomerce/checkout/:id?',
meta: {
title: 'Checkout'
},
component: () => import('pages/Ecomerce/CheckoutView.vue') component: () => import('pages/Ecomerce/CheckoutView.vue')
}, },
{ {
name: 'agencyPackages', name: 'agencyPackages',
path: '/agencies/packages', path: '/agencies/packages',
meta: {
title: 'Agencies'
},
component: () => import('src/pages/Agencies/PackagesView.vue') component: () => import('src/pages/Agencies/PackagesView.vue')
}, },
{ {
name: 'accountConfig', name: 'accountConfig',
path: '/account/conf', path: '/account/conf',
meta: {
title: 'Account'
},
component: () => import('pages/Account/AccountConfig.vue') component: () => import('pages/Account/AccountConfig.vue')
}, },
{ {
name: 'addressesList', name: 'addressesList',
path: '/account/address-list', path: '/account/address-list',
meta: {
title: 'Addresses'
},
component: () => import('pages/Account/AddressList.vue') component: () => import('pages/Account/AddressList.vue')
}, },
{ {
name: 'addressDetails', name: 'addressDetails',
path: '/account/address/:id?', path: '/account/address/:id?',
meta: {
title: 'Address details'
},
component: () => import('pages/Account/AddressDetails.vue') component: () => import('pages/Account/AddressDetails.vue')
}, },
{ {
name: 'controlPanel', name: 'controlPanel',
path: 'admin/links', path: 'admin/links',
meta: {
title: 'Control panel'
},
component: () => import('pages/Admin/LinksView.vue') component: () => import('pages/Admin/LinksView.vue')
}, },
{ {
name: 'adminUsers', name: 'adminUsers',
path: 'admin/users', path: 'admin/users',
meta: {
title: 'Users'
},
component: () => import('pages/Admin/UsersView.vue') component: () => import('pages/Admin/UsersView.vue')
}, },
{ {
name: 'adminConnections', name: 'adminConnections',
path: 'admin/connections', path: 'admin/connections',
meta: {
title: 'Connections'
},
component: () => import('pages/Admin/ConnectionsView.vue') component: () => import('pages/Admin/ConnectionsView.vue')
}, },
{ {
name: 'adminVisits', name: 'adminVisits',
path: 'admin/visits', path: 'admin/visits',
meta: {
title: 'Visits'
},
component: () => import('pages/Admin/VisitsView.vue') component: () => import('pages/Admin/VisitsView.vue')
}, },
{ {
name: 'adminNews', name: 'adminNews',
path: 'news/news', path: 'news/news',
meta: {
title: 'News'
},
component: () => import('pages/Admin/NewsView.vue') component: () => import('pages/Admin/NewsView.vue')
}, },
{ {
name: 'adminNewsDetails', name: 'adminNewsDetails',
path: 'news/new/:id?', path: 'news/new/:id?',
meta: {
title: 'Admin news details'
},
component: () => import('pages/Admin/NewsDetails.vue') component: () => import('pages/Admin/NewsDetails.vue')
}, },
{ {
name: 'adminPhotos', name: 'adminPhotos',
path: 'admin/photos', path: 'admin/photos',
meta: {
title: 'Photos'
},
component: () => import('pages/Admin/PhotosView.vue') component: () => import('pages/Admin/PhotosView.vue')
}, },
{ {
name: 'adminItems', name: 'adminItems',
path: 'admin/items', path: 'admin/items',
meta: {
title: 'Items'
},
component: () => import('pages/Admin/ItemsView.vue') component: () => import('pages/Admin/ItemsView.vue')
} }
] ]

View File

@ -5,6 +5,7 @@ import { i18n } from 'src/boot/i18n';
import { useQuasar } from 'quasar'; import { useQuasar } from 'quasar';
const { notify } = useNotify(); const { notify } = useNotify();
const storageOrderName = 'hederaBasket';
export const useAppStore = defineStore('hedera', { export const useAppStore = defineStore('hedera', {
state: () => ({ state: () => ({
@ -72,7 +73,7 @@ export const useAppStore = defineStore('hedera', {
}, },
getBasketOrderId() { getBasketOrderId() {
this.basketOrderId = localStorage.getItem('hederaBasket'); this.basketOrderId = localStorage.getItem(storageOrderName);
}, },
async checkOrder(orderId) { async checkOrder(orderId) {
@ -87,7 +88,7 @@ export const useAppStore = defineStore('hedera', {
if (this.basketOrderId) { if (this.basketOrderId) {
return await this.checkRedirect(checkoutContinue); return await this.checkRedirect(checkoutContinue);
} else { } else {
this.redirect(); await this.redirect();
return false; return false;
} }
}, },
@ -97,22 +98,21 @@ export const useAppStore = defineStore('hedera', {
await this.checkOrder(this.basketOrderId); await this.checkOrder(this.basketOrderId);
return true; return true;
} catch (err) { } catch (err) {
if (err.exception === 'Vn.Lib.UserError') { switch (err.code) {
switch (err.code) { case 'orderConfirmed':
case 'orderConfirmed': case 'orderNotOwnedByUser':
case 'orderNotOwnedByUser': this.unloadOrder();
await this.redirect(); await this.redirect();
break; break;
default: default:
this.router.push({ this.router.push({
name: 'checkout', name: 'checkout',
params: { id: this.basketOrderId }, params: { id: this.basketOrderId },
query: { continue: checkoutContinue } query: { continue: checkoutContinue }
}); });
notify(err.message, 'negative'); notify(err.message, 'negative');
} }
return false; return false;
} else throw err;
} }
}, },
@ -131,13 +131,13 @@ export const useAppStore = defineStore('hedera', {
loadIntoBasket(orderId) { loadIntoBasket(orderId) {
if (this.basketOrderId !== orderId) { if (this.basketOrderId !== orderId) {
this.basketOrderId = orderId; this.basketOrderId = orderId;
localStorage.setItem('hederaBasket', orderId); localStorage.setItem(storageOrderName, orderId);
notify('orderLoadedIntoBasket', 'positive'); notify('orderLoadedIntoBasket', 'positive');
} }
}, },
unloadOrder() { unloadOrder() {
localStorage.removeItem('hederaBasket'); localStorage.removeItem(storageOrderName);
this.basketOrderId = null; this.basketOrderId = null;
} }
}, },