pcpuma_unam_operador/components/admin/TablaInstiDia.vue

158 lines
4.1 KiB
Vue
Raw Normal View History

2022-06-28 06:41:38 +00:00
<template>
<section>
<b-table :data="data">
<b-table-column field="dia" label="Día" centered v-slot="props">
{{ props.row.dia.dia }}
</b-table-column>
<b-table-column
field="hora_inicio"
label="Hora Inicio"
centered
v-slot="props"
>
{{ props.row.hora_inicio }}
</b-table-column>
<b-table-column field="hora_fin" label="Hora Fin" centered v-slot="props">
{{ props.row.hora_fin }}
</b-table-column>
<b-table-column field="editar" label="Editar" v-slot="props"
><b-button type="is-primary" @click="editarHora(props.row)">
<b-icon icon="pencil" size="is-small" />
</b-button>
</b-table-column>
</b-table>
<div class="columns has-text-centered" v-if="mostrar">
<div class="column">
<p class="subtitle is-5">Selecciona la hora de inicio</p>
<b-clockpicker
type="is-info"
v-model="horaInicio"
inline
:min-time="minTime"
:max-time="maxTime"
:locale="locale"
:hour-format="hourFormat"
></b-clockpicker>
</div>
<p class="subtitle is-2">{{ dia }}</p>
<div class="column">
<p class="subtitle is-5">Selecciona la hora de fin</p>
<b-clockpicker
type="is-info"
v-model="horaFin"
inline
:min-time="minTime"
:max-time="maxTime"
:locale="locale"
:hour-format="hourFormat"
></b-clockpicker>
</div>
</div>
<div class="has-text-centered">
<b-button
class="my-5"
type="is-success"
v-if="mostrar"
@click="cambiarHora"
>Guardar</b-button
>
</div>
</section>
</template>
<script>
import axios from 'axios'
import moment from 'moment'
export default {
props: {
admin: { type: Object, require: true },
imprimirMensaje: { type: Function, required: true },
imprimirWarning: { type: Function, required: true },
imprimirError: { type: Function, required: true },
2022-06-28 17:20:39 +00:00
actualizarTabla: { type: Boolean, required: true },
updateActualizarTabla: { type: Function, required: true },
2022-06-28 06:41:38 +00:00
updateIsLoading: { type: Function, required: true },
},
data() {
const min = new Date()
min.setHours(7)
min.setMinutes(0)
const max = new Date()
max.setHours(20)
max.setMinutes(0)
return {
data: [],
horaInicio: new Date(`01-01-2022 09:00`),
horaFin: new Date(`01-01-2022 17:45`),
minTime: min,
maxTime: max,
mostrar: false,
dia: '',
diaSeleccion: {},
hourFormat: '24', // Browser locale
locale: 'es-ES', // Browser locale
}
},
methods: {
obtenerDias() {
this.updateIsLoading(true)
axios
.get(
2022-06-28 17:20:39 +00:00
`${process.env.api}/institucion-dia/?id_institucion=${this.admin.institucion.id_institucion}`
2022-06-28 06:41:38 +00:00
)
.then((res) => {
this.data = res.data
})
.catch((err) => {
this.imprimirError(err.response.data)
})
},
editarHora(diaSeleccion) {
this.dia = diaSeleccion.dia.dia
this.mostrar = true
this.diaSeleccion = diaSeleccion
},
cambiarHora() {
const data = {
id_institucion_dia: this.diaSeleccion.id_institucion_dia,
hora_inicio: moment(this.horaInicio).format('HH:mm'),
hora_fin: moment(this.horaFin).format('HH:mm'),
activo: true,
}
this.updateIsLoading(true)
axios
.put(`${process.env.api}/institucion-dia`, data)
.then((res) => {
this.updateIsLoading(false)
2022-07-01 05:01:54 +00:00
this.imprimirMensaje(res.data.message)
2022-06-28 17:20:39 +00:00
this.updateActualizarTabla(true)
2022-06-28 06:41:38 +00:00
})
.catch((err) => {
this.error = 'is-danger'
this.updateIsLoading(false)
this.imprimirError(err.response.data)
})
},
},
2022-06-28 17:20:39 +00:00
watch: {
actualizarTabla() {
if (this.actualizarTabla) {
this.obtenerDias()
this.updateActualizarTabla(false)
}
},
},
2022-06-28 06:41:38 +00:00
created() {
this.obtenerDias()
},
}
</script>