buscar carrito listo

This commit is contained in:
xXpuma99Xx 2022-08-04 16:42:10 -05:00
parent 7fdb5e8fb0
commit f4c3f91031
3 changed files with 139 additions and 100 deletions

View File

@ -19,52 +19,20 @@
@modulo-seleccionado="(nuevoModulo) => (idModulo = nuevoModulo)" @modulo-seleccionado="(nuevoModulo) => (idModulo = nuevoModulo)"
/> />
<b-field class="column pb-0" field="carrito" label="Carrito"> <SelectCarrito
<b-select :idInstitucion="
v-model="idCarrito" operador.tipoUsuario.id_tipo_usuario === 3
icon="storefront-outline" ? operador.institucion.id_institucion
rounded : idInstitucion
expanded "
> :idModulo="idModulo"
<option disabled :value="null">Carrito</option> :idCarritoPadre="idCarrito"
<optgroup label="Carritos de Chromebook"> @carrito-seleccionado="(nuevoCarrito) => (idCarrito = nuevoCarrito)"
<option />
:disabled="!idModulo"
v-for="(carrito, index) in carritosC"
:value="carrito.id_carrito"
:key="index"
>
{{ carrito.carrito }}
</option>
</optgroup>
<optgroup label="Carritos de Laptop">
<option
:disabled="!idModulo"
v-for="(carrito, index) in carritosL"
:value="carrito.id_carrito"
:key="index"
>
{{ carrito.carrito }}
</option>
</optgroup>
<optgroup label="Carritos de Ipad">
<option
:disabled="!idModulo"
v-for="(carrito, index) in carritosI"
:value="carrito.id_carrito"
:key="index"
>
{{ carrito.carrito }}
</option>
</optgroup>
</b-select>
</b-field>
<BotonBuscar <BotonBuscar
:buscar="buscar" :buscar="buscar"
:disabled="idCarrito === carrito.id_carrito" :disabled="!idCarrito || idCarrito === carrito.id_carrito"
/> />
</div> </div>
@ -91,6 +59,7 @@ import axios from 'axios'
import AdminCarrito from '@/components/panel_admin/AdminCarrito' import AdminCarrito from '@/components/panel_admin/AdminCarrito'
import BotonBuscar from '@/components/botones/BotonBuscar' import BotonBuscar from '@/components/botones/BotonBuscar'
import InformacionCarrito from '@/components/informacion/InformacionCarrito' import InformacionCarrito from '@/components/informacion/InformacionCarrito'
import SelectCarrito from '@/components/selects/SelectCarrito'
import SelectInstitucion from '@/components/selects/SelectInstitucion' import SelectInstitucion from '@/components/selects/SelectInstitucion'
import SelectModulo from '@/components/selects/SelectModulo' import SelectModulo from '@/components/selects/SelectModulo'
@ -99,6 +68,7 @@ export default {
AdminCarrito, AdminCarrito,
BotonBuscar, BotonBuscar,
InformacionCarrito, InformacionCarrito,
SelectCarrito,
SelectInstitucion, SelectInstitucion,
SelectModulo, SelectModulo,
}, },
@ -110,79 +80,40 @@ export default {
}, },
data() { data() {
return { return {
carritosC: [], idCarrito: 0,
carritosL: [], idInstitucion: 0,
carritosI: [],
modulos: [],
idModulo: 0, idModulo: 0,
idCarrito: null, carritoParam: null,
} }
}, },
methods: { methods: {
buscar() { buscar() {
if (this.idCarrito || this.carrito.id_carrito) { this.carritoParam = parseInt(this.$route.params.carrito)
this.updateIsLoading(true) if (this.idCarrito != this.carritoParam)
axios this.$router.push(`/carritos/buscar_carrito/${this.idCarrito}`)
.get( this.updateIsLoading(true)
`${process.env.api}/carrito/carrito?id_carrito=${
this.idCarrito || this.carrito.id_carrito
}`,
this.$getToken.token()
)
.then((res) => {
this.updateCarrito(res.data)
this.updateIsLoading(false)
if (!this.idModulo) this.idModulo = res.data.modulo.id_modulo
this.$router.push(`/carritos/buscar_carrito/${this.idCarrito}`)
})
.catch((err) => {
this.updateIsLoading(false)
this.$alertsGenericos.imprimirError(this.$buefy, err.response.data)
})
}
},
obtenerModulosInstitucion() {
axios axios
.get( .get(
`${process.env.api}/modulo/modulos?id_institucion=${this.operador.institucion.id_institucion}`, `${process.env.api}/carrito/carrito?id_carrito=${this.idCarrito}`,
this.$getToken.token() this.$getToken.token()
) )
.then((res) => { .then((res) => {
this.modulos = res.data if (!this.idModulo) this.idModulo = res.data.modulo.id_modulo
this.updateCarrito(res.data)
this.updateIsLoading(false)
}) })
.catch((err) => { .catch((err) => {
this.updateIsLoading(false)
this.$alertsGenericos.imprimirError(this.$buefy, err.response.data) this.$alertsGenericos.imprimirError(this.$buefy, err.response.data)
}) })
}, },
obtenerCarritos() {
for (let i = 0; i < 3; i++) {
axios
.get(
`${process.env.api}/carrito/carritos?pagina=1&id_institucion=${
this.operador.institucion.id_institucion
}&id_modulo=${this.idModulo}&id_tipo_carrito=${i + 1}`,
this.$getToken.token()
)
.then((res) => {
if (i + 1 === 1) this.carritosC = res.data[0]
if (i + 1 === 2) this.carritosL = res.data[0]
else this.carritosI = res.data[0]
})
.catch((err) => {
this.$alertsGenericos.imprimirError(this.$buefy, err.response.data)
})
}
},
},
watch: {
idModulo() {
this.obtenerCarritos()
},
}, },
created() { created() {
this.obtenerModulosInstitucion() this.carritoParam = parseInt(this.$route.params.carrito)
this.idCarrito = this.$route.params.carrito if (this.carritoParam) {
if (this.idCarrito) this.buscar() this.idCarrito = this.carritoParam
this.buscar()
}
}, },
} }
</script> </script>

