pedi2/resources/js/app.js

107 lines
3.3 KiB
JavaScript
Raw Normal View History

2022-01-08 02:53:00 -03:00
/**
* First we will load all of this project's JavaScript dependencies which
* includes Vue and other libraries. It is a great starting point when
* building robust, powerful web applications using Vue and Laravel.
*/
2022-05-25 19:03:29 -03:00
import axios from 'axios';
import animate from 'animate.css';
2023-05-27 20:08:55 -03:00
import Vue from 'vue';
2022-01-08 02:53:00 -03:00
window.Vue = require('vue');
2022-05-25 19:03:29 -03:00
window.Event = new Vue();
window.axios = axios;
window.bulmaToast = require('bulma-toast');
2022-01-08 02:53:00 -03:00
/**
* The following block of code may be used to automatically register your
* Vue components. It will recursively scan this directory for the Vue
* components and automatically register them with their "basename".
*
* Eg. ./components/ExampleComponent.vue -> <example-component></example-component>
*/
2022-05-25 19:03:29 -03:00
const files = require.context('./', true, /\.vue$/i)
files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default))
/**
2023-05-27 20:08:55 -03:00
* Constants
*/
2023-05-27 20:08:55 -03:00
Vue.prototype.$rootMiga = {
nombre: "Categorías",
href: "/productos"
}
2023-05-27 15:33:08 -03:00
/**
* Global methods
*/
2023-05-27 20:08:55 -03:00
Vue.prototype.$settearProducto = function(cantidad, id) {
Event.$emit("sync-subpedido", this.cant, this.producto.id)
}
2023-09-04 18:20:31 -03:00
Vue.prototype.$toast = function(mensaje, duration = 1000) {
2023-05-27 20:08:55 -03:00
return window.bulmaToast.toast({
message: mensaje,
2023-09-04 18:20:31 -03:00
duration: duration,
2023-05-27 20:08:55 -03:00
type: 'is-danger',
position: 'bottom-center',
animate: { in: 'fadeIn', out: 'fadeOut' }
});
}
2022-01-08 02:53:00 -03:00
/**
* Next, we will create a fresh Vue application instance and attach it to
* the page. Then, you may begin adding components to this application
* or customize the JavaScript scaffolding to fit your unique needs.
*/
const app = new Vue({
2023-05-27 20:08:55 -03:00
el: '#root',
data() {
return {
gdc: null,
pedido: null
}
},
computed: {
productos: function() {
return this.pedido.productos
}
},
methods: {
cantidad(producto) {
let pedido = this.productos.some(p => p.id == producto.id)
return pedido ? this.productos.find(p => p.id == producto.id).pivot.cantidad : 0
}
},
2023-05-27 20:08:55 -03:00
mounted() {
Event.$on('obtener-sesion', () => {
axios.get('/subpedidos/obtener_sesion')
.then(response => {
this.pedido = response.data.subpedido.id
axios.get('/api/subpedidos/' + this.pedido)
.then(response => {
this.pedido = response.data.data
this.gdc = this.pedido.grupo_de_compra.id
})
})
})
Event.$on('sync-subpedido', (cantidad, id) => {
if (this.pedido.aprobado) {
2023-09-04 18:20:31 -03:00
this.$toast('No se puede modificar un pedido ya aprobado', 2000);
return;
}
2023-05-27 20:08:55 -03:00
axios.post("/api/subpedidos/" + this.pedido.id + "/sync", {
cantidad: cantidad,
producto_id: id
}).then((response) => {
this.pedido = response.data.data
this.$toast('Pedido actualizado exitosamente')
});
});
Event.$on('aprobacion-subpedido', (subpedidoId, aprobado) => {
axios.post("/api/admin/subpedidos/" + subpedidoId + "/aprobacion", {
aprobacion: aprobado
}).then((response) => {
Event.$emit('sync-aprobacion', response.data.data);
this.$toast('Pedido ' + (aprobado ? 'aprobado' : 'desaprobado') + ' exitosamente')
})
})
Event.$emit('obtener-sesion')
},
2022-01-08 02:53:00 -03:00
});