pcpuma_unam_operador/components/tablas/TablaPrestamos.vue

323 lines
8.1 KiB
Vue
Raw Normal View History

2022-07-25 12:49:16 +00:00
<template>
<b-table
2022-07-29 01:04:17 +00:00
class="pb-6"
2022-07-25 12:49:16 +00:00
:current-page="page"
2022-08-24 08:37:03 +00:00
:data="prestamos"
2022-07-25 12:49:16 +00:00
:loading="isLoadingTable"
:per-page="25"
2022-07-26 16:49:26 +00:00
:row-class="(row, index) => pintarFila(row)"
2022-07-25 12:49:16 +00:00
:total="total"
@page-change="onPageChange"
backend-pagination
hoverable
paginated
striped
>
2022-07-26 16:49:26 +00:00
<b-table-column
field="idPrestamo"
label="Id de Préstamo"
v-slot="props"
v-if="columnaIdPrestamo"
centered
>
2022-08-24 08:37:03 +00:00
<p>{{ props.row.id_prestamo }}</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
2023-01-10 15:56:32 +00:00
<b-table-column
field="institucion"
label="Institución"
v-slot="props"
v-if="operador.tipoUsuario.id_tipo_usuario === 2"
centered
>
<p>{{ props.row.equipo.carrito.modulo.institucion.institucion }}</p>
</b-table-column>
2022-07-26 16:49:26 +00:00
<b-table-column field="fecha_inicio" label="Fecha" v-slot="props" centered>
2022-08-24 08:37:03 +00:00
<p>{{ fechaHora(props.row.fecha_inicio) }}</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="numeroCuenta"
label="Número de Cuenta/Trabajador"
v-slot="props"
v-if="columnaNumeroCuenta"
centered
>
2023-02-17 16:03:18 +00:00
<p>{{ props.row.institucionUsuario.usuario.usuario }}</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="nombre"
label="Nombre"
v-slot="props"
2023-01-10 15:56:32 +00:00
v-if="columnaNombre && operador.tipoUsuario.id_tipo_usuario > 2"
2022-07-26 16:49:26 +00:00
centered
>
2023-02-17 16:03:18 +00:00
<p>{{ props.row.institucionUsuario.usuario.nombre }}</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="carrera"
label="Carrera"
v-slot="props"
v-if="columnaCarrera"
centered
>
2023-02-17 16:03:18 +00:00
<p>
{{ props.row.institucionUsuario.institucionCarrera.carrera.carrera }}
2022-08-24 08:37:03 +00:00
</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="operadorEntrega"
label="Operador Entrega"
v-slot="props"
v-if="columnaOperadores"
centered
>
2022-08-24 08:37:03 +00:00
<p v-if="props.row.operadorEntrega">
2022-07-26 16:49:26 +00:00
{{ props.row.operadorEntrega.operador }}
2022-08-24 08:37:03 +00:00
</p>
2022-07-26 16:49:26 +00:00
2022-08-24 08:37:03 +00:00
<p v-else>-</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="operadorRegreso"
label="Operador Regreso"
v-slot="props"
v-if="columnaOperadores"
centered
>
2022-09-08 21:35:32 +00:00
<p v-if="props.row.operadorRegreso">
{{ props.row.operadorRegreso.operador }}
2022-08-24 08:37:03 +00:00
</p>
2022-07-26 16:49:26 +00:00
2022-08-24 08:37:03 +00:00
<p v-else>-</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="modulo"
label="Módulo"
v-slot="props"
v-if="columnaModulo"
centered
>
2022-08-24 08:37:03 +00:00
<p>{{ props.row.equipo.carrito.modulo.modulo }}</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="carrito"
label="Carrito"
v-slot="props"
v-if="columnaCarrito"
centered
>
2022-08-24 08:37:03 +00:00
<p>{{ props.row.equipo.carrito.carrito }}</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="equipo"
label="Equipo"
v-slot="props"
v-if="columnaEquipo"
centered
>
2022-08-24 08:37:03 +00:00
<p>{{ props.row.equipo.equipo }}</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="numero_inventario"
label="Número de Inventario"
v-slot="props"
v-if="columnaNumeroInventario"
centered
>
2022-08-24 08:37:03 +00:00
<p>{{ props.row.equipo.numero_inventario }}</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="tipo_carrito"
label="Tipo"
v-slot="props"
v-if="columnaTipo"
centered
>
2022-08-24 08:37:03 +00:00
<p>{{ props.row.equipo.carrito.tipoCarrito.tipo_carrito }}</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="hora_inicio"
label="Hora Inicio"
v-slot="props"
centered
>
2022-08-24 08:37:03 +00:00
<p v-if="props.row.hora_inicio">{{ hora(props.row.hora_inicio) }}</p>
2022-07-26 16:49:26 +00:00
2022-08-24 08:37:03 +00:00
<p v-else>-</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="hora_fin"
label="Hora Fin"
v-slot="props"
v-if="columnaHoraFin"
centered
>
2022-08-24 08:37:03 +00:00
<p v-if="props.row.hora_fin">{{ hora(props.row.hora_fin) }}</p>
2022-07-26 16:49:26 +00:00
2022-08-24 08:37:03 +00:00
<p v-else>-</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="fecha_entrega"
label="Fecha Regreso"
v-slot="props"
v-if="columnaHoraRegreso"
centered
>
2022-08-24 08:37:03 +00:00
<p v-if="props.row.fecha_entrega">
2022-07-26 16:49:26 +00:00
{{ fechaHora(props.row.fecha_entrega) }}
2022-08-24 08:37:03 +00:00
</p>
2022-07-26 16:49:26 +00:00
2022-08-24 08:37:03 +00:00
<p v-else>-</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="cancelar"
label="Cancelar"
v-slot="props"
2023-01-10 15:56:32 +00:00
v-if="columnaBotonCancelar && operador.tipoUsuario.id_tipo_usuario === 4"
2022-07-26 16:49:26 +00:00
centered
>
<ColumnaCancelarPrestamo
:prestamo="props.row"
:updateIsLoadingPage="updateIsLoadingPage"
2022-08-18 16:16:28 +00:00
v-if="props.row.equipo.status.id_status === 3"
2022-07-26 16:49:26 +00:00
/>
</b-table-column>
<b-table-column
field="cancelado_operador"
label="Cancelación Operador"
v-slot="props"
v-if="columnaCanceladoOperador"
centered
>
2022-08-24 08:37:03 +00:00
<p v-if="props.row.cancelado_operador">
2022-07-26 16:49:26 +00:00
<b-icon icon="check" class="tag is-danger" />
2022-08-24 08:37:03 +00:00
</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
<b-table-column
field="cancelado_usuario"
label="Cancelación Usuario"
v-slot="props"
v-if="columnaCanceladoUsuario"
centered
>
2022-08-24 08:37:03 +00:00
<p v-if="props.row.cancelado_usuario">
2022-07-26 16:49:26 +00:00
<b-icon icon="check" class="tag is-danger" />
2022-08-24 08:37:03 +00:00
</p>
2022-07-26 16:49:26 +00:00
</b-table-column>
2022-07-25 12:49:16 +00:00
</b-table>
</template>
<script>
2022-07-26 16:49:26 +00:00
import moment from 'moment'
2022-08-03 23:05:17 +00:00
import ColumnaCancelarPrestamo from '@/components/tablas/ColumnaCancelarPrestamo'
2022-07-26 16:49:26 +00:00
2022-07-25 12:49:16 +00:00
export default {
2022-07-26 16:49:26 +00:00
components: { ColumnaCancelarPrestamo },
2022-07-25 12:49:16 +00:00
props: {
2023-01-09 17:29:31 +00:00
prestamos: { type: Array, required: true, default: () => [] },
2022-08-24 08:37:03 +00:00
columnaBotonCancelar: { type: Boolean, required: false, default: false },
columnaCarrera: { type: Boolean, required: false, default: false },
columnaCarrito: { type: Boolean, required: false, default: false },
2022-07-26 16:49:26 +00:00
columnaCanceladoOperador: {
type: Boolean,
required: false,
default: false,
},
2022-08-24 08:37:03 +00:00
columnaCanceladoUsuario: { type: Boolean, required: false, default: false },
columnaEquipo: { type: Boolean, required: false, default: false },
columnaHoraFin: { type: Boolean, required: false, default: false },
columnaHoraRegreso: { type: Boolean, required: false, default: false },
columnaIdPrestamo: { type: Boolean, required: false, default: false },
columnaModulo: { type: Boolean, required: false, default: false },
columnaNombre: { type: Boolean, required: false, default: false },
columnaNumeroCuenta: { type: Boolean, required: false, default: false },
columnaNumeroInventario: { type: Boolean, required: false, default: false },
columnaOperadores: { type: Boolean, required: false, default: false },
columnaTipo: { type: Boolean, required: false, default: false },
filaActivo: { type: Boolean, required: false, default: false },
filaRetraso: { type: Boolean, required: false, default: false },
2023-01-09 17:29:31 +00:00
isLoadingTable: { type: Boolean, required: true, default: false },
onPageChange: { type: Function, required: true, default: () => {} },
2022-08-24 08:37:03 +00:00
updateIsLoadingPage: { type: Function, required: false, default: () => {} },
page: { type: Number, required: true, default: 0 },
total: { type: Number, required: true, default: 0 },
2023-01-10 15:56:32 +00:00
operador: { type: Object, required: true, default: () => ({}) },
2022-07-25 12:49:16 +00:00
},
2022-07-26 16:49:26 +00:00
methods: {
hora(date) {
const fecha = moment(date)
return fecha.isValid() ? fecha.format('HH:mm') : ''
},
fechaHora(date) {
const fecha = moment(date)
return fecha.isValid() ? fecha.format('YYYY-MM-DD HH:mm') : ''
},
pintarFila(row) {
if (this.filaRetraso) return this.retraso(row)
else if (this.filaActivo) return this.activo(row)
return ''
},
retraso(row) {
const now = moment()
2022-08-25 16:18:56 +00:00
const horaFin = moment(row.hora_fin)
const quinceMin = moment(row.hora_fin).add(15, 'm')
2022-07-26 16:49:26 +00:00
if (now > horaFin) {
if (now < quinceMin) return 'posible-multa'
return 'retraso'
}
return ''
},
activo(row) {
if (row.activo) return 'activo'
return ''
},
2022-07-25 12:49:16 +00:00
},
}
</script>
2022-07-26 16:49:26 +00:00
<style>
.retraso {
background: #ff7373 !important;
}
.retraso:hover {
background: #e06464 !important;
}
.posible-multa {
background: #ffe08a !important;
}
.posible-multa:hover {
background: #fbdb7d !important;
}
.activo {
background-color: #3fc36d !important;
}
.activo:hover {
background-color: #35a058 !important;
}
</style>