View File

@ -69,9 +69,9 @@ export default {
}, },
data() { data() {
return { return {
moduloParam: null,
idInstitucion: 0, idInstitucion: 0,
idModulo: 0, idModulo: 0,
moduloParam: null,
} }
}, },
methods: { methods: {

View File

@ -0,0 +1,108 @@
<template>
<b-field class="column mb-0 pb-0" label="Carrito" :class="columnSize">
<b-select
icon="store"
:loading="isLoadingSelect"
v-model="idCarrito"
expanded
rounded
>
<option v-if="!idModulo" disabled>Selecciona un módulo</option>
<option :disabled="deshabilitarOptVacia" :value="0" v-else>
Selecciona una opción
</option>
<optgroup
v-for="(tc, index) in carritos"
:key="index"
:label="tiposCarritos[index].tipo_carrito"
v-show="mostarTipoCarrito(tc)"
>
<option v-for="(c, jndex) in tc" :key="jndex" :value="c.id_carrito">
{{ c.carrito }}
</option>
</optgroup>
</b-select>
</b-field>
</template>
<script>
import axios from 'axios'
export default {
props: {
deshabilitarOptVacia: { typeof: Boolean, required: false, default: true },
idInstitucion: { type: Number, required: true, default: 0 },
idModulo: { type: Number, required: true, default: 0 },
idCarritoPadre: { type: Number, required: true, default: 0 },
columnSize: { typeof: String, required: false, default: '' },
},
data: () => {
return {
carritos: [],
tiposCarritos: [],
isLoadingSelect: false,
idCarrito: 0,
}
},
methods: {
mostarTipoCarrito(carritos) {
return carritos.length > 0 ? true : false
},
async obtenerCarritos() {
const carritos = []
this.isLoadingSelect = true
for (let i = 0; i < this.tiposCarritos.length; i++) {
carritos.push([])
await axios
.get(
`${process.env.api}/carrito/carritos?pagina=1&id_institucion=${this.idInstitucion}&id_modulo=${this.idModulo}&id_tipo_carrito=${this.tiposCarritos[i].id_tipo_carrito}`,
this.$getToken.token()
)
.then((res) => {
for (let j = 0; j < res.data[0].length; j++)
carritos[i].push(res.data[0][j])
})
.catch((err) => {})
this.isLoadingSelect = false
}
this.carritos = carritos
},
obtenerTiposCarritos() {
this.tiposCarritos = []
this.carritos = []
axios
.get(
`${process.env.api}/institucion-tipo-carrito`,
this.$getToken.token()
)
.then((res) => {
this.tiposCarritos = res.data
for (let i = 0; i < this.tiposCarritos.length; i++)
this.carritos.push([])
if (this.idModulo) return this.obtenerCarritos()
})
.catch((err) => {})
},
},
watch: {
async idModulo(nuevoIdInstitucion) {
if (nuevoIdInstitucion) await this.obtenerCarritos()
},
idCarrito(carritoSeleccionado) {
this.$emit('carrito-seleccionado', parseInt(carritoSeleccionado))
},
idCarritoPadre(nuevoCarrito) {
this.idCarrito = nuevoCarrito
},
},
created() {
if (this.idCarritoPadre) this.idCarrito = this.idCarritoPadre
this.obtenerTiposCarritos()
},
}
</script>
<style scoped></style>