pcpuma_unam_operador/components/tablas/TablaDias.vue
2022-07-26 11:49:26 -05:00

106 lines
2.8 KiB
Vue

<template>
<b-table
class="mb-6"
:data="dias"
:loading="isLoadingTable"
detailed
hoverable
show-detail-icon
striped
>
<b-table-column field="dia" label="Día" v-slot="props" centered>
<p>{{ props.row.dia.dia }}</p>
</b-table-column>
<b-table-column
field="hora_inicio"
label="Hora inicio del servicio"
v-slot="props"
centered
>
<p>{{ props.row.hora_inicio }}</p>
</b-table-column>
<b-table-column
field="hora_fin"
label="Hora fin del servicio"
v-slot="props"
centered
>
<p>{{ props.row.hora_fin }}</p>
</b-table-column>
<b-table-column field="editar" label="Editar horas" v-slot="props" centered>
<b-button type="is-primary" @click="editarHora(props.row)">
<b-icon icon="pencil" size="is-small" />
</b-button>
</b-table-column>
<b-table-column field="activo" label="Status" v-slot="props" centered>
<BotonDesactivar
:activarDesactivar="activarDesactivar"
:row="props.row"
:msjWarning="`¿Estás segur@ de querer ${
props.row.activo || props.row.mostrar ? 'desactivar' : 'activar'
} este tipo de carrito?`"
/>
</b-table-column>
<template #detail="props">
<HorasExcepcionDia
:institucionDia="props.row"
:horasExcepcion="props.row.horasExcepcion"
:isLoadingTable="isLoadingTable"
:obtenerDias="obtenerDias"
:updateIsLoading="updateIsLoading"
/>
</template>
</b-table>
</template>
<script>
import axios from 'axios'
import BotonDesactivar from '@/components/botones/BotonDesactivar'
import HorasExcepcionDia from '@/components/tablas/HorasExcepcionDia'
export default {
components: { BotonDesactivar, HorasExcepcionDia },
props: {
dias: { type: Array, required: true, default: () => [] },
isLoadingTable: { type: Boolean, required: true, default: false },
obtenerDias: { type: Function, required: true },
updateIsLoading: { type: Function, required: true },
},
data() {
return {}
},
methods: {
activarDesactivar(institucionDia) {
const data = {
id_institucion_dia: institucionDia.id_institucion_dia,
activo: !institucionDia.activo,
}
this.updateIsLoading(true)
axios
.put(
`${process.env.api}/institucion-dia/`,
data,
this.$getToken.token()
)
.then((res) => {
this.obtenerDias()
this.updateIsLoading(false)
this.$alertsGenericos.imprimirMensaje(this.$buefy, res.data.message)
})
.catch((err) => {
this.updateIsLoading(false)
this.$alertsGenericos.imprimirError(this.$buefy, err.response.data)
})
},
},
watch: {},
created() {},
}
</script>