Agregada lógica de cantidad de ollas
This commit is contained in:
parent
5a1d95c636
commit
a0ee4131c8
3 changed files with 51 additions and 21 deletions
|
@ -1,14 +1,42 @@
|
||||||
<script>
|
<script>
|
||||||
import { mapMutations, mapState } from "vuex";
|
import { mapActions, mapMutations, mapState } from "vuex";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "CantidadOllas",
|
name: "CantidadOllas",
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations("ollas", ["incrementar", "decrementar"]),
|
...mapActions("ollas", ["actualizarCantidadOllas"]),
|
||||||
|
...mapMutations("pedido", ["setCantidadOllas"]),
|
||||||
|
incrementar() {
|
||||||
|
this.control += 1;
|
||||||
|
this.actualizarDebounced();
|
||||||
|
},
|
||||||
|
decrementar() {
|
||||||
|
this.control -= 1;
|
||||||
|
this.actualizarDebounced();
|
||||||
|
},
|
||||||
|
async actualizarDebounced() {
|
||||||
|
const params = { cantidad: this.control };
|
||||||
|
clearTimeout(this.debounceTimer);
|
||||||
|
this.debounceTimer = setTimeout(() => {
|
||||||
|
this.setCantidadOllas(params);
|
||||||
|
this.actualizarCantidadOllas(params);
|
||||||
|
}, 500);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState("ollas", ["cantidad_de_ollas"])
|
...mapState("pedido", ["cantidad_de_ollas"])
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
debounceTimer: null,
|
||||||
|
control: 0,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
cantidad_de_ollas() {
|
||||||
|
this.control = this.cantidad_de_ollas;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -18,17 +46,17 @@ export default {
|
||||||
<div class="field has-addons is-justify-content-center contador">
|
<div class="field has-addons is-justify-content-center contador">
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<button class="button is-small"
|
<button class="button is-small"
|
||||||
:disabled="cantidad_de_ollas < 1"
|
:disabled="control < 1"
|
||||||
@click.capture="decrementar">
|
@click.capture="decrementar">
|
||||||
<i class="fa fa-solid fa-minus"></i>
|
<i class="fa fa-solid fa-minus"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<input id="cantidad"
|
<input id="cantidad"
|
||||||
v-model="cantidad_de_ollas"
|
v-model="control"
|
||||||
class="input is-small"
|
class="input is-small has-text-centered"
|
||||||
type="number"
|
type="number"
|
||||||
style="text-align: center">
|
@input="actualizarDebounced">
|
||||||
</div>
|
</div>
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<button class="button is-small" @click="incrementar">
|
<button class="button is-small" @click="incrementar">
|
||||||
|
|
18
resources/js/store/modules/ollas.js
vendored
18
resources/js/store/modules/ollas.js
vendored
|
@ -2,19 +2,12 @@ import axios from "axios";
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
monto_por_olla: undefined,
|
monto_por_olla: undefined,
|
||||||
cantidad_de_ollas: 0,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const mutations = {
|
const mutations = {
|
||||||
setMontoPorOlla(state, parametros) {
|
setMontoPorOlla(state, parametros) {
|
||||||
state.monto_por_olla = Number.parseInt(parametros.find(p => p.id === 'monto-olla').valor);
|
state.monto_por_olla = Number.parseInt(parametros.find(p => p.id === 'monto-olla').valor);
|
||||||
},
|
},
|
||||||
incrementar(state) {
|
|
||||||
state.cantidad_de_ollas += 1;
|
|
||||||
},
|
|
||||||
decrementar(state) {
|
|
||||||
state.cantidad_de_ollas -= 1;
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const actions = {
|
const actions = {
|
||||||
|
@ -22,13 +15,18 @@ const actions = {
|
||||||
const response = await axios.get('/api/parametros');
|
const response = await axios.get('/api/parametros');
|
||||||
commit('setMontoPorOlla', response.data);
|
commit('setMontoPorOlla', response.data);
|
||||||
},
|
},
|
||||||
|
async actualizarCantidadOllas({ rootState }, { cantidad: cantidad}) {
|
||||||
|
const barrio = rootState.pedido.grupo_de_compra.id;
|
||||||
|
const params = { cantidad : cantidad };
|
||||||
|
await axios.put(`/ollas/${barrio}/cantidad`, params);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const getters = {
|
const getters = {
|
||||||
montoTotal() {
|
montoTotal(state, _, rootState) {
|
||||||
return state.monto_por_olla * state.cantidad_de_ollas;
|
return state.monto_por_olla * rootState.pedido.cantidad_de_ollas;
|
||||||
},
|
},
|
||||||
montoSuperado: (state, getters, rootState) => {
|
montoSuperado: (_, getters, rootState) => {
|
||||||
return rootState.pedido.total > getters.montoTotal;
|
return rootState.pedido.total > getters.montoTotal;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
6
resources/js/store/modules/pedido.js
vendored
6
resources/js/store/modules/pedido.js
vendored
|
@ -39,6 +39,7 @@ const mutations = {
|
||||||
state.nombre = pedido.nombre;
|
state.nombre = pedido.nombre;
|
||||||
state.productos = pedido.productos;
|
state.productos = pedido.productos;
|
||||||
state.total = Number.parseFloat(pedido.total.replace(',',''));
|
state.total = Number.parseFloat(pedido.total.replace(',',''));
|
||||||
|
state.cantidad_de_ollas = Number.parseInt(pedido.cantidad_de_ollas);
|
||||||
delete state.aprobado;
|
delete state.aprobado;
|
||||||
delete state.total_transporte;
|
delete state.total_transporte;
|
||||||
delete state.cantidad_transporte;
|
delete state.cantidad_transporte;
|
||||||
|
@ -58,6 +59,9 @@ const mutations = {
|
||||||
state.total_sin_devoluciones = null;
|
state.total_sin_devoluciones = null;
|
||||||
state.devoluciones_total = null;
|
state.devoluciones_total = null;
|
||||||
state.devoluciones_notas = null;
|
state.devoluciones_notas = null;
|
||||||
|
},
|
||||||
|
setCantidadOllas(state, { cantidad }) {
|
||||||
|
state.cantidad_de_ollas = cantidad;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -109,7 +113,7 @@ const actions = {
|
||||||
commit('reset');
|
commit('reset');
|
||||||
},
|
},
|
||||||
async getPedidoDeOllas({ commit }) {
|
async getPedidoDeOllas({ commit }) {
|
||||||
const response = await axios.get(`/api/ollas/${state.grupo_de_compra.id}`);
|
const response = await axios.get(`/ollas/${state.grupo_de_compra.id}`);
|
||||||
commit('setPedidoDeOllas', response.data);
|
commit('setPedidoDeOllas', response.data);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue