pcpuma_unam_operador/components/buscar/BuscarCarrito.vue
2022-08-03 15:24:54 -05:00

189 lines
5.2 KiB
Vue

<template>
<div class="box">
<div class="columns is-align-items-flex-end">
<SelectInstitucion
:idInstitucionPadre="idInstitucion"
@institucion-seleccionada="
(nuevaInstitucion) => (idInstitucion = nuevaInstitucion)
"
v-if="operador.tipoUsuario.id_tipo_usuario === 2"
/>
<SelectModulo
:idInstitucion="
operador.tipoUsuario.id_tipo_usuario === 3
? operador.institucion.id_institucion
: idInstitucion
"
:idModuloPadre="idModulo"
@modulo-seleccionado="(nuevoModulo) => (idModulo = nuevoModulo)"
/>
<b-field class="column pb-0" field="carrito" label="Carrito">
<b-select
v-model="idCarrito"
icon="storefront-outline"
rounded
expanded
>
<option disabled :value="null">Carrito</option>
<optgroup label="Carritos de Chromebook">
<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
:buscar="buscar"
:disabled="idCarrito === carrito.id_carrito"
/>
</div>
<div class="columns">
<InformacionCarrito
:operador="operador"
:carrito="carrito"
:updateIsLoading="updateIsLoading"
:buscar="buscar"
/>
<AdminCarrito
:operador="operador"
:carrito="carrito"
:updateIsLoading="updateIsLoading"
:buscar="buscar"
/>
</div>
</div>
</template>
<script>
import axios from 'axios'
import AdminCarrito from '@/components/panel_admin/AdminCarrito'
import BotonBuscar from '@/components/botones/BotonBuscar'
import InformacionCarrito from '@/components/informacion/InformacionCarrito'
import SelectInstitucion from '@/components/selects/SelectInstitucion'
import SelectModulo from '@/components/selects/SelectModulo'
export default {
components: {
AdminCarrito,
BotonBuscar,
InformacionCarrito,
SelectInstitucion,
SelectModulo,
},
props: {
operador: { type: Object, required: true },
carrito: { type: Object, required: true },
updateIsLoading: { type: Function, required: true },
updateCarrito: { type: Function, required: true },
},
data() {
return {
carritosC: [],
carritosL: [],
carritosI: [],
modulos: [],
idModulo: 0,
idCarrito: null,
}
},
methods: {
buscar() {
if (this.idCarrito || this.carrito.id_carrito) {
this.updateIsLoading(true)
axios
.get(
`${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
.get(
`${process.env.api}/modulo/modulos?id_institucion=${this.operador.institucion.id_institucion}`,
this.$getToken.token()
)
.then((res) => {
this.modulos = res.data
})
.catch((err) => {
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() {
this.obtenerModulosInstitucion()
this.idCarrito = this.$route.params.carrito
if (this.idCarrito) this.buscar()
},
}
</script>