diff --git a/src/components/CatalogueImagesManagement.vue b/src/components/CatalogueImagesManagement.vue new file mode 100644 index 0000000..f752ada --- /dev/null +++ b/src/components/CatalogueImagesManagement.vue @@ -0,0 +1,383 @@ + + + + + diff --git a/src/components/NavBar.vue b/src/components/NavBar.vue index e0c0e27..ad8c616 100644 --- a/src/components/NavBar.vue +++ b/src/components/NavBar.vue @@ -106,8 +106,9 @@ { title: 'Cuadres de tarro', route: '/cuadres_de_tarro', icon: 'mdi-chart-bar'}, { title: 'CSV Tryton', route: '/ventas_para_tryton', icon: 'mdi-file-table'}, { title: 'Compra adm', route: '/compra_admin', icon: 'mdi-cart'}, - { title: 'Gestión de Productos', route: '/admin/products', icon: 'mdi-package-variant'}, - { title: 'Ver Ventas por Catálogo', route: '/admin/catalog-sales', icon: 'mdi-cart-arrow-down'}, + { title: 'Gestión de Productos', route: '/admin/products', icon: 'mdi-package-variant'}, + { title: 'Imágenes de Catálogo', route: '/admin/catalogue-images', icon: 'mdi-image-multiple'}, + { title: 'Ver Ventas por Catálogo', route: '/admin/catalog-sales', icon: 'mdi-cart-arrow-down'}, { divider: true }, { header: 'Sincronización Tryton' }, { title: 'Importar Productos', route: '/sincronizar_productos_tryton', icon: 'mdi-download'}, diff --git a/src/pages/admin/catalogue-images.vue b/src/pages/admin/catalogue-images.vue new file mode 100644 index 0000000..96fb29e --- /dev/null +++ b/src/pages/admin/catalogue-images.vue @@ -0,0 +1,10 @@ + + + diff --git a/src/pages/catalog.vue b/src/pages/catalog.vue index 01812b2..7e68a95 100644 --- a/src/pages/catalog.vue +++ b/src/pages/catalog.vue @@ -379,7 +379,7 @@ export default { this.items = data.map((product) => ({ ...product, quantity: 0, - img: product.img || not_image_product, + img: (product.catalogue_images?.length > 0) ? product.catalogue_images[0] : (product.img || not_image_product), })); }) .catch((error) => { diff --git a/src/router/index.js b/src/router/index.js index 6cb9cb5..a896bdd 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -21,6 +21,7 @@ const ADMIN_ROUTES = [ '/cuadrar_tarro', '/admin/products', '/admin/catalog-sales', + '/admin/catalogue-images', ] const router = createRouter({ diff --git a/src/services/api.js b/src/services/api.js index 5f9ec70..2147aa9 100644 --- a/src/services/api.js +++ b/src/services/api.js @@ -82,6 +82,22 @@ class Api { getCurrentUser() { return this.apiImplementation.getCurrentUser(); } + + getCatalogueImages() { + return this.apiImplementation.getCatalogueImages(); + } + + createCatalogueImage(data) { + return this.apiImplementation.createCatalogueImage(data); + } + + updateCatalogueImage(id, data) { + return this.apiImplementation.updateCatalogueImage(id, data); + } + + deleteCatalogueImage(id) { + return this.apiImplementation.deleteCatalogueImage(id); + } } export default Api; diff --git a/src/services/django-api.js b/src/services/django-api.js index 3ac56e5..61153fa 100644 --- a/src/services/django-api.js +++ b/src/services/django-api.js @@ -130,6 +130,30 @@ class DjangoApi { const url = this.base + "/api/users/me/"; return this.getRequest(url); } + + getCatalogueImages() { + const url = this.base + "/don_confiao/api/catalogue_images/"; + return this.getRequest(url); + } + + createCatalogueImage(data) { + const url = this.base + "/don_confiao/api/catalogue_images/"; + return http.post(url, data, { + headers: { 'Content-Type': undefined }, + }).then((r) => r.data); + } + + updateCatalogueImage(id, data) { + const url = this.base + `/don_confiao/api/catalogue_images/${id}/`; + return http.put(url, data, { + headers: { 'Content-Type': undefined }, + }).then((r) => r.data); + } + + deleteCatalogueImage(id) { + const url = this.base + `/don_confiao/api/catalogue_images/${id}/`; + return http.delete(url).then((r) => r.data); + } } export default DjangoApi;