pcpuma_unam_operador/components/admin/TablaModulos.vue

114 lines
3.0 KiB
Vue
Raw Normal View History

<template>
<b-table
:data="data"
:loading="isLoadingTable"
2022-07-08 08:19:56 +00:00
:selected.sync="selectedModulo"
:row-class="(row, index) => 'pointer'"
@details-open="(row, index) => obtenerCarritos(row.id_modulo)"
show-detail-icon
paginated
detailed
>
2022-06-20 00:35:50 +00:00
<b-table-column field="modulo" label="Módulo" v-slot="props" centered>
<span>{{ props.row.modulo }}</span>
</b-table-column>
<b-table-column field="activo" label="Activo" v-slot="props" centered>
2022-06-18 03:27:06 +00:00
<BotonDesactivar
:admin="admin"
:data="props.row"
2022-06-21 17:51:13 +00:00
tipo="módulo"
2022-06-18 03:27:06 +00:00
:cambiarStatus="cambiarStatus"
2022-06-20 00:35:50 +00:00
:imprimirWarning="imprimirWarning"
2022-06-18 03:27:06 +00:00
/>
</b-table-column>
2022-07-08 08:19:56 +00:00
<template #detail>
<TablaCarritos
:operador="admin"
:carritos="carritos"
:imprimirError="imprimirError"
:imprimirMensaje="imprimirMensaje"
:imprimirWarning="imprimirWarning"
:isLoadingTable="isLoadingTable"
/>
</template>
</b-table>
</template>
<script>
import axios from 'axios'
2022-06-18 03:27:06 +00:00
import BotonDesactivar from '@/components/operador/BotonDesactivar'
2022-07-08 08:19:56 +00:00
import TablaCarritos from '@/components/operador/TablaCarritos'
export default {
2022-06-18 03:27:06 +00:00
components: {
BotonDesactivar,
2022-07-08 08:19:56 +00:00
TablaCarritos,
2022-06-18 03:27:06 +00:00
},
props: {
2022-06-18 03:27:06 +00:00
admin: { typeof: Object, require: true },
2022-06-21 16:39:01 +00:00
data: { type: Array, required: true },
2022-06-18 03:27:06 +00:00
imprimirMensaje: { type: Function, required: true },
imprimirWarning: { type: Function, required: true },
imprimirError: { type: Function, required: true },
2022-07-04 06:06:28 +00:00
updateIsLoading: { type: Function, require: true },
2022-06-21 16:39:01 +00:00
obtenerCatalogoModulo: { type: Function, required: true },
updateActualizarTabla: { type: Function, required: true },
actualizarTabla: { type: Boolean, required: true },
},
data() {
return {
2022-07-08 08:19:56 +00:00
selectedModulo: {},
isLoadingTable: false,
2022-07-08 08:19:56 +00:00
carritos: [],
}
},
methods: {
2022-06-18 03:27:06 +00:00
cambiarStatus(dataSelect, status) {
const data = { id_modulo: dataSelect.id_modulo, activo: status }
2022-07-04 06:06:28 +00:00
this.updateIsLoading(true)
2022-06-18 03:27:06 +00:00
axios
.put(`${process.env.api}/modulo`, data)
.then((res) => {
2022-06-21 16:39:01 +00:00
this.obtenerCatalogoModulo(this.data[0].institucion.id_institucion)
2022-07-04 06:06:28 +00:00
this.updateIsLoading(false)
2022-06-18 03:27:06 +00:00
this.imprimirMensaje(res.data.message)
})
.catch((err) => {
2022-07-04 06:06:28 +00:00
this.updateIsLoading(false)
2022-06-18 03:27:06 +00:00
this.imprimirError(err.response.data)
})
},
2022-07-08 08:19:56 +00:00
obtenerCarritos(id_modulo) {
this.isLoadingTable = true
axios
.get(
`${process.env.api}/carrito/carritos?pagina=1&id_institucion=${this.admin.institucion.id_institucion}&id_modulo=${id_modulo}`
)
.then(async (res) => {
this.carritos = res.data[0]
this.isLoadingTable = false
})
.catch((err) => {
this.isLoadingTable = false
this.imprimirError(err.response.data)
})
},
},
watch: {
selectedModulo() {
this.$router.push({
path: 'buscar_modulo/' + this.selectedModulo.id_modulo,
})
},
},
}
</script>
2022-07-08 08:19:56 +00:00
<style>
.pointer {
cursor: pointer;
}
</style>