forked from verdnatura/hedera-web
Merge pull request 'Add menu translations' (!82) from wbuezas/hedera-web-mindshore:feature/AddMenuTranslations into 4922-vueMigration
Reviewed-on: verdnatura/hedera-web#82
This commit is contained in:
commit
057bfae517
|
@ -44,6 +44,7 @@ const handleClick = () => {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
* {
|
* {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|
|
@ -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:
|
||||||
|
@ -69,5 +79,8 @@ export default {
|
||||||
remove: 'Esborrar',
|
remove: 'Esborrar',
|
||||||
agency: 'Agència',
|
agency: 'Agència',
|
||||||
noData: 'Sense dades',
|
noData: 'Sense dades',
|
||||||
confirm: 'Confirmar'
|
confirm: 'Confirmar',
|
||||||
|
delete: 'Esborrar',
|
||||||
|
confirmDelete: 'Estàs segur que vols esborrar la línia?',
|
||||||
|
emptyList: 'Llista buida'
|
||||||
};
|
};
|
||||||
|
|
|
@ -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',
|
||||||
|
@ -82,6 +91,9 @@ export default {
|
||||||
agency: 'Agency',
|
agency: 'Agency',
|
||||||
noData: 'No data',
|
noData: 'No data',
|
||||||
confirm: 'Confirm',
|
confirm: 'Confirm',
|
||||||
|
delete: 'Delete',
|
||||||
|
confirmDelete: 'Are you sure you want to delete the line?',
|
||||||
|
emptyList: 'Empty list',
|
||||||
|
|
||||||
orders: 'Orders',
|
orders: 'Orders',
|
||||||
order: 'Pending order',
|
order: 'Pending order',
|
||||||
|
|
|
@ -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:
|
||||||
|
@ -89,6 +98,9 @@ export default {
|
||||||
agency: 'Agencia',
|
agency: 'Agencia',
|
||||||
noData: 'Sin datos',
|
noData: 'Sin datos',
|
||||||
confirm: 'Confirmar',
|
confirm: 'Confirmar',
|
||||||
|
delete: 'Borrar',
|
||||||
|
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',
|
||||||
|
|
|
@ -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:
|
||||||
|
@ -69,5 +79,7 @@ export default {
|
||||||
remove: 'Effacer',
|
remove: 'Effacer',
|
||||||
agency: 'Agence',
|
agency: 'Agence',
|
||||||
noData: 'Aucune donnée',
|
noData: 'Aucune donnée',
|
||||||
confirm: 'Confirmer'
|
confirm: 'Confirmer',
|
||||||
|
delete: 'Effacer',
|
||||||
|
confirmDelete: 'Voulez-vous vraiment supprimer la ligne?'
|
||||||
};
|
};
|
||||||
|
|
|
@ -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',
|
||||||
|
@ -69,5 +77,7 @@ export default {
|
||||||
remove: 'Eliminar',
|
remove: 'Eliminar',
|
||||||
agency: 'Agência',
|
agency: 'Agência',
|
||||||
noData: 'Sem dados',
|
noData: 'Sem dados',
|
||||||
confirm: 'Confirme'
|
confirm: 'Confirme',
|
||||||
|
delete: 'Eliminar',
|
||||||
|
confirmDelete: 'Tens certeza que queres eliminar esta linha?'
|
||||||
};
|
};
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { i18n } from 'src/boot/i18n';
|
import { i18n } from 'src/boot/i18n';
|
||||||
import { date as qdate, format } from 'quasar';
|
import { date as qdate, format } from 'quasar';
|
||||||
const { pad } = format;
|
|
||||||
import { useAppStore } from 'stores/app';
|
import { useAppStore } from 'stores/app';
|
||||||
|
const { pad } = format;
|
||||||
|
|
||||||
export function currency(val) {
|
export function currency(val) {
|
||||||
return typeof val === 'number' ? val.toFixed(2) + '€' : val;
|
return typeof val === 'number' ? val.toFixed(2) + '€' : val;
|
||||||
|
@ -18,7 +18,6 @@ export function date(val, format = 'YYYY-MM-DD') {
|
||||||
export const formatDate = (timeStamp, format = 'YYYY-MM-DD') => {
|
export const formatDate = (timeStamp, format = 'YYYY-MM-DD') => {
|
||||||
if (!timeStamp) return '';
|
if (!timeStamp) return '';
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
|
|
||||||
return qdate.formatDate(timeStamp, format, appStore.localeDates);
|
return qdate.formatDate(timeStamp, format, appStore.localeDates);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,153 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { onBeforeMount } from 'vue';
|
import { onBeforeMount, ref, inject, onMounted } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
import { useAppStore } from 'stores/app';
|
import { useAppStore } from 'stores/app';
|
||||||
|
import TicketDetails from 'src/pages/Ecomerce/TicketDetails.vue';
|
||||||
|
import { storeToRefs } from 'pinia';
|
||||||
|
import { useRoute } from 'vue-router';
|
||||||
|
|
||||||
|
const jApi = inject('jApi');
|
||||||
|
const { t } = useI18n();
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
|
const route = useRoute();
|
||||||
|
const { basketOrderId, isHeaderMounted } = storeToRefs(appStore);
|
||||||
|
|
||||||
|
const rows = ref([]);
|
||||||
|
const ticket = ref({});
|
||||||
|
const orderId = ref(null);
|
||||||
|
|
||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
appStore.check();
|
appStore.check();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
orderId.value = route.params.id || basketOrderId.value;
|
||||||
|
if (orderId.value) await fetchData();
|
||||||
|
});
|
||||||
|
const getOrder = async () => {
|
||||||
|
try {
|
||||||
|
const [data] = await jApi.query(
|
||||||
|
`SELECT o.id, o.sent,
|
||||||
|
ag.description agency, v.code method,
|
||||||
|
ad.nickname, ad.postalCode, ad.city, ad.street
|
||||||
|
FROM myOrder o
|
||||||
|
JOIN vn.agencyMode ag ON ag.id = o.agencyModeFk
|
||||||
|
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 }
|
||||||
|
);
|
||||||
|
const { sent, method, agency, id, nickname, street, postalCode, city } =
|
||||||
|
data;
|
||||||
|
const taxBase = rows.value.reduce(
|
||||||
|
(acc, row) => acc + row.price * row.quantity,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
const formattedData = {
|
||||||
|
id,
|
||||||
|
landed: new Date(sent),
|
||||||
|
agency,
|
||||||
|
method,
|
||||||
|
nickname,
|
||||||
|
street,
|
||||||
|
postalCode,
|
||||||
|
city,
|
||||||
|
taxBase
|
||||||
|
};
|
||||||
|
ticket.value = formattedData;
|
||||||
|
} catch (error) {
|
||||||
|
console.error(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 () => {
|
||||||
|
await getItems();
|
||||||
|
await getOrder();
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>basket view</div>
|
<Teleport v-if="isHeaderMounted" to="#actions">
|
||||||
|
<QBtn
|
||||||
|
icon="settings"
|
||||||
|
:label="t('configureOrder')"
|
||||||
|
:to="{ name: 'checkout', params: { id: orderId } }"
|
||||||
|
rounded
|
||||||
|
no-caps
|
||||||
|
/>
|
||||||
|
<QBtn
|
||||||
|
icon="shopping_bag"
|
||||||
|
:label="t('catalog')"
|
||||||
|
:to="{ name: 'catalog' }"
|
||||||
|
rounded
|
||||||
|
no-caps
|
||||||
|
/>
|
||||||
|
<QBtn
|
||||||
|
icon="shopping_cart_checkout"
|
||||||
|
:label="t('checkout')"
|
||||||
|
:to="{ name: 'confirm', params: { id: orderId } }"
|
||||||
|
rounded
|
||||||
|
no-caps
|
||||||
|
/>
|
||||||
|
</Teleport>
|
||||||
|
<QPage>
|
||||||
|
<TicketDetails
|
||||||
|
:rows="rows"
|
||||||
|
:ticket="ticket"
|
||||||
|
is-basket
|
||||||
|
:show-tax="false"
|
||||||
|
can-delete-items
|
||||||
|
@on-row-deleted="fetchData"
|
||||||
|
/>
|
||||||
|
</QPage>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
<i18n lang="yaml">
|
||||||
|
en-US:
|
||||||
|
configureOrder: Configure order
|
||||||
|
checkout: Checkout
|
||||||
|
es-ES:
|
||||||
|
configureOrder: Configurar pedido
|
||||||
|
checkout: Finalizar pedido
|
||||||
|
ca-ES:
|
||||||
|
configureOrder: Configurar encàrrec
|
||||||
|
checkout: Finalitzar comanda
|
||||||
|
fr-FR:
|
||||||
|
configureOrder: Définissez l'ordre
|
||||||
|
checkout: Finir la commande
|
||||||
|
pt-PT:
|
||||||
|
configureOrder: Configurar encomenda
|
||||||
|
checkout: Finalizar encomenda
|
||||||
|
</i18n>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<template>Confirm view</template>
|
|
@ -63,7 +63,6 @@ const fetchInvoices = async () => {
|
||||||
LIMIT 100`,
|
LIMIT 100`,
|
||||||
params
|
params
|
||||||
);
|
);
|
||||||
console.log(invoices.value);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
|
import { inject } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { currency, formatDateTitle } from 'src/lib/filters.js';
|
|
||||||
import VnImg from 'src/components/ui/VnImg.vue';
|
import VnImg from 'src/components/ui/VnImg.vue';
|
||||||
|
|
||||||
|
import { currency, formatDateTitle } from 'src/lib/filters.js';
|
||||||
|
import { useVnConfirm } from 'src/composables/useVnConfirm.js';
|
||||||
|
|
||||||
defineProps({
|
defineProps({
|
||||||
ticket: {
|
ticket: {
|
||||||
type: Object,
|
type: Object,
|
||||||
|
@ -11,10 +15,21 @@ defineProps({
|
||||||
rows: {
|
rows: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: () => []
|
default: () => []
|
||||||
|
},
|
||||||
|
showTax: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
|
canDeleteItems: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['onRowDeleted']);
|
||||||
|
const jApi = inject('jApi');
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
const { openConfirmationModal } = useVnConfirm();
|
||||||
|
|
||||||
const lineDiscountSubtotal = line => {
|
const lineDiscountSubtotal = line => {
|
||||||
return line.quantity * line.price;
|
return line.quantity * line.price;
|
||||||
|
@ -22,31 +37,42 @@ const lineDiscountSubtotal = line => {
|
||||||
|
|
||||||
const lineSubtotal = line =>
|
const lineSubtotal = line =>
|
||||||
lineDiscountSubtotal(line) * ((100 - line.discount) / 100);
|
lineDiscountSubtotal(line) * ((100 - line.discount) / 100);
|
||||||
|
|
||||||
|
const deleteRow = id => {
|
||||||
|
try {
|
||||||
|
jApi.execQuery(
|
||||||
|
`START TRANSACTION;
|
||||||
|
DELETE FROM hedera.myOrderRow WHERE ((id = #id));
|
||||||
|
COMMIT`,
|
||||||
|
{
|
||||||
|
id
|
||||||
|
}
|
||||||
|
);
|
||||||
|
emit('onRowDeleted');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error deleting order item:', error);
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<QCard
|
<QCard class="vn-w-sm" style="padding: 32px">
|
||||||
class="vn-w-sm"
|
|
||||||
style="padding: 32px"
|
|
||||||
>
|
|
||||||
<QCardSection class="no-padding q-mb-md">
|
<QCardSection class="no-padding q-mb-md">
|
||||||
<div class="text-h6">
|
<div class="text-h6">#{{ ticket.id }}</div>
|
||||||
#{{ ticket.id }}
|
|
||||||
</div>
|
|
||||||
</QCardSection>
|
</QCardSection>
|
||||||
<QCardSection class="no-padding q-mb-md q-gutter-y-xs">
|
<QCardSection class="no-padding q-mb-md q-gutter-y-xs">
|
||||||
<div class="text-subtitle1 text-bold">
|
<div class="text-subtitle1 text-bold">
|
||||||
{{ t('shippingInformation') }}
|
{{ t('shippingInformation') }}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div v-if="ticket.shipped">
|
||||||
{{ t('preparation') }}
|
{{ t('preparation') }}
|
||||||
{{ formatDateTitle(ticket.shipped) }}
|
{{ formatDateTitle(ticket.shipped) }}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div v-if="ticket.landed">
|
||||||
{{ t('delivery') }}
|
{{ t('delivery') }}
|
||||||
{{ formatDateTitle(ticket.landed) }}
|
{{ formatDateTitle(ticket.landed) }}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div v-if="ticket.method && ticket.agency">
|
||||||
{{ t(ticket.method != 'PICKUP' ? 'agency' : 'warehouse') }}
|
{{ t(ticket.method != 'PICKUP' ? 'agency' : 'warehouse') }}
|
||||||
{{ ticket.agency }}
|
{{ ticket.agency }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -58,9 +84,10 @@ const lineSubtotal = line =>
|
||||||
<div>{{ ticket.nickname }}</div>
|
<div>{{ ticket.nickname }}</div>
|
||||||
<div>{{ ticket.street }}</div>
|
<div>{{ ticket.street }}</div>
|
||||||
<div>
|
<div>
|
||||||
{{ ticket.postalCode }} {{ ticket.city }} ({{
|
<span v-if="ticket.postalCode || ticket.city">
|
||||||
ticket.province
|
{{ ticket.postalCode }}, {{ ticket.city }}
|
||||||
}})
|
</span>
|
||||||
|
<span v-if="ticket.province"> ({{ ticket.province }})</span>
|
||||||
</div>
|
</div>
|
||||||
</QCardSection>
|
</QCardSection>
|
||||||
<QCardSection
|
<QCardSection
|
||||||
|
@ -69,16 +96,41 @@ const lineSubtotal = line =>
|
||||||
<span class="text-right">
|
<span class="text-right">
|
||||||
{{ t('total') }} {{ currency(ticket.taxBase) }}
|
{{ t('total') }} {{ currency(ticket.taxBase) }}
|
||||||
</span>
|
</span>
|
||||||
<span class="text-right">
|
<span v-if="showTax" class="text-right">
|
||||||
{{ t('totalTax') }} {{ currency(ticket.total) }}
|
{{ t('totalTax') }} {{ currency(ticket.total) }}
|
||||||
</span>
|
</span>
|
||||||
</QCardSection>
|
</QCardSection>
|
||||||
<QSeparator inset />
|
<QSeparator inset />
|
||||||
<QList
|
<div
|
||||||
v-for="row in rows"
|
v-if="!rows.length"
|
||||||
:key="row.itemFk"
|
class="row items-center justify-center q-pa-md"
|
||||||
|
style="margin-top: 32px"
|
||||||
>
|
>
|
||||||
<QItem>
|
<QIcon class="q-mr-md" name="block" size="sm" />
|
||||||
|
<span>{{ t('emptyList') }}</span>
|
||||||
|
</div>
|
||||||
|
<QList v-else v-for="(row, index) in rows" :key="index">
|
||||||
|
<QItem v-if="row">
|
||||||
|
<QItemSection v-if="canDeleteItems" avatar>
|
||||||
|
<QBtn
|
||||||
|
icon="delete"
|
||||||
|
rounded
|
||||||
|
no-caps
|
||||||
|
dense
|
||||||
|
flat
|
||||||
|
@click.stop="
|
||||||
|
openConfirmationModal(
|
||||||
|
null,
|
||||||
|
t('confirmDelete'),
|
||||||
|
() => deleteRow(row.id)
|
||||||
|
)
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<QTooltip>
|
||||||
|
{{ t('delete') }}
|
||||||
|
</QTooltip>
|
||||||
|
</QBtn>
|
||||||
|
</QItemSection>
|
||||||
<QItemSection avatar>
|
<QItemSection avatar>
|
||||||
<VnImg
|
<VnImg
|
||||||
storage="catalog"
|
storage="catalog"
|
||||||
|
@ -88,32 +140,28 @@ const lineSubtotal = line =>
|
||||||
/>
|
/>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
<QItemSection>
|
<QItemSection>
|
||||||
<QItemLabel lines="1">
|
<QItemLabel v-if="row.concept" lines="1">
|
||||||
{{ row.concept }}
|
{{ row.concept }}
|
||||||
</QItemLabel>
|
</QItemLabel>
|
||||||
<QItemLabel
|
<QItemLabel v-if="row.item" lines="1">
|
||||||
lines="1"
|
{{ row.item }}
|
||||||
caption
|
</QItemLabel>
|
||||||
>
|
<QItemLabel lines="1" caption>
|
||||||
{{ row.value5 }} {{ row.value6 }} {{ row.value7 }}
|
{{ row.value5 }} {{ row.value6 }} {{ row.value7 }}
|
||||||
</QItemLabel>
|
</QItemLabel>
|
||||||
<QItemLabel lines="1">
|
<QItemLabel lines="1">
|
||||||
{{ row.quantity }} x {{ currency(row.price) }}
|
{{ row.quantity }} x
|
||||||
|
{{ currency(row.price) }}
|
||||||
</QItemLabel>
|
</QItemLabel>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
<QItemSection
|
<QItemSection side class="total">
|
||||||
side
|
|
||||||
class="total"
|
|
||||||
>
|
|
||||||
<QItemLabel>
|
<QItemLabel>
|
||||||
<span
|
<span> {{ currency(lineDiscountSubtotal(row)) }}</span>
|
||||||
class="discount"
|
<span class="discount" v-if="row.discount">
|
||||||
v-if="row.discount"
|
-
|
||||||
>
|
|
||||||
{{ currency(lineDiscountSubtotal(row)) }} -
|
|
||||||
{{ currency(row.discount) }} =
|
{{ currency(row.discount) }} =
|
||||||
|
{{ currency(lineSubtotal(row)) }}
|
||||||
</span>
|
</span>
|
||||||
{{ currency(lineSubtotal(row)) }}
|
|
||||||
</QItemLabel>
|
</QItemLabel>
|
||||||
</QItemSection>
|
</QItemSection>
|
||||||
</QItem>
|
</QItem>
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -32,101 +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',
|
||||||
|
path: '/ecomerce/confirm/:id?',
|
||||||
|
meta: {
|
||||||
|
title: 'Confirm'
|
||||||
|
},
|
||||||
|
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')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue