Compare commits
112 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e20aa76db3 | |||
| ae077e367e | |||
| ab75e97fa4 | |||
| 88716e1b40 | |||
| c03ee96e07 | |||
| 3dfe973014 | |||
| ef3e7aeb16 | |||
| 511922d332 | |||
| 544d340ce6 | |||
| 38ef641f7f | |||
| d74a3cfdcf | |||
| b84fc840a9 | |||
| b496447700 | |||
| ce31fd5ea0 | |||
| 834d1ee77e | |||
| 60298f5c00 | |||
| a25c709ae0 | |||
| 0817b129e3 | |||
| 446a98e0c5 | |||
| 966a9956c1 | |||
| c59e37cad3 | |||
| a50011d673 | |||
| 9436da3e37 | |||
| 6955bb37f4 | |||
| bbc84e3f03 | |||
| 90b9e626d5 | |||
| ec3ad54203 | |||
| 8f748cbc41 | |||
| f6bb33dce5 | |||
| 151009356e | |||
| 823b4c31e7 | |||
| de0029a3ee | |||
| b318ad742d | |||
| adbf32efbe | |||
| 80b81e35a2 | |||
| 9af00d7d2d | |||
| f96636b0a7 | |||
| c242c13731 | |||
| 08633003c2 | |||
| ce9dee24c3 | |||
| 482cd647a1 | |||
| 95160460e0 | |||
| b8f19ba6ef | |||
| f892d8bc75 | |||
| d9c25da266 | |||
| 5ec54596e0 | |||
| cc5183db68 | |||
| 19f99a558c | |||
| 83d97ea3bb | |||
| 22ef828e83 | |||
| 0faee3b869 | |||
| dbe4d42aef | |||
| fca7349537 | |||
| 4b7867065f | |||
| 534c89b2ee | |||
| b215ec615f | |||
| 6e27de0833 | |||
| c7017b2968 | |||
| d3acc1f574 | |||
| e66f738012 | |||
| 682e08f00e | |||
| 87ff6c5269 | |||
| 4d1619c09b | |||
| d2ed0ff465 | |||
| 0913fc6166 | |||
| 0d2f040297 | |||
| 911e650043 | |||
| 942f29859d | |||
| 4123f51841 | |||
| 33adb35397 | |||
| 1097d89cde | |||
| 4b97608c3e | |||
| e76c4b8a2c | |||
| 598c6327f1 | |||
| ea1d9f28cf | |||
| 8301c8229d | |||
| e51da59352 | |||
| 5fe0100d10 | |||
| 762fb8e6ce | |||
| 4e0c70aae1 | |||
| e650d2ce24 | |||
| d28cf16b9a | |||
| de6cb42901 | |||
| 7c1580d399 | |||
| 4c384bcb1b | |||
| 067f0f9ad6 | |||
| 755c48e789 | |||
| 248d0a429f | |||
| ad8246a10a | |||
| 633f5ce333 | |||
| d12a92cfde | |||
| 7c00fe6bee | |||
| 79b63ffa73 | |||
| b0c7611f67 | |||
| 5d2cc532ba | |||
| 8d9b9ef5cd | |||
| a64262575c | |||
| cf0a8273d9 | |||
| 90114e78b6 | |||
| b2012998c3 | |||
| 07744dc9be | |||
| 63e64bfde4 | |||
| 3643efb2d4 | |||
| 6d8f7f44ab | |||
| fd249de706 | |||
| 4d12028609 | |||
| b9e7680ddf | |||
| da78027337 | |||
| 800760e824 | |||
| fe13ba17c0 | |||
| e891fdeb7b | |||
| 6dede0754c |
Binary file not shown.
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 129 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.4 KiB |
+163
-15
@@ -1,28 +1,23 @@
|
|||||||
|
<!--
|
||||||
<template>
|
<template>
|
||||||
<div class="full-h is-flex is-justify-content-center is-align-items-center">
|
<div class="full-h is-flex is-justify-content-center is-align-items-center">
|
||||||
<form class="box">
|
<form class="box">
|
||||||
<div class="has-text-centered">
|
<div class="has-text-centered">
|
||||||
<h2 class="is-size-4">
|
<h2 class="is-size-4">
|
||||||
<strong
|
<strong>Inscripción a servicios de CeDeTec</strong>
|
||||||
>Inscripción para el uso de mesas para dispositivos móviles
|
|
||||||
personales</strong
|
|
||||||
>
|
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<b-field label="Número de cuenta" :type="error">
|
<b-field label="Número de cuenta" :type="error">
|
||||||
<b-input
|
<b-input
|
||||||
type="text"
|
type="text"
|
||||||
|
placeholder="Número de cuenta"
|
||||||
@keyup.enter.native="login()"
|
@keyup.enter.native="login()"
|
||||||
v-model="numeroCuenta"
|
v-model="numeroCuenta"
|
||||||
/>
|
/>
|
||||||
</b-field>
|
</b-field>
|
||||||
|
|
||||||
<b-field
|
<b-field label="Contraseña" :type="error">
|
||||||
label="Contraseña"
|
|
||||||
message="Recuerda que tu contraseña es tu NIP de escolares"
|
|
||||||
:type="error"
|
|
||||||
>
|
|
||||||
<b-input
|
<b-input
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="NIP de escolares"
|
placeholder="NIP de escolares"
|
||||||
@@ -32,6 +27,13 @@
|
|||||||
/>
|
/>
|
||||||
</b-field>
|
</b-field>
|
||||||
|
|
||||||
|
<p class="font" :class="colorSize">
|
||||||
|
Si no recuerdas tu NIP de escolares, ingresa:
|
||||||
|
<a href="https://sistemas.acatlan.unam.mx/recuperanip/" target="_blanc"
|
||||||
|
>aquí</a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
|
||||||
<div class="has-text-centered">
|
<div class="has-text-centered">
|
||||||
<b-button
|
<b-button
|
||||||
@click="login()"
|
@click="login()"
|
||||||
@@ -42,6 +44,10 @@
|
|||||||
</b-button>
|
</b-button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
<b-button @click="$router.push('/profesor/registro-profesor')">
|
||||||
|
Ir al registro de profesor
|
||||||
|
</b-button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -69,25 +75,23 @@ export default {
|
|||||||
numeroCuenta: this.numeroCuenta,
|
numeroCuenta: this.numeroCuenta,
|
||||||
passwordUser: this.password,
|
passwordUser: this.password,
|
||||||
}
|
}
|
||||||
|
|
||||||
this.updateIsLoading(true)
|
this.updateIsLoading(true)
|
||||||
axios
|
axios
|
||||||
.post(`${process.env.api}/usuario/login`, data)
|
.post(`${process.env.api}/Usuario/login`, data)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
const info = res.data.Usuario
|
const info = res.data.Usuario
|
||||||
|
|
||||||
localStorage.setItem('token', res.data.token)
|
localStorage.setItem('token', res.data.token)
|
||||||
localStorage.setItem('idUsuario', info.idUsuario)
|
localStorage.setItem('idUsuario', info.idUsuario)
|
||||||
localStorage.setItem('nombre', info.nombre)
|
localStorage.setItem('nombre', info.nombre)
|
||||||
localStorage.setItem('numeroCuenta', info.numeroCuenta)
|
localStorage.setItem('generacion', info.generacion)
|
||||||
|
localStorage.setItem('usuario', info.numeroCuenta)
|
||||||
localStorage.setItem('idCarrera', info.idCarrera)
|
localStorage.setItem('idCarrera', info.idCarrera)
|
||||||
localStorage.setItem('carrera', info.carrera)
|
localStorage.setItem('carrera', info.carrera)
|
||||||
|
|
||||||
this.updateIsLoading(false)
|
this.$router.push('/registro')
|
||||||
this.$router.push(`/registro`)
|
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log(err)
|
|
||||||
this.error = 'is-danger'
|
this.error = 'is-danger'
|
||||||
this.updateIsLoading(false)
|
this.updateIsLoading(false)
|
||||||
this.imprimirError(err.response.data)
|
this.imprimirError(err.response.data)
|
||||||
@@ -103,10 +107,24 @@ export default {
|
|||||||
if (this.error) this.error = ''
|
if (this.error) this.error = ''
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
colorSize() {
|
||||||
|
return { fontColor: this.error == 'is-danger' }
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
.font {
|
||||||
|
font-size: 12px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fontColor {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
.full-h {
|
.full-h {
|
||||||
height: 75vh;
|
height: 75vh;
|
||||||
}
|
}
|
||||||
@@ -115,3 +133,133 @@ form {
|
|||||||
width: 30rem;
|
width: 30rem;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="full-h is-flex is-justify-content-center is-align-items-center">
|
||||||
|
<form class="box">
|
||||||
|
<div class="has-text-centered">
|
||||||
|
<div class="titulo">
|
||||||
|
<h2 class="is-size-4">Sistema de Inscripciones a CEDETEC</h2>
|
||||||
|
<h2 class="is-size-4">para Profesores</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<b-field label="Número de trabajador" :type="error">
|
||||||
|
<b-input
|
||||||
|
type="text"
|
||||||
|
placeholder="Ingresa tu número de trabajador"
|
||||||
|
@keyup.enter.native="buscarProfesor()"
|
||||||
|
v-model="numeroTrabajador"
|
||||||
|
/>
|
||||||
|
</b-field>
|
||||||
|
|
||||||
|
<div class="has-text-centered">
|
||||||
|
<b-button class="is-primary "
|
||||||
|
@click="buscarProfesor"
|
||||||
|
type="is-primary"
|
||||||
|
:disabled="!numeroTrabajador"
|
||||||
|
>
|
||||||
|
Buscar
|
||||||
|
</b-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<p v-if="mensaje" class="has-text-centered mt-4">{{ mensaje }}</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script >
|
||||||
|
import axios from 'axios'
|
||||||
|
import { errorBuscar, profesorYaInscrito } from '~/utils/alerts'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
imprimirMensaje: { type: Function, required: true },
|
||||||
|
imprimirWarning: { type: Function, required: true },
|
||||||
|
imprimirError: { type: Function, required: true },
|
||||||
|
updateIsLoading: { type: Function, required: false, default: () => {} },
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
numeroTrabajador: '',
|
||||||
|
profesor: null,
|
||||||
|
mensaje: '',
|
||||||
|
error: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
buscarProfesor() {
|
||||||
|
this.updateIsLoading(true)
|
||||||
|
axios
|
||||||
|
.get(`${process.env.VUE_APP_API}/api/profesores/${this.numeroTrabajador}`)
|
||||||
|
.then((res) => {
|
||||||
|
this.profesor = res.data;
|
||||||
|
const { id_cuenta, nombre } = res.data;
|
||||||
|
|
||||||
|
if (nombre && id_cuenta ) {
|
||||||
|
// Guardar en localStorage
|
||||||
|
localStorage.setItem('profesorId', id_cuenta);
|
||||||
|
localStorage.setItem('profesorNombre', nombre);
|
||||||
|
|
||||||
|
this.$router.replace({
|
||||||
|
path: '/profesor/bienvenida'
|
||||||
|
//query: { nombre, idUsuario, numeroCuenta }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//Borrar
|
||||||
|
/*
|
||||||
|
this.profesor = null
|
||||||
|
this.error = 'is-danger'
|
||||||
|
this.mensaje = 'Profesor no encontrado o sin nombre registrado.'
|
||||||
|
this.imprimirWarning('No se encontró al profesor.')
|
||||||
|
*/
|
||||||
|
errorBuscar();
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
//this.profesor = null
|
||||||
|
//this.error = 'is-danger'
|
||||||
|
//this.mensaje = 'Solo está permitido el acceso a profesores inscritos en la universidad.'
|
||||||
|
//this.imprimirWarning(err.response?.data?.message || 'Error al buscar')
|
||||||
|
//errorBuscar();
|
||||||
|
const status = err.response?.status;
|
||||||
|
|
||||||
|
if (status === 409) {
|
||||||
|
profesorYaInscrito();
|
||||||
|
} else {
|
||||||
|
errorBuscar();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.updateIsLoading(false)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.full-h {
|
||||||
|
height: 75vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-primary {
|
||||||
|
background-color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
.titulo {
|
||||||
|
margin-bottom: 25px;
|
||||||
|
color: goldenrod;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
width: 30rem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,148 @@
|
|||||||
|
<template>
|
||||||
|
<div class="box">
|
||||||
|
<p class="pb-2"><b>Número de cuenta: </b> {{ numeroCuenta }}</p>
|
||||||
|
|
||||||
|
<b-field label="Ticket" horizontal grouped>
|
||||||
|
<b-input v-model="folioA" :disabled="switchFolio" maxlength="6"></b-input>
|
||||||
|
<p class="control">
|
||||||
|
<b-button
|
||||||
|
type="is-primary"
|
||||||
|
icon-left="pencil"
|
||||||
|
@click="habilitar('folio')"
|
||||||
|
>
|
||||||
|
</b-button>
|
||||||
|
</p>
|
||||||
|
</b-field>
|
||||||
|
|
||||||
|
<b-field label="Cantidad" horizontal>
|
||||||
|
<b-input class="pb-5 px-4" expanded v-model="montoA" :disabled="switchMonto" type="number" step="0.01"/>
|
||||||
|
<p class="control">
|
||||||
|
<b-button
|
||||||
|
type="is-primary"
|
||||||
|
icon-left="pencil"
|
||||||
|
@click="habilitar('monto')"
|
||||||
|
>
|
||||||
|
</b-button>
|
||||||
|
</p>
|
||||||
|
</b-field>
|
||||||
|
|
||||||
|
<b-field label="Fecha del ticket" horizontal>
|
||||||
|
<b-datepicker
|
||||||
|
v-model="fechaTicketA"
|
||||||
|
:disabled="switchFecha"
|
||||||
|
:max-date="maxDate"
|
||||||
|
icon="calendar-today"
|
||||||
|
>
|
||||||
|
</b-datepicker>
|
||||||
|
<p class="control">
|
||||||
|
<b-button
|
||||||
|
type="is-primary"
|
||||||
|
icon-left="pencil"
|
||||||
|
@click="habilitar('fecha')"
|
||||||
|
>
|
||||||
|
</b-button>
|
||||||
|
</p>
|
||||||
|
</b-field>
|
||||||
|
|
||||||
|
<div class="has-text-centered pb-2">
|
||||||
|
<b-button
|
||||||
|
type="is-success"
|
||||||
|
@click="
|
||||||
|
imprimirWarning(
|
||||||
|
'¿Estas seguro de querer actualizar esta información?',
|
||||||
|
actualizarTicket
|
||||||
|
)
|
||||||
|
"
|
||||||
|
>Actualizar datos</b-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import axios from 'axios'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
imprimirMensaje: { type: Function, required: true },
|
||||||
|
imprimirError: { type: Function, required: true },
|
||||||
|
imprimirWarning: { type: Function, required: true },
|
||||||
|
updateIsLoading: { type: Function, require: true },
|
||||||
|
folio: { type: String, required: true },
|
||||||
|
monto: { type: String, required: true },
|
||||||
|
token: { type: Object, required: true },
|
||||||
|
fechaTicket: { type: Date, required: true },
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
numeroCuenta: localStorage.getItem('noCuenta'),
|
||||||
|
|
||||||
|
switchFolio: true,
|
||||||
|
switchMonto: true,
|
||||||
|
switchFecha: true,
|
||||||
|
|
||||||
|
folioA: '',
|
||||||
|
montoA: '',
|
||||||
|
fechaTicketA: null,
|
||||||
|
maxDate: new Date(),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
habilitar(tipo) {
|
||||||
|
tipo == 'folio' && this.switchFolio == true
|
||||||
|
? (this.switchFolio = false)
|
||||||
|
: (this.switchFolio = true)
|
||||||
|
|
||||||
|
tipo == 'monto' && this.switchMonto == true
|
||||||
|
? (this.switchMonto = false)
|
||||||
|
: (this.switchMonto = true)
|
||||||
|
|
||||||
|
tipo == 'fecha' && this.switchFecha == true
|
||||||
|
? (this.switchFecha = false)
|
||||||
|
: (this.switchFecha = true)
|
||||||
|
},
|
||||||
|
actualizarTicket() {
|
||||||
|
const data = {
|
||||||
|
idInscripcion: Number(localStorage.getItem('inscripcion')),
|
||||||
|
folio: this.folioA,
|
||||||
|
monto: this.montoA,
|
||||||
|
fechaTicket: this.fechaTicketA,
|
||||||
|
}
|
||||||
|
|
||||||
|
this.updateIsLoading(true)
|
||||||
|
axios
|
||||||
|
.put(`${process.env.api}/admin/actualizar_ticket`, data, this.token)
|
||||||
|
.then((res) => {
|
||||||
|
this.updateIsLoading(false)
|
||||||
|
this.imprimirMensaje(res.data.message)
|
||||||
|
this.bloquearBotones()
|
||||||
|
localStorage.setItem('monto', this.montoA)
|
||||||
|
localStorage.setItem('folio', this.folioA)
|
||||||
|
localStorage.setItem('fechaTicket', this.fechaTicketA)
|
||||||
|
this.$emit('actualizarFolio')
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.updateIsLoading(false)
|
||||||
|
this.imprimirError(err.response.data)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
bloquearBotones() {
|
||||||
|
this.switchFolio = true
|
||||||
|
this.switchMonto = true
|
||||||
|
this.switchFecha = true
|
||||||
|
},
|
||||||
|
diaMin(today) {
|
||||||
|
return new Date(
|
||||||
|
today.getFullYear(),
|
||||||
|
today.getMonth(),
|
||||||
|
today.getDate() - today.getDate() + 1
|
||||||
|
)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
;(this.folioA = this.folio),
|
||||||
|
(this.montoA = this.monto),
|
||||||
|
(this.fechaTicketA = this.fechaTicket)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div class="columns">
|
|
||||||
<b-field class="column" label="Apertura de inscripciones">
|
|
||||||
<b-datepicker
|
|
||||||
placeholder="Type or select a date..."
|
|
||||||
icon="calendar-today"
|
|
||||||
editable
|
|
||||||
>
|
|
||||||
</b-datepicker>
|
|
||||||
</b-field>
|
|
||||||
|
|
||||||
<b-field class="column" label="Termino de inscripciones">
|
|
||||||
<b-datepicker
|
|
||||||
placeholder="Type or select a date..."
|
|
||||||
icon="calendar-today"
|
|
||||||
editable
|
|
||||||
>
|
|
||||||
</b-datepicker>
|
|
||||||
</b-field>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="has-text-centered">
|
|
||||||
<b-button class="is-success"> Asignar Fechas </b-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script></script>
|
|
||||||
|
|
||||||
<style scoped></style>
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<template>
|
||||||
|
<div class="block pt-5" v-if="motivo">
|
||||||
|
<div class="has-text-centered pb-4">
|
||||||
|
<b-tag type="is-danger" size="is-medium">Ticket declinado</b-tag>
|
||||||
|
</div>
|
||||||
|
<p class="box"><b>Motivo: </b>{{ motivo }}</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import axios from 'axios'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
folio: { type: String, required: true },
|
||||||
|
token: { type: Object, required: true },
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
motivo: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
traerMotivo() {
|
||||||
|
axios
|
||||||
|
.get(`${process.env.api}/admin/motivo?folio=${this.folio}`, this.token)
|
||||||
|
.then((res) => {
|
||||||
|
this.motivo = res.data.motivo
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err.response.data)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.traerMotivo()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -51,7 +51,6 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
login() {
|
login() {
|
||||||
if (this.usuario && this.password && !this.error) {
|
if (this.usuario && this.password && !this.error) {
|
||||||
console.log(typeof this.usuario)
|
|
||||||
const data = {
|
const data = {
|
||||||
usuario: this.usuario,
|
usuario: this.usuario,
|
||||||
password: this.password,
|
password: this.password,
|
||||||
@@ -61,13 +60,12 @@ export default {
|
|||||||
axios
|
axios
|
||||||
.post(`${process.env.api}/admin/login`, data)
|
.post(`${process.env.api}/admin/login`, data)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
const info = res.data
|
localStorage.setItem('usuario', res.data.Usuario.usuario)
|
||||||
localStorage.setItem('token', res.data.token)
|
localStorage.setItem('token', res.data.token)
|
||||||
this.updateIsLoading(false)
|
this.updateIsLoading(false)
|
||||||
this.$router.push(`/${'admin'}`)
|
this.$router.push(`/${'admin'}`)
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log(err)
|
|
||||||
this.error = 'is-danger'
|
this.error = 'is-danger'
|
||||||
this.updateIsLoading(false)
|
this.updateIsLoading(false)
|
||||||
this.imprimirError(err.response.data)
|
this.imprimirError(err.response.data)
|
||||||
|
|||||||
@@ -0,0 +1,79 @@
|
|||||||
|
<template>
|
||||||
|
<form class="modal-card">
|
||||||
|
<header class="modal-card-head">
|
||||||
|
<h5 class="modal-card-title">
|
||||||
|
¿Estás seguro de querer declinar este ticket?
|
||||||
|
</h5>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="modal-card-body">
|
||||||
|
<b-field label="Motivo por el cual vas a declinar el ticket">
|
||||||
|
<b-input type="textarea" maxlength="100" v-model="motivo" expanded />
|
||||||
|
</b-field>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer
|
||||||
|
class="modal-card-foot"
|
||||||
|
style="display: flex; justify-content: space-between"
|
||||||
|
>
|
||||||
|
<b-button type="is-danger" @click="$emit('close')"> Cancelar </b-button>
|
||||||
|
|
||||||
|
<b-button
|
||||||
|
type="is-success"
|
||||||
|
@click="declinarInscripcion(), $emit('close')"
|
||||||
|
:disabled="!motivo"
|
||||||
|
>
|
||||||
|
Enviar
|
||||||
|
</b-button>
|
||||||
|
</footer>
|
||||||
|
</form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import axios from 'axios'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
token: { type: Object, required: true },
|
||||||
|
folio: { type: String, required: true },
|
||||||
|
numeroCuenta: { type: String, required: true },
|
||||||
|
fechaTicket: { type: Date, required: true },
|
||||||
|
idArea: { type: Number, required: true },
|
||||||
|
monto: { type: Number, required: true },
|
||||||
|
imprimirError: { type: Function, required: true },
|
||||||
|
imprimirMensaje: { type: Function, required: true },
|
||||||
|
updateIsLoading: { type: Function, required: true },
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
motivo: '',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
declinarInscripcion() {
|
||||||
|
const data = {
|
||||||
|
numeroCuenta: this.numeroCuenta,
|
||||||
|
idArea: this.idArea,
|
||||||
|
folio: this.folio,
|
||||||
|
motivo: this.motivo,
|
||||||
|
validacion: 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
this.updateIsLoading(true)
|
||||||
|
axios
|
||||||
|
.put(`${process.env.api}/admin/validar`, data, this.token)
|
||||||
|
.then((res) => {
|
||||||
|
this.updateIsLoading(false)
|
||||||
|
this.imprimirMensaje(res.data.message)
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.updateIsLoading(false)
|
||||||
|
this.imprimirError(err.response.data)
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.$router.go(-1)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
<b-field class="column" label="Fecha inicio">
|
<b-field class="column" label="Fecha inicio">
|
||||||
<b-datepicker
|
<b-datepicker
|
||||||
v-model="inicio"
|
v-model="inicio"
|
||||||
:min-date="minDate1"
|
:min-date="minDate"
|
||||||
:max-date="maxDate"
|
:max-date="maxDate"
|
||||||
icon="calendar-today"
|
icon="calendar-today"
|
||||||
rounded
|
rounded
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
<b-field class="column" label="Fecha fin">
|
<b-field class="column" label="Fecha fin">
|
||||||
<b-datepicker
|
<b-datepicker
|
||||||
v-model="fin"
|
v-model="fin"
|
||||||
:min-date="minDate2"
|
:min-date="inicio"
|
||||||
:max-date="maxDate"
|
:max-date="maxDate"
|
||||||
icon="calendar-today"
|
icon="calendar-today"
|
||||||
rounded
|
rounded
|
||||||
@@ -36,15 +36,13 @@ import fileDownload from 'js-file-download'
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
updateIsLoading: { type: Function, require: true },
|
updateIsLoading: { type: Function, required: true },
|
||||||
tipo: { type: String, require: true },
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
token: '',
|
token: '',
|
||||||
|
|
||||||
minDate1: new Date('2022-01-01'),
|
minDate: new Date('2022-01-01'),
|
||||||
minDate2: new Date(),
|
|
||||||
maxDate: new Date(),
|
maxDate: new Date(),
|
||||||
|
|
||||||
inicio: new Date(),
|
inicio: new Date(),
|
||||||
@@ -57,17 +55,15 @@ export default {
|
|||||||
this.updateIsLoading(true)
|
this.updateIsLoading(true)
|
||||||
axios
|
axios
|
||||||
.get(
|
.get(
|
||||||
`${process.env.api}/admin/reporte?inicio=${this.inicio}&fin=${this.fin}&tipo=${this.tipo}`,
|
`${process.env.api}/admin/reporte?inicio=${this.inicio}&fin=${this.fin}`,
|
||||||
this.token
|
this.token
|
||||||
)
|
)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
fileDownload(res.data, `reporte.csv`)
|
fileDownload(res.data, `inscripcionesCEDETEC.csv`)
|
||||||
this.updateIsLoading(false)
|
this.updateIsLoading(false)
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log(err)
|
|
||||||
this.updateIsLoading(false)
|
this.updateIsLoading(false)
|
||||||
// this.imprimirError(err.response.data)
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
{{ props.row.Usuario.numeroCuenta }}
|
{{ props.row.Usuario.numeroCuenta }}
|
||||||
</b-table-column>
|
</b-table-column>
|
||||||
|
|
||||||
<b-table-column field="folio" label="Folio" centered v-slot="props"
|
<b-table-column field="ticket" label="Ticket" centered v-slot="props"
|
||||||
>{{ props.row.folio }}
|
>{{ props.row.folio }}
|
||||||
</b-table-column>
|
</b-table-column>
|
||||||
|
|
||||||
@@ -48,22 +48,56 @@
|
|||||||
</b-table-column>
|
</b-table-column>
|
||||||
|
|
||||||
<b-table-column
|
<b-table-column
|
||||||
field="confirmacion"
|
field="Fecha"
|
||||||
label="Confirmación"
|
label="Fecha y hora"
|
||||||
|
centered
|
||||||
|
v-slot="props"
|
||||||
|
>{{ hora(props.row.fechaInscripcion) }}</b-table-column
|
||||||
|
>
|
||||||
|
|
||||||
|
<b-table-column
|
||||||
|
field="inscripcion"
|
||||||
|
label="Inscripción"
|
||||||
centered
|
centered
|
||||||
v-slot="props"
|
v-slot="props"
|
||||||
>
|
>
|
||||||
<b-tag :type="types(props.row.confirmacion)">
|
<b-button
|
||||||
{{ props.row.confirmacion }}
|
type="is-success"
|
||||||
</b-tag>
|
v-if="!props.row.folio && !props.row.monto && !props.row.fechaTicket"
|
||||||
|
@click="
|
||||||
|
usuario(
|
||||||
|
props.row.Usuario.numeroCuenta,
|
||||||
|
props.row.Usuario.idUsuario,
|
||||||
|
props.row.idArea
|
||||||
|
),
|
||||||
|
imprimirWarning(
|
||||||
|
'¿Estas seguro de querer validar esta inscripción ?',
|
||||||
|
validarSinTicket
|
||||||
|
)
|
||||||
|
"
|
||||||
|
>Validar</b-button
|
||||||
|
>
|
||||||
</b-table-column>
|
</b-table-column>
|
||||||
|
|
||||||
<b-table-column field="cantidad" label="Cantidad" centered v-slot="props">
|
<b-table-column centered v-slot="props">
|
||||||
{{ props.row.monto }}
|
<b-button
|
||||||
|
type="is-danger"
|
||||||
|
@click="
|
||||||
|
inscripcion(props.row.idInscripcion),
|
||||||
|
imprimirWarning(
|
||||||
|
'¿Estas seguro de querer cancelar esta inscripción ?',
|
||||||
|
cancelarInscripcion
|
||||||
|
)
|
||||||
|
"
|
||||||
|
>Cancelar</b-button
|
||||||
|
>
|
||||||
</b-table-column>
|
</b-table-column>
|
||||||
|
|
||||||
<b-table-column field="ticket" label="Ticket" centered v-slot="props">
|
<b-table-column centered v-slot="props">
|
||||||
<b-button type="is-info" @click="verTicket(props.row)"
|
<b-button
|
||||||
|
type="is-info"
|
||||||
|
v-if="props.row.folio"
|
||||||
|
@click="verTicket(props.row)"
|
||||||
>Ver ticket</b-button
|
>Ver ticket</b-button
|
||||||
>
|
>
|
||||||
</b-table-column>
|
</b-table-column>
|
||||||
@@ -73,8 +107,15 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
props: {
|
||||||
|
updateIsLoading: { type: Function, required: true },
|
||||||
|
imprimirError: { type: Function, required: true },
|
||||||
|
imprimirMensaje: { type: Function, required: true },
|
||||||
|
imprimirWarning: { type: Function, required: true },
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
token: '',
|
token: '',
|
||||||
@@ -82,40 +123,87 @@ export default {
|
|||||||
inscripciones: [],
|
inscripciones: [],
|
||||||
isPaginated: true,
|
isPaginated: true,
|
||||||
currentPage: 1,
|
currentPage: 1,
|
||||||
perPage: 5,
|
perPage: 10,
|
||||||
|
|
||||||
|
data: {},
|
||||||
|
dataIns: {},
|
||||||
validacion: '2',
|
validacion: '2',
|
||||||
numeroCuenta: '',
|
numeroCuenta: '',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
types(value) {
|
|
||||||
return value === true ? 'is-success' : 'is-danger'
|
|
||||||
},
|
|
||||||
todasInscripciones() {
|
todasInscripciones() {
|
||||||
|
this.updateIsLoading(true)
|
||||||
axios
|
axios
|
||||||
.get(
|
.get(
|
||||||
`${process.env.api}/admin/todas_inscripciones?validacion=${this.validacion}&numeroCuenta=${this.numeroCuenta}`,
|
`${process.env.api}/admin/todas_inscripciones?validacion=${this.validacion}&numeroCuenta=${this.numeroCuenta}`,
|
||||||
this.token
|
this.token
|
||||||
)
|
)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
this.updateIsLoading(false)
|
||||||
this.inscripciones = res.data
|
this.inscripciones = res.data
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log(err)
|
this.updateIsLoading(false)
|
||||||
// this.imprimirError(err.response.data)
|
this.imprimirError(err.response.data)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
verTicket(value) {
|
verTicket(value) {
|
||||||
console.log(value)
|
this.$router.push('/admin/ticket')
|
||||||
this.$router.push({
|
localStorage.setItem('idArea', value.idArea)
|
||||||
path: '/admin/ticket/',
|
localStorage.setItem('monto', value.monto)
|
||||||
query: {
|
localStorage.setItem('folio', value.folio)
|
||||||
folio: value.folio,
|
localStorage.setItem('fechaTicket', value.fechaTicket)
|
||||||
monto: value.monto,
|
localStorage.setItem('noCuenta', value.Usuario.numeroCuenta)
|
||||||
fecha: value.fechaTicket,
|
localStorage.setItem('inscripcion', value.idInscripcion)
|
||||||
},
|
localStorage.setItem('validacion', this.validacion)
|
||||||
})
|
},
|
||||||
|
usuario(noCuenta, usuario, idArea) {
|
||||||
|
this.data.numeroCuenta = noCuenta
|
||||||
|
this.data.idUsuario = usuario
|
||||||
|
this.data.idArea = idArea
|
||||||
|
},
|
||||||
|
validarSinTicket() {
|
||||||
|
this.updateIsLoading(true)
|
||||||
|
axios
|
||||||
|
.put(
|
||||||
|
`${process.env.api}/admin/validar_sin_ticket`,
|
||||||
|
this.data,
|
||||||
|
this.token
|
||||||
|
)
|
||||||
|
.then((res) => {
|
||||||
|
this.updateIsLoading(false)
|
||||||
|
this.imprimirMensaje(res.data.message)
|
||||||
|
this.todasInscripciones()
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.updateIsLoading(false)
|
||||||
|
this.imprimirError(err.response.data)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
inscripcion(inscripcion) {
|
||||||
|
this.dataIns.idInscripcion = inscripcion
|
||||||
|
},
|
||||||
|
cancelarInscripcion() {
|
||||||
|
this.updateIsLoading(true)
|
||||||
|
axios
|
||||||
|
.put(
|
||||||
|
`${process.env.api}/admin/cancelar_inscripcion`,
|
||||||
|
this.dataIns,
|
||||||
|
this.token
|
||||||
|
)
|
||||||
|
.then((res) => {
|
||||||
|
this.imprimirMensaje(res.data.message)
|
||||||
|
this.updateIsLoading(false)
|
||||||
|
this.todasInscripciones()
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.imprimirError(err.response.data)
|
||||||
|
this.updateIsLoading(false)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
hora(value) {
|
||||||
|
return moment(value).format('LLL')
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
|||||||
+98
-44
@@ -1,46 +1,47 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="columns">
|
<div class="columns px-2">
|
||||||
<div class="column py-5">
|
<div class="column is-one-third py-5">
|
||||||
<b-image
|
<figure class="containerImg">
|
||||||
class="img"
|
<b-image class="zoom" :src="urlTicket" alt="Imagen del ticket">
|
||||||
:src="this.urlTicket"
|
</b-image>
|
||||||
alt="Imagen del ticket"
|
</figure>
|
||||||
></b-image>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="column is-1"></div>
|
||||||
|
|
||||||
<div class="column mt-6">
|
<div class="column mt-6">
|
||||||
<p>
|
<p>
|
||||||
Administrador por favor revisa que todos los datos sean correctos, en
|
Administrador por favor revisa que todos los datos sean correctos, en
|
||||||
caso de ser así valida el ticket
|
caso de ser así valida el ticket y la inscripción.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="box">
|
<IsCancelacion :folio="folio" :token="token" v-if="validacion === 0" />
|
||||||
<p><b>Folio:</b> {{ $route.query.folio }}</p>
|
|
||||||
<p><b>Cantidad: </b> {{ $route.query.monto }}</p>
|
<DatosTicket
|
||||||
<p><b>Fecha del ticket:</b> {{ fecha($route.query.fecha) }}</p>
|
:imprimirMensaje="imprimirMensaje"
|
||||||
</div>
|
:imprimirError="imprimirError"
|
||||||
|
:imprimirWarning="imprimirWarning"
|
||||||
|
:updateIsLoading="updateIsLoading"
|
||||||
|
:folio="folio"
|
||||||
|
:monto="monto"
|
||||||
|
:fechaTicket="fechaTicket"
|
||||||
|
:token="token"
|
||||||
|
@actualizarFolio="actualizarFolio"
|
||||||
|
/>
|
||||||
|
|
||||||
<div class="has-text-centered pb-5">
|
<div class="has-text-centered pb-5">
|
||||||
<b-button
|
<b-button
|
||||||
type="is-success"
|
type="is-success"
|
||||||
@click="
|
@click="
|
||||||
validacion(1),
|
imprimirWarning(
|
||||||
imprimirWarning(
|
'¿ Estas seguro que los datos son correctos y quieres validar este ticket ?',
|
||||||
'¿ Estas seguro que los datos son correctos y quieres validar este ticekt ?',
|
validar
|
||||||
validar
|
)
|
||||||
)
|
|
||||||
"
|
"
|
||||||
>Validar</b-button
|
>Validar</b-button
|
||||||
>
|
>
|
||||||
<b-button
|
<b-button label="Declinar" type="is-danger" @click="declinarTicket()" />
|
||||||
type="is-danger"
|
|
||||||
@click="
|
|
||||||
validacion(0),
|
|
||||||
imprimirWarning(
|
|
||||||
'¿ Estas seguro que los datos son incorrectos y quieres declinar el ticket ?',
|
|
||||||
validar
|
|
||||||
)
|
|
||||||
"
|
|
||||||
>Denegar</b-button
|
|
||||||
>
|
|
||||||
<b-button type="is-info" @click="regresar()">Regresar</b-button>
|
<b-button type="is-info" @click="regresar()">Regresar</b-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -49,41 +50,58 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import moment from 'moment'
|
import DatosTicket from './datosTicket.vue'
|
||||||
|
import ModalDeclinar from './modalDeclinar.vue'
|
||||||
|
import IsCancelacion from './isCancelacion.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
components: {
|
||||||
|
DatosTicket,
|
||||||
|
ModalDeclinar,
|
||||||
|
IsCancelacion,
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
imprimirMensaje: { type: Function, require: true },
|
imprimirMensaje: { type: Function, required: true },
|
||||||
imprimirError: { type: Function, require: true },
|
imprimirError: { type: Function, required: true },
|
||||||
imprimirWarning: { type: Function, required: true },
|
imprimirWarning: { type: Function, required: true },
|
||||||
updateIsLoading: { type: Function, require: true },
|
updateIsLoading: { type: Function, required: true },
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
token: '',
|
token: '',
|
||||||
|
|
||||||
|
numeroCuenta: localStorage.getItem('noCuenta'),
|
||||||
|
fechaTicket: new Date(localStorage.getItem('fechaTicket')),
|
||||||
|
folio: localStorage.getItem('folio'),
|
||||||
|
monto: localStorage.getItem('monto'),
|
||||||
|
|
||||||
|
isFullPage: true,
|
||||||
urlTicket: '',
|
urlTicket: '',
|
||||||
validado: null,
|
validacion: localStorage.getItem('validacion'),
|
||||||
|
|
||||||
|
zoom: 1,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
traerTicket() {
|
traerTicket() {
|
||||||
|
this.updateIsLoading(true)
|
||||||
axios
|
axios
|
||||||
.get(`${process.env.api}/admin/ticket?folio=${this.$route.query.folio}`)
|
.get(`${process.env.api}/admin/ticket?folio=${this.folio}`)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
this.updateIsLoading(false)
|
||||||
this.urlTicket = res.config.url
|
this.urlTicket = res.config.url
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
this.updateIsLoading(false)
|
||||||
this.imprimirError(err.response.data)
|
this.imprimirError(err.response.data)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
validacion(value) {
|
|
||||||
this.validado = value
|
|
||||||
},
|
|
||||||
validar() {
|
validar() {
|
||||||
const data = {
|
const data = {
|
||||||
folio: this.$route.query.folio,
|
numeroCuenta: localStorage.getItem('noCuenta'),
|
||||||
validacion: this.validado,
|
folio: this.folio,
|
||||||
|
idArea: localStorage.getItem('idArea'),
|
||||||
|
validacion: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
this.updateIsLoading(true)
|
this.updateIsLoading(true)
|
||||||
@@ -94,7 +112,6 @@ export default {
|
|||||||
this.imprimirMensaje(res.data.message)
|
this.imprimirMensaje(res.data.message)
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log(err)
|
|
||||||
this.updateIsLoading(false)
|
this.updateIsLoading(false)
|
||||||
this.imprimirError(err.response.data)
|
this.imprimirError(err.response.data)
|
||||||
})
|
})
|
||||||
@@ -102,11 +119,33 @@ export default {
|
|||||||
this.$router.go(-1)
|
this.$router.go(-1)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
fecha(fecha) {
|
declinarTicket() {
|
||||||
return moment(fecha).format('L')
|
const modalProps = {
|
||||||
|
token: this.token,
|
||||||
|
folio: this.folio,
|
||||||
|
numeroCuenta: this.numeroCuenta,
|
||||||
|
fechaTicket: this.fechaTicket,
|
||||||
|
monto: Number(localStorage.getItem('monto')),
|
||||||
|
idArea: Number(localStorage.getItem('idArea')),
|
||||||
|
imprimirError: this.imprimirError,
|
||||||
|
imprimirMensaje: this.imprimirMensaje,
|
||||||
|
updateIsLoading: this.updateIsLoading,
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$buefy.modal.open({
|
||||||
|
props: modalProps,
|
||||||
|
parent: this,
|
||||||
|
component: ModalDeclinar,
|
||||||
|
hasModalCard: true,
|
||||||
|
customClass: 'custom-class custom-class-2',
|
||||||
|
trapFocus: true,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
actualizarFolio() {
|
||||||
|
this.folio = localStorage.getItem('folio')
|
||||||
},
|
},
|
||||||
regresar() {
|
regresar() {
|
||||||
this.$router.go(-1)
|
this.$router.push('/admin')
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -123,4 +162,19 @@ export default {
|
|||||||
width: 350px;
|
width: 350px;
|
||||||
padding-bottom: 470px;
|
padding-bottom: 470px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.zoom {
|
||||||
|
transition: transform 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.zoom:hover {
|
||||||
|
transform: scale(2);
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
height: 300px;
|
||||||
|
margin-top: 55%;
|
||||||
|
margin-bottom: 55%;
|
||||||
|
margin-left: 10%;
|
||||||
|
margin-right: 10%;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<b-table :data="data" :columns="columns"></b-table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: { data: { type: Array, required: true } },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
columns: [
|
||||||
|
{ field: 'color', label: 'Color' },
|
||||||
|
{ field: 'tamaño', label: 'Tamaño' },
|
||||||
|
{ field: 'costo', label: 'Costo' },
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<header>
|
<header v-if="!isInIframe">
|
||||||
<div class="container py-3">
|
<div class="container py-3">
|
||||||
<div
|
<div
|
||||||
class="
|
class="
|
||||||
@@ -31,7 +31,17 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {}
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isInIframe: false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// Detecta si se está mostrando dentro de un iframe
|
||||||
|
this.isInIframe = window.self !== window.top;
|
||||||
|
},
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<section>
|
<section>
|
||||||
<div class="container is-flex is-justify-content-flex-end">
|
<div
|
||||||
<!-- <div
|
class="container is-flex is-justify-content-space-between is-align-items-center"
|
||||||
class="
|
|
||||||
container
|
|
||||||
is-flex is-justify-content-space-between is-align-items-center
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<h2 class="m-2 has-text-white">{{ usuario }}</h2> -->
|
<h2 class="m-2 has-text-white">{{ usuario }}</h2>
|
||||||
|
|
||||||
<b-button
|
<b-button
|
||||||
type="is-danger"
|
type="is-danger"
|
||||||
@@ -23,19 +19,15 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
// data() {
|
data() {
|
||||||
// return { usuario: localStorage.getItem('usuario') }
|
return { usuario: localStorage.getItem('usuario') }
|
||||||
// },
|
},
|
||||||
methods: {
|
methods: {
|
||||||
cerrarSesion() {
|
cerrarSesion() {
|
||||||
localStorage.clear()
|
localStorage.clear()
|
||||||
this.$router.replace('/')
|
this.$router.replace('/')
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
created() {
|
|
||||||
// if (!localStorage.getItem(''))
|
|
||||||
// this.cerrarSesion()
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<!-- <p class="subtitle is-4"><b>Seleccione el área.</b></p>
|
|
||||||
|
|
||||||
<div class="block">
|
|
||||||
<b-radio v-model="idArea" v-if="area1" native-value="1"
|
|
||||||
><b-icon icon="microsoft-windows" size="is-small"></b-icon>
|
|
||||||
Windows</b-radio
|
|
||||||
>
|
|
||||||
<b-radio v-model="idArea" v-if="areaMac && area2" native-value="2"
|
|
||||||
><b-icon icon="apple" size="is-small"></b-icon> Macintosh</b-radio
|
|
||||||
>
|
|
||||||
<b-radio v-model="idArea" v-if="area3" native-value="3"
|
|
||||||
><b-icon icon="linux" size="is-small"></b-icon> Linux</b-radio
|
|
||||||
>
|
|
||||||
<b-radio v-model="idArea" v-if="area4" native-value="4"
|
|
||||||
><b-icon icon="laptop" size="is-small"></b-icon> Mesa para Lap</b-radio
|
|
||||||
>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<p class="subtitle is-4">
|
<p class="subtitle is-4">
|
||||||
<b
|
<b
|
||||||
>Captura la siguiente información tal cual se muestra en tu ticket de
|
>Captura la siguiente información tal cual se muestra en tu ticket de
|
||||||
@@ -27,18 +9,41 @@
|
|||||||
|
|
||||||
<p class="subtitle is-5">
|
<p class="subtitle is-5">
|
||||||
Recuerda que la aportación es voluntaria y el área destinada debe ser
|
Recuerda que la aportación es voluntaria y el área destinada debe ser
|
||||||
CEDETEC
|
CEDETEC.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="block">
|
||||||
|
<b-radio v-model="idArea" v-if="area1" native-value="1"
|
||||||
|
><b-icon icon="microsoft-windows" size="is-small"></b-icon>
|
||||||
|
Windows</b-radio
|
||||||
|
>
|
||||||
|
<b-radio v-model="idArea" v-if="areaMac && area2" native-value="2"
|
||||||
|
><b-icon icon="apple" size="is-small"></b-icon> Mac</b-radio
|
||||||
|
>
|
||||||
|
<b-radio v-model="idArea" v-if="area3" native-value="3"
|
||||||
|
><b-icon icon="linux" size="is-small"></b-icon> Linux</b-radio
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="pb-5">
|
||||||
|
Por favor captura los siguientes datos que se encuentran en tu ticket que
|
||||||
|
se te entregó en cajas.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
|
<b-image
|
||||||
|
class="column mx-2"
|
||||||
|
:src="require('@/assets/ticket.jpeg')"
|
||||||
|
alt="Ticket Acatlán"
|
||||||
|
ratio="16by10"
|
||||||
|
></b-image>
|
||||||
|
|
||||||
<div class="column pr-5">
|
<div class="column pr-5">
|
||||||
<b-field label="Folio">
|
|
||||||
<b-input type="text" maxlength="5" v-model="folio"></b-input>
|
|
||||||
</b-field>
|
|
||||||
<b-field label="Monto">
|
<b-field label="Monto">
|
||||||
<b-input v-model="monto" type="number" maxlength="5"></b-input>
|
<b-input v-model="monto" type="number" step="0.01"></b-input>
|
||||||
</b-field>
|
</b-field>
|
||||||
<b-field label="Fecha">
|
|
||||||
|
<b-field label="Fecha de Ticket">
|
||||||
<b-datepicker
|
<b-datepicker
|
||||||
v-model="fechaTicket"
|
v-model="fechaTicket"
|
||||||
placeholder="Selecciona la fecha"
|
placeholder="Selecciona la fecha"
|
||||||
@@ -49,6 +54,10 @@
|
|||||||
</b-datepicker>
|
</b-datepicker>
|
||||||
</b-field>
|
</b-field>
|
||||||
|
|
||||||
|
<b-field label="Ticket">
|
||||||
|
<b-input maxlength="6" v-model="folio"></b-input>
|
||||||
|
</b-field>
|
||||||
|
|
||||||
<b-field>
|
<b-field>
|
||||||
<b-upload
|
<b-upload
|
||||||
v-model="dropFiles"
|
v-model="dropFiles"
|
||||||
@@ -83,13 +92,6 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<b-image
|
|
||||||
class="column pl-5"
|
|
||||||
:src="require('@/assets/ticket.jpeg')"
|
|
||||||
alt="Ticket Acatlán"
|
|
||||||
ratio="16by9"
|
|
||||||
></b-image>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<b-field>
|
<b-field>
|
||||||
@@ -101,10 +103,10 @@
|
|||||||
|
|
||||||
<div class="has-text-centered pb-5">
|
<div class="has-text-centered pb-5">
|
||||||
<b-button
|
<b-button
|
||||||
:disabled="!(idArea !== '' && terminos)"
|
:disabled="!(idArea !== '' && terminos) || disabledError"
|
||||||
@click="
|
@click="
|
||||||
imprimirWarning(
|
imprimirWarning(
|
||||||
'¿Estas seguro de querer inscribirte a esta área?',
|
'¿Los datos para la inscripción a CEDETEC son correctos?',
|
||||||
inscribir
|
inscribir
|
||||||
)
|
)
|
||||||
"
|
"
|
||||||
@@ -125,47 +127,60 @@ export default {
|
|||||||
imprimirError: { type: Function, required: true },
|
imprimirError: { type: Function, required: true },
|
||||||
updateIsLoading: { type: Function, required: true },
|
updateIsLoading: { type: Function, required: true },
|
||||||
inscripcionesUsuario: { type: Array, required: true },
|
inscripcionesUsuario: { type: Array, required: true },
|
||||||
|
idUsuario: { type: Number, required: true },
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
const today = new Date()
|
const today = new Date()
|
||||||
return {
|
return {
|
||||||
datosUsuario: {},
|
idArea: '',
|
||||||
|
|
||||||
areaMac: false,
|
areaMac: false,
|
||||||
area1: true,
|
area1: true,
|
||||||
area2: true,
|
area2: true,
|
||||||
area3: true,
|
area3: true,
|
||||||
area4: true,
|
|
||||||
|
|
||||||
error: false,
|
error: false,
|
||||||
|
disabledError: false,
|
||||||
|
|
||||||
idArea: '4',
|
|
||||||
folio: '',
|
folio: '',
|
||||||
monto: '',
|
monto: '',
|
||||||
|
fechaTicket: null,
|
||||||
|
dropFiles: [],
|
||||||
terminos: false,
|
terminos: false,
|
||||||
|
|
||||||
fechaTicket: '',
|
idCarrera: '',
|
||||||
dia: 10,
|
usuario: '',
|
||||||
|
generacion: 0,
|
||||||
|
|
||||||
|
token: '',
|
||||||
minDate: this.diaMin(today),
|
minDate: this.diaMin(today),
|
||||||
maxDate: new Date(),
|
maxDate: new Date(),
|
||||||
|
|
||||||
dropFiles: [],
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async inscribir() {
|
async inscribir() {
|
||||||
let formData = new FormData()
|
if (this.dropFiles.length > 0 && !this.folio) {
|
||||||
if (
|
if (!this.fechaTicket) {
|
||||||
this.monto &&
|
return this.imprimirError({
|
||||||
this.monto <= 20 &&
|
message: 'Por favor ingresa la fecha del ticket.',
|
||||||
this.inscripcionesUsuario.length > 0
|
})
|
||||||
)
|
} else {
|
||||||
|
return this.imprimirError({
|
||||||
|
message: 'Por favor ingresa el campo de monto.',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.monto && this.monto < 20 && this.inscripcionesUsuario.length > 0)
|
||||||
this.error = true
|
this.error = true
|
||||||
else this.error = false
|
else this.error = false
|
||||||
|
|
||||||
|
let formData = new FormData()
|
||||||
if (this.error === false) {
|
if (this.error === false) {
|
||||||
formData.append('idUsuario', this.datosUsuario.idUsuario)
|
formData.append('idUsuario', this.idUsuario)
|
||||||
|
formData.append('numeroCuenta', this.usuario)
|
||||||
formData.append('folio', this.folio)
|
formData.append('folio', this.folio)
|
||||||
|
if (this.monto === '') this.monto = 0
|
||||||
formData.append('monto', this.monto)
|
formData.append('monto', this.monto)
|
||||||
formData.append('idArea', this.idArea)
|
formData.append('idArea', this.idArea)
|
||||||
formData.append('fechaTicket', this.fechaTicket)
|
formData.append('fechaTicket', this.fechaTicket)
|
||||||
@@ -176,22 +191,18 @@ export default {
|
|||||||
.post(
|
.post(
|
||||||
`${process.env.api}/usuario/inscripcionUsuario`,
|
`${process.env.api}/usuario/inscripcionUsuario`,
|
||||||
formData,
|
formData,
|
||||||
this.datosUsuario.token
|
this.token
|
||||||
)
|
)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
this.$emit('pedirInscripciones')
|
|
||||||
this.updateIsLoading(false)
|
this.updateIsLoading(false)
|
||||||
|
this.$emit('pedirInscripciones')
|
||||||
this.imprimirMensaje(res.data.message)
|
this.imprimirMensaje(res.data.message)
|
||||||
this.clear()
|
this.clear()
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log(err)
|
|
||||||
this.updateIsLoading(false)
|
this.updateIsLoading(false)
|
||||||
this.imprimirError(err.response.data)
|
this.imprimirError(err.response.data)
|
||||||
})
|
})
|
||||||
.finally((res) => {
|
|
||||||
this.areaPermitida()
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
this.imprimirError({
|
this.imprimirError({
|
||||||
message: 'El monto mínimo para esta inscripción es de $20 pesos.',
|
message: 'El monto mínimo para esta inscripción es de $20 pesos.',
|
||||||
@@ -200,8 +211,8 @@ export default {
|
|||||||
},
|
},
|
||||||
areaPermitida() {
|
areaPermitida() {
|
||||||
if (
|
if (
|
||||||
this.datosUsuario.idCarrera === 11122 ||
|
(this.idCarrera === 20425 || this.idCarrera === 20226) &&
|
||||||
this.datosUsuario.idCarrera === 20226
|
this.generacion < 2022
|
||||||
)
|
)
|
||||||
this.areaMac = true
|
this.areaMac = true
|
||||||
|
|
||||||
@@ -209,7 +220,6 @@ export default {
|
|||||||
if (this.inscripcionesUsuario[i].idArea === 1) this.area1 = false
|
if (this.inscripcionesUsuario[i].idArea === 1) this.area1 = false
|
||||||
if (this.inscripcionesUsuario[i].idArea === 2) this.area2 = false
|
if (this.inscripcionesUsuario[i].idArea === 2) this.area2 = false
|
||||||
if (this.inscripcionesUsuario[i].idArea === 3) this.area3 = false
|
if (this.inscripcionesUsuario[i].idArea === 3) this.area3 = false
|
||||||
if (this.inscripcionesUsuario[i].idArea === 4) this.area4 = false
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
diaMin(today) {
|
diaMin(today) {
|
||||||
@@ -223,20 +233,15 @@ export default {
|
|||||||
this.idArea = ''
|
this.idArea = ''
|
||||||
this.folio = ''
|
this.folio = ''
|
||||||
this.monto = ''
|
this.monto = ''
|
||||||
this.fechaTicket = ''
|
;(this.fechaTicket = null), (this.terminos = false)
|
||||||
this.terminos = false
|
|
||||||
this.dropFiles = []
|
this.dropFiles = []
|
||||||
},
|
},
|
||||||
deleteDropFile(index) {
|
deleteDropFile(index) {
|
||||||
this.dropFiles.splice(index, 1)
|
this.dropFiles.splice(index, 1)
|
||||||
},
|
},
|
||||||
getLocalhostInfo() {
|
getLocalhostInfo() {
|
||||||
this.datosUsuario.idUsuario = Number(localStorage.getItem('idUsuario'))
|
this.idCarrera = Number(localStorage.getItem('idCarrera'))
|
||||||
this.datosUsuario.numeroCuenta = localStorage.getItem('numeroCuenta')
|
this.token = {
|
||||||
this.datosUsuario.nombre = localStorage.getItem('idnombre')
|
|
||||||
this.datosUsuario.carrera = localStorage.getItem('carrera')
|
|
||||||
this.datosUsuario.idCarrera = localStorage.getItem('idCarrera')
|
|
||||||
this.datosUsuario.token = {
|
|
||||||
headers: {
|
headers: {
|
||||||
token: localStorage.getItem('token'),
|
token: localStorage.getItem('token'),
|
||||||
},
|
},
|
||||||
@@ -244,16 +249,25 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
inscripcionesUsuario() {
|
inscripcionesUsuario(value) {
|
||||||
|
if (value.length > 0) this.idArea = ''
|
||||||
this.areaPermitida()
|
this.areaPermitida()
|
||||||
},
|
},
|
||||||
|
|
||||||
dropFiles(value) {
|
dropFiles(value) {
|
||||||
if (value.length > 1) this.deleteDropFile(0)
|
if (value.length > 1) this.deleteDropFile(0)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
fechaTicket(fechaT) {
|
||||||
|
if (fechaT > this.maxDate) this.disabledError = true
|
||||||
|
else this.disabledError = false
|
||||||
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.areaPermitida()
|
this.usuario = localStorage.getItem('usuario')
|
||||||
|
this.generacion = localStorage.getItem('generacion')
|
||||||
this.getLocalhostInfo()
|
this.getLocalhostInfo()
|
||||||
|
this.areaPermitida()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column box mr-5">
|
<div class="column box mx-2">
|
||||||
<p>Cuenta: {{ datosUsuario.numeroCuenta }}</p>
|
<p>Cuenta: {{ datosUsuario.numeroCuenta }}</p>
|
||||||
<p>Nombre: {{ datosUsuario.nombre }}</p>
|
<p>Nombre: {{ datosUsuario.nombre }}</p>
|
||||||
<p>Correo: {{ datosUsuario.numeroCuenta }}@pcpuma.unam.acatlan.mx</p>
|
<p>Correo: {{ datosUsuario.numeroCuenta }}@pcpuma.unam.acatlan.mx</p>
|
||||||
@@ -22,17 +22,8 @@
|
|||||||
{{ area(props.row.idArea) }}
|
{{ area(props.row.idArea) }}
|
||||||
</b-table-column>
|
</b-table-column>
|
||||||
|
|
||||||
<b-table-column
|
<b-table-column field="tiempo" label="Tiempo asignado" centered>
|
||||||
field="tiempo"
|
3600 minutos(s)
|
||||||
label="Tiempo disponible"
|
|
||||||
centered
|
|
||||||
v-slot="props"
|
|
||||||
>
|
|
||||||
{{ props.row.tiempo }} minutos(s)
|
|
||||||
</b-table-column>
|
|
||||||
|
|
||||||
<b-table-column field="status" label="Confirmo" centered v-slot="props">
|
|
||||||
{{ confirmacion(props.row.status) }}
|
|
||||||
</b-table-column>
|
</b-table-column>
|
||||||
</b-table>
|
</b-table>
|
||||||
</div>
|
</div>
|
||||||
@@ -42,7 +33,7 @@
|
|||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
inscripcionesUsuario: { type: Array, required: true },
|
inscripcionesUsuario: { type: Array, required: true },
|
||||||
area: { type: Function, require: true },
|
area: { type: Function, required: true },
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -52,7 +43,7 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
icono(idArea) {
|
icono(idArea) {
|
||||||
if (idArea === 1) return 'microsoft-windows'
|
if (idArea === 1) return 'microsoft-windows'
|
||||||
if (idArea === 2) return 'mac'
|
if (idArea === 2) return 'apple'
|
||||||
return idArea === 3 ? 'linux' : 'laptop'
|
return idArea === 3 ? 'linux' : 'laptop'
|
||||||
},
|
},
|
||||||
confirmacion(status) {
|
confirmacion(status) {
|
||||||
@@ -60,7 +51,7 @@ export default {
|
|||||||
},
|
},
|
||||||
getLocalhostInfo() {
|
getLocalhostInfo() {
|
||||||
this.datosUsuario.idUsuario = localStorage.getItem('idUsuario')
|
this.datosUsuario.idUsuario = localStorage.getItem('idUsuario')
|
||||||
this.datosUsuario.numeroCuenta = localStorage.getItem('numeroCuenta')
|
this.datosUsuario.numeroCuenta = localStorage.getItem('usuario')
|
||||||
this.datosUsuario.nombre = localStorage.getItem('nombre')
|
this.datosUsuario.nombre = localStorage.getItem('nombre')
|
||||||
this.datosUsuario.carrera = localStorage.getItem('carrera')
|
this.datosUsuario.carrera = localStorage.getItem('carrera')
|
||||||
this.token = {
|
this.token = {
|
||||||
|
|||||||
@@ -18,14 +18,6 @@
|
|||||||
|
|
||||||
<b-step-item
|
<b-step-item
|
||||||
step="2"
|
step="2"
|
||||||
label="Confirmación"
|
|
||||||
type="is-success"
|
|
||||||
:clickable="isStepsClickable"
|
|
||||||
>
|
|
||||||
</b-step-item>
|
|
||||||
|
|
||||||
<b-step-item
|
|
||||||
step="3"
|
|
||||||
label="Validación"
|
label="Validación"
|
||||||
type="is-success"
|
type="is-success"
|
||||||
:clickable="isStepsClickable"
|
:clickable="isStepsClickable"
|
||||||
@@ -38,8 +30,8 @@
|
|||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
inscripcion: { type: Object, require: true },
|
inscripcion: { type: Object, required: true },
|
||||||
area: { type: Function, require: true },
|
area: { type: Function, required: true },
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -55,8 +47,7 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
step() {
|
step() {
|
||||||
if (this.inscripcion.confirmacion === true) this.activeStep = 1
|
if (this.inscripcion.validacion === 1) this.activeStep = 1
|
||||||
if (this.inscripcion.validacion === 1) this.activeStep = 2
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
|||||||
+8
-3
@@ -3,8 +3,9 @@
|
|||||||
<Header />
|
<Header />
|
||||||
|
|
||||||
<Logout />
|
<Logout />
|
||||||
|
<div class="full-h container px-4">
|
||||||
<nuxt />
|
<nuxt />
|
||||||
|
</div>
|
||||||
|
|
||||||
<Footer />
|
<Footer />
|
||||||
</div>
|
</div>
|
||||||
@@ -24,4 +25,8 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style>
|
||||||
|
.full-h {
|
||||||
|
min-height: 75vh;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
+5
-7
@@ -1,8 +1,6 @@
|
|||||||
export default {
|
export default {
|
||||||
ssr: false,
|
ssr: false,
|
||||||
/* Server de pruebas */
|
server: { port: 3131 },
|
||||||
// server: { port: },
|
|
||||||
server: { port: 3136 },
|
|
||||||
target: 'static',
|
target: 'static',
|
||||||
head: {
|
head: {
|
||||||
title: 'Inscripciones CEDETEC',
|
title: 'Inscripciones CEDETEC',
|
||||||
@@ -24,9 +22,9 @@ export default {
|
|||||||
axios: {},
|
axios: {},
|
||||||
build: {},
|
build: {},
|
||||||
env: {
|
env: {
|
||||||
api: 'http://localhost:3000',
|
// api: 'http://localhost:3000',
|
||||||
// api: "https://890af9d598a4.ngrok.io"
|
//api: 'https://venus.acatlan.unam.mx/inscripciones_test', Esta es la que tenia
|
||||||
// api: 'https://venus.acatlan.unam.mx/inscripciones_test',
|
// api: 'https://venus.acatlan.unam.mx/inscripciones',
|
||||||
// api: "https://venus.acatlan.unam.mx/produccion",
|
VUE_APP_API: process.env.VUE_APP_API
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+15307
-10638
File diff suppressed because it is too large
Load Diff
+4
-2
@@ -5,16 +5,18 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nuxt",
|
"dev": "nuxt",
|
||||||
"build": "nuxt build",
|
"build": "nuxt build",
|
||||||
"start": "nuxt start",
|
"start": "source ~/.nvm/nvm.sh && nvm use 16.15.1 && npm install && nuxt build && nuxt generate && nuxt start -p 3136",
|
||||||
"generate": "nuxt generate"
|
"generate": "nuxt generate"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@nuxt/components": "^2.2.1",
|
||||||
"@nuxtjs/axios": "^5.13.1",
|
"@nuxtjs/axios": "^5.13.1",
|
||||||
"core-js": "^3.9.1",
|
"core-js": "^3.9.1",
|
||||||
"js-file-download": "^0.4.12",
|
"js-file-download": "^0.4.12",
|
||||||
"moment": "^2.29.1",
|
"moment": "^2.29.1",
|
||||||
"nuxt": "^2.15.3",
|
"nuxt": "2.17.2",
|
||||||
"nuxt-buefy": "^0.4.4",
|
"nuxt-buefy": "^0.4.4",
|
||||||
|
"sweetalert2": "^11.22.2",
|
||||||
"validator": "^13.6.0"
|
"validator": "^13.6.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
+61
-14
@@ -2,22 +2,19 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<b-tabs v-model="activeTab">
|
<b-tabs v-model="activeTab">
|
||||||
<b-tab-item label="Tabla de tickets">
|
<b-tab-item label="Tabla de tickets">
|
||||||
<TableTickets />
|
<TableTickets
|
||||||
|
:updateIsLoading="updateIsLoading"
|
||||||
|
:imprimirError="imprimirError"
|
||||||
|
:imprimirMensaje="imprimirMensaje"
|
||||||
|
:imprimirWarning="imprimirWarning"
|
||||||
|
/>
|
||||||
</b-tab-item>
|
</b-tab-item>
|
||||||
|
|
||||||
<b-tab-item label="Reportes">
|
<b-tab-item label="Reportes">
|
||||||
<p class="title is-5">
|
<p class="title is-5">
|
||||||
Selecciona el periodo del que quieres obtener un reporte.
|
Selecciona el periodo del que quieres obtener un reporte.
|
||||||
</p>
|
</p>
|
||||||
<Reporte :updateIsLoading="updateIsLoading" :tipo="'reporte'" />
|
<Reporte :updateIsLoading="updateIsLoading" />
|
||||||
</b-tab-item>
|
|
||||||
|
|
||||||
<b-tab-item label="Generar CSV">
|
|
||||||
<p class="title is-5">
|
|
||||||
Selecciona el periodo para generar un archivo CSV y alimnetar la base
|
|
||||||
del AT.
|
|
||||||
</p>
|
|
||||||
<GenerarCSV :updateIsLoading="updateIsLoading" :tipo="'CSV'" />
|
|
||||||
</b-tab-item>
|
</b-tab-item>
|
||||||
</b-tabs>
|
</b-tabs>
|
||||||
</div>
|
</div>
|
||||||
@@ -26,15 +23,11 @@
|
|||||||
<script>
|
<script>
|
||||||
import TableTickets from '~/components/admin/tableTickets.vue'
|
import TableTickets from '~/components/admin/tableTickets.vue'
|
||||||
import Reporte from '~/components/admin/reporte.vue'
|
import Reporte from '~/components/admin/reporte.vue'
|
||||||
import GenerarCSV from '~/components/admin/reporte.vue'
|
|
||||||
import FechasInscripcion from '~/components/admin/fechasInscripcion.vue'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
TableTickets,
|
TableTickets,
|
||||||
Reporte,
|
Reporte,
|
||||||
GenerarCSV,
|
|
||||||
FechasInscripcion,
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -45,6 +38,60 @@ export default {
|
|||||||
updateIsLoading(booleanValue) {
|
updateIsLoading(booleanValue) {
|
||||||
this.isLoading = booleanValue
|
this.isLoading = booleanValue
|
||||||
},
|
},
|
||||||
|
imprimirError(err = {}, title = '¡Hubo un error!', onConfirm = () => {}) {
|
||||||
|
this.$buefy.dialog.alert({
|
||||||
|
ariaRole: 'alertdialog',
|
||||||
|
ariaModal: true,
|
||||||
|
type: 'is-danger',
|
||||||
|
title,
|
||||||
|
message: err.message,
|
||||||
|
confirmText: 'Entendido',
|
||||||
|
hasIcon: true,
|
||||||
|
iconPack: 'mdi',
|
||||||
|
icon: 'alert-octagon',
|
||||||
|
onConfirm: () => onConfirm(),
|
||||||
|
})
|
||||||
|
if (err.err && err.err === 'token error') {
|
||||||
|
localStorage.clear()
|
||||||
|
this.$router.push('/')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
imprimirMensaje(message, title = '¡Felicidades!', onConfirm = () => {}) {
|
||||||
|
this.$buefy.dialog.alert({
|
||||||
|
ariaRole: 'alertdialog',
|
||||||
|
ariaModal: true,
|
||||||
|
type: 'is-success',
|
||||||
|
title,
|
||||||
|
message,
|
||||||
|
confirmText: 'Ok',
|
||||||
|
hasIcon: true,
|
||||||
|
iconPack: 'mdi',
|
||||||
|
icon: 'check-circle',
|
||||||
|
onConfirm: () => onConfirm(),
|
||||||
|
})
|
||||||
|
},
|
||||||
|
imprimirWarning(
|
||||||
|
message,
|
||||||
|
onConfirm = () => {},
|
||||||
|
title = '¡Espera un minuto!',
|
||||||
|
onCancel = () => {}
|
||||||
|
) {
|
||||||
|
this.$buefy.dialog.alert({
|
||||||
|
ariaRole: 'alertdialog',
|
||||||
|
ariaModal: true,
|
||||||
|
type: 'is-warning',
|
||||||
|
title,
|
||||||
|
message,
|
||||||
|
confirmText: 'Confirmar',
|
||||||
|
canCancel: true,
|
||||||
|
cancelText: 'Cancelar',
|
||||||
|
hasIcon: true,
|
||||||
|
iconPack: 'mdi',
|
||||||
|
icon: 'help-circle',
|
||||||
|
onConfirm: () => onConfirm(),
|
||||||
|
onCancel: () => onCancel(),
|
||||||
|
})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
+10
-2
@@ -6,6 +6,8 @@
|
|||||||
:imprimirWarning="imprimirWarning"
|
:imprimirWarning="imprimirWarning"
|
||||||
:updateIsLoading="updateIsLoading"
|
:updateIsLoading="updateIsLoading"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<b-loading :is-full-page="true" v-model="isLoading" :can-cancel="false" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -17,7 +19,9 @@ export default {
|
|||||||
Ticket,
|
Ticket,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {}
|
return {
|
||||||
|
isLoading: false,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateIsLoading(booleanValue) {
|
updateIsLoading(booleanValue) {
|
||||||
@@ -41,7 +45,11 @@ export default {
|
|||||||
this.$router.push('/')
|
this.$router.push('/')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
imprimirMensaje(message, title = '¡Felicidades!', onConfirm = () => {}) {
|
imprimirMensaje(
|
||||||
|
message,
|
||||||
|
title = '¡Acción confirmada!',
|
||||||
|
onConfirm = () => {}
|
||||||
|
) {
|
||||||
this.$buefy.dialog.alert({
|
this.$buefy.dialog.alert({
|
||||||
ariaRole: 'alertdialog',
|
ariaRole: 'alertdialog',
|
||||||
ariaModal: true,
|
ariaModal: true,
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<section class="container">
|
<section class="container">
|
||||||
|
<RegistroProfesor ></RegistroProfesor>
|
||||||
|
|
||||||
<LoginUser
|
<LoginUser
|
||||||
v-if="type === 'User'"
|
v-if="type === 'User'"
|
||||||
:imprimirMensaje="imprimirMensaje"
|
:imprimirMensaje="imprimirMensaje"
|
||||||
@@ -8,6 +10,8 @@
|
|||||||
:updateIsLoading="updateIsLoading"
|
:updateIsLoading="updateIsLoading"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<LoginAdmin
|
<LoginAdmin
|
||||||
v-if="type === 'Admin'"
|
v-if="type === 'Admin'"
|
||||||
:imprimirMensaje="imprimirMensaje"
|
:imprimirMensaje="imprimirMensaje"
|
||||||
@@ -16,6 +20,8 @@
|
|||||||
:updateIsLoading="updateIsLoading"
|
:updateIsLoading="updateIsLoading"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="has-text-centered">
|
<div class="has-text-centered">
|
||||||
<b-button @click="types()">{{ type }}</b-button>
|
<b-button @click="types()">{{ type }}</b-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -27,6 +33,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import LoginUser from '@/components/Login'
|
import LoginUser from '@/components/Login'
|
||||||
import LoginAdmin from '@/components/admin/login'
|
import LoginAdmin from '@/components/admin/login'
|
||||||
|
import RegistroProfesor from '@/pages/profesor/registro-profesor.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { LoginUser, LoginAdmin },
|
components: { LoginUser, LoginAdmin },
|
||||||
|
|||||||
@@ -0,0 +1,105 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="has-text-centered mt-6">
|
||||||
|
<h1 class="title is-3">¡Bienvenido al sistema de inscripciones CEDETEC!</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content mt-4 px-5 card">
|
||||||
|
<p class="text1">
|
||||||
|
Profesor(a): <strong>{{ nombre }}</strong>, al realizar su inscripción tendrá acceso a los siguientes servicios que ofrece el CEDETEC en el área de profesores:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>Préstamo de equipo de cómputo.</li>
|
||||||
|
<li>Mesas para trabajar con sus dispositivos móviles personales o con los módulos de PC PUMA.</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Adicionalmente, y bajo disponibilidad del espacio, su programa podrá reservar la sala de usos múltiples para que usted pueda utilizarla con los alumnos.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Nota:</strong> La inscripción se realiza cada semestre.</p>
|
||||||
|
|
||||||
|
<div class="btn-ins">
|
||||||
|
<button class="btn-first" type="button" @click="realizarInscripcion">Realizar Inscripcion</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import axios from 'axios';
|
||||||
|
import { errorAlInscribir, inscripcionExitosa } from '~/utils/alerts';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
nombre: '',
|
||||||
|
correo: '',
|
||||||
|
idUsuario: null,
|
||||||
|
numeroCuenta: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.idUsuario = localStorage.getItem('profesorId');
|
||||||
|
this.nombre = localStorage.getItem('profesorNombre');
|
||||||
|
//this.numeroCuenta = localStorage.getItem('profesorNumeroCuenta');
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
realizarInscripcion() {
|
||||||
|
const payload = {
|
||||||
|
id_cuenta: this.idUsuario,
|
||||||
|
nombre: this.nombre,
|
||||||
|
//correo: 'smtrabajos5@gmail.com'
|
||||||
|
correo: `${this.idUsuario}@pcpuma.acatlan.unam.mx` // esta es el codigo para produccion
|
||||||
|
}
|
||||||
|
|
||||||
|
axios.post(`${process.env.VUE_APP_API}/api/profesores/inscripcion`,payload)
|
||||||
|
.then(() => {
|
||||||
|
inscripcionExitosa(payload.correo);
|
||||||
|
this.$router.push('/'); //Redirige a la pantalla original despues de la inscripcion
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
//this.imprimirError('No se pudo enviar el correo.');
|
||||||
|
console.error(err);
|
||||||
|
errorAlInscribir();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
h1 {
|
||||||
|
color: goldenrod;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol {
|
||||||
|
padding-left: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-ins {
|
||||||
|
text-align: center;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text1 {
|
||||||
|
padding-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
.btn-first {
|
||||||
|
background-color: goldenrod; #1d3d6f
|
||||||
|
width: 350px;
|
||||||
|
height: 50px;
|
||||||
|
color: white;
|
||||||
|
box-shadow: 0px 4px 20px rgba(40, 35, 97, 0.5);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<ol>
|
||||||
|
<li><strong>Asunto</strong>: Inscripción CEDETEC</li>
|
||||||
|
<li>Estimado profesor(a) {{ nombre }}</li>
|
||||||
|
<li>Informo que su inscripción fue realizad con éxito.</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3><strong>¿Cómo puede hacer uso de los servicios?</strong></h3>
|
||||||
|
Es necesario revise los siguientes videos para solicitar equipo en el área de profesores.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Nota</strong>:
|
||||||
|
<p>Es importante revisar los <strong>lineamientos de uso</strong> para hacer uso de los servicios que ofrece el CEDETEC. </p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
+285
-91
@@ -1,110 +1,298 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container px-2">
|
||||||
<h2 class="title is-5">Mesa para dispositivos moviles</h2>
|
<section>
|
||||||
<ol>
|
<p class="title is-3 has-text-centered color">
|
||||||
<li>
|
Los servicios que ofrece el Centro de Desarrollo Tecnológico (CeDeTec)
|
||||||
El servicio solo esta disponible para alumnos vigentes de licenciatura
|
son:
|
||||||
</li>
|
</p>
|
||||||
<li>
|
|
||||||
Este servicio requiere de una aportación voluntaria que podrás realizar
|
<ul class="pb-5">
|
||||||
en cajas (planta baja del edificio A4)
|
<li class="pl-3">a) Préstamo de equipo de cómputo</li>
|
||||||
</li>
|
<li class="pl-3">b) Préstamo de mesas para dispositivos móviles</li>
|
||||||
<li>
|
<li class="pl-3">c) Impresión</li>
|
||||||
Al realizar tu inscripción se te otorgan 60 hrs, en caso de acabarse,
|
<li class="pl-3">d) Ploteo</li>
|
||||||
podrás adquirir más tiempo, realizando nuevamente una aportación
|
<li class="pl-3">e) Escaneo</li>
|
||||||
voluntaria.
|
</ul>
|
||||||
</li>
|
|
||||||
<li>
|
<b-collapse
|
||||||
Esta inscripción es válida para hacer uso de mesas dentro del CEDETEC
|
class="card"
|
||||||
donde podrás trabajar con tus dispositivos móviles solo actividades
|
animation="slide"
|
||||||
académicas
|
:open="isOpen == 1"
|
||||||
</li>
|
@open="isOpen = index1"
|
||||||
<li>
|
:aria-id="'contentIdForA11y5-' + index1"
|
||||||
<p>El servicio se realiza de la siguiente manera:</p>
|
>
|
||||||
<ul class="pl-5">
|
<template #trigger="props">
|
||||||
<li>
|
<div
|
||||||
a. Ingresar al Departamento de Servicios de para verificar la
|
class="card-header"
|
||||||
disponibilidad de espacio que se muestra en la pantalla que se
|
role="button"
|
||||||
encuentra en la entrada
|
:aria-controls="'contentIdForA11y5-' + index1"
|
||||||
</li>
|
:aria-expanded="props.open"
|
||||||
<li>
|
>
|
||||||
b. Dirigirse al Departamento de Servicios de Cómputo (planta baja
|
<p class="card-header-title">
|
||||||
del CEDETEC)
|
Servicios que requieren inscripción y confirmación
|
||||||
</li>
|
</p>
|
||||||
<li>
|
<a class="card-header-icon">
|
||||||
c. Desinfectar tus manos con gel antes de utilizar los equipos para
|
<b-icon :icon="props.open ? 'menu-down' : 'menu-up'"> </b-icon>
|
||||||
la asignación de tiempo
|
</a>
|
||||||
</li>
|
</div>
|
||||||
<li>
|
</template>
|
||||||
d. Indicar en el sistema
|
<div class="card-content">
|
||||||
<ul class="pl-5">
|
<div class="content">
|
||||||
<li>l. Número de cuenta</li>
|
<ol>
|
||||||
<li>ll. Elegir mesa para laptop</li>
|
<li class="pl-3">
|
||||||
<li>lll. Elegir tiempo (15, 30, 45, 60, 90, 120 min)</li>
|
<b>Préstamo de equipos de cómputo:</b> Con Sistemas Operativos
|
||||||
<li>lV. El sistema te indicará la mesa a utilizar</li>
|
Windows, MacOS, Linux y el software sugerido por la
|
||||||
<li>
|
licenciatura.
|
||||||
V. En caso de terminar tu tiempo y deseas renovar, tendrás que
|
</li>
|
||||||
ir solicitarlo nuevamente en los equipos de asignación de
|
|
||||||
tiempo.
|
<li class="pl-3">
|
||||||
|
<b>Mesas para trabajar con dispositivos móviles:</b> Los
|
||||||
|
dispositivos deberán estar configurados a la red de pcpuma.
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<p class="pt-5">
|
||||||
|
<b
|
||||||
|
>Para hacer uso de estos servicios es necesario hacer los
|
||||||
|
siguientes pasos:</b
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="pt-5"><b>Paso 1: Registro</b></p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Solo podran ingresar alumnos vigentes de licenciatura al sitio
|
||||||
|
<a href="https://inscripcion-cedetec.acatlan.unam.mx/">
|
||||||
|
https://inscripcion-cedetec.acatlan.unam.mx/</a
|
||||||
|
>
|
||||||
|
con su numero de cuenta y NIP de escolares para:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li class="pl-3">
|
||||||
|
Elegir área (PCNET, Macintosh o Linux) según la carrera y el
|
||||||
|
semestre
|
||||||
|
</li>
|
||||||
|
<li class="pl-3">
|
||||||
|
Agregar datos (monto, fecha, número de ticket de la aportación
|
||||||
|
voluntaria que hiciste en cajas).
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
El servicio está sujeto a lineamientos de uso que deberás tener
|
|
||||||
presentes para cualquier usuario
|
|
||||||
|
|
||||||
<ul class="pl-5">
|
<p class="pt-5"><b>Paso 2 Confirmación</b></p>
|
||||||
<li>a. Traer su propio cargador</li>
|
|
||||||
<li>b. No permite mover mobiliario o multicontactos</li>
|
|
||||||
<li>
|
|
||||||
c. La red de PCPUMA del equipo personal deberá estar previamente
|
|
||||||
configurada
|
|
||||||
</li>
|
|
||||||
<li>d. Solo podrá estar una persona por mesa</li>
|
|
||||||
<li>e. Deberás portar todo el tiempo el cubrebocas</li>
|
|
||||||
<li>f. No podrás ingresar e ingerir alimentos o bebidas</li>
|
|
||||||
<li>g. Deberás permanecer en orden y en silencio</li>
|
|
||||||
<li>
|
|
||||||
h. El espacio deberá estar limpio al terminar el tiempo asignado
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
i. Las mesas no podrán utilizarse para actividades de recortes,
|
|
||||||
armado, pegado de piezas o apuntes
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
|
|
||||||
<p class="py-4">
|
<p>
|
||||||
Nota: En caso de no respetar estos lineamientos básicos será suspendida su
|
Es indispensable ingresar al sitio
|
||||||
inscripción a este servicio
|
<a
|
||||||
</p>
|
href=" https://kalinga.acatlan.unam.mx/cedetec/"
|
||||||
|
target="_blanc"
|
||||||
|
>
|
||||||
|
https://kalinga.acatlan.unam.mx/cedetec/
|
||||||
|
</a>
|
||||||
|
para conocer:
|
||||||
|
</p>
|
||||||
|
|
||||||
<b-field>
|
<ul>
|
||||||
<b-checkbox v-model="lineamientos">
|
<li class="pl-3">La forma de usar los servicios</li>
|
||||||
Acepto que todos los datos ingresados en esta aplicación son verdaderos,
|
<li class="pl-3">Lineamientos y sanciones</li>
|
||||||
de no ser así mi inscripción será cancelada.
|
</ul>
|
||||||
</b-checkbox>
|
|
||||||
</b-field>
|
|
||||||
|
|
||||||
<div class="has-text-centered pb-5">
|
<p class="pt-5">
|
||||||
<b-button
|
Después de haber visto los videos y leído los lineamientos y
|
||||||
:disabled="!lineamientos"
|
sanciones, tendrás que aceptar que has leído y entendido los
|
||||||
@click="pushRegistro"
|
puntos anteriores al ingresar tu número de cuenta y correo
|
||||||
type="is-success"
|
institucional(pcpuma).
|
||||||
>Aceptar</b-button
|
</p>
|
||||||
|
|
||||||
|
<p class="pt-5"><b>Notas:</b></p>
|
||||||
|
|
||||||
|
<ul class="pt-5">
|
||||||
|
<li class="pl-3">Cupo limitado</li>
|
||||||
|
<li class="pl-3">
|
||||||
|
El aforo dependerá del color del semáforo de riesgo epidémico.
|
||||||
|
</li>
|
||||||
|
<li class="pl-3">
|
||||||
|
Solo podrás hacer uso de los servicios si realizas la
|
||||||
|
confirmación
|
||||||
|
</li>
|
||||||
|
<li class="pl-3">
|
||||||
|
La inscripción te habilita 60 hrs. para ambos servicios, que
|
||||||
|
podrás hacer uso de lunes a viernes en el horario de 9:00 a
|
||||||
|
19:45 En caso de terminarse las horas asignadas, podrás
|
||||||
|
renovarse realizando una aportación voluntaria e ingresar al
|
||||||
|
sitio:
|
||||||
|
<a href="https://inscripcion-cedetec.acatlan.unam.mx"
|
||||||
|
>https://inscripcion-cedetec.acatlan.unam.mx</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</b-collapse>
|
||||||
|
|
||||||
|
<b-collapse
|
||||||
|
class="card"
|
||||||
|
animation="slide"
|
||||||
|
:open="isOpen == 1"
|
||||||
|
@open="isOpen = index1"
|
||||||
|
:aria-id="'contentIdForA11y5-' + index1"
|
||||||
>
|
>
|
||||||
|
<template #trigger="props">
|
||||||
|
<div
|
||||||
|
class="card-header"
|
||||||
|
role="button"
|
||||||
|
:aria-controls="'contentIdForA11y5-' + index1"
|
||||||
|
:aria-expanded="props.open"
|
||||||
|
>
|
||||||
|
<p class="card-header-title">Ingreso al CeDeTec:</p>
|
||||||
|
<a class="card-header-icon">
|
||||||
|
<b-icon :icon="props.open ? 'menu-down' : 'menu-up'"> </b-icon>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="content">
|
||||||
|
<ul>
|
||||||
|
<li class="pl-3">
|
||||||
|
Revisar la <b>disponibilidad</b> de equipos de cómputo y mesas
|
||||||
|
para dispositivos,
|
||||||
|
<b>en la pantalla ubicada en la entrada principal.</b> Es
|
||||||
|
importante este punto para evitar aglomeraciones y respetar el
|
||||||
|
aforo.
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="pl-3">
|
||||||
|
Dirigirse a los equipos de asignación de tiempo para hacer la
|
||||||
|
solicitud de equipo o mesa para dispositivos móviles.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</b-collapse>
|
||||||
|
|
||||||
|
<b-collapse
|
||||||
|
class="card"
|
||||||
|
animation="slide"
|
||||||
|
:open="isOpen == 1"
|
||||||
|
@open="isOpen = index1"
|
||||||
|
:aria-id="'contentIdForA11y5-' + index1"
|
||||||
|
>
|
||||||
|
<template #trigger="props">
|
||||||
|
<div
|
||||||
|
class="card-header"
|
||||||
|
role="button"
|
||||||
|
:aria-controls="'contentIdForA11y5-' + index1"
|
||||||
|
:aria-expanded="props.open"
|
||||||
|
>
|
||||||
|
<p class="card-header-title">
|
||||||
|
Servicios que NO requieren inscripción y confirmación
|
||||||
|
</p>
|
||||||
|
<a class="card-header-icon">
|
||||||
|
<b-icon :icon="props.open ? 'menu-down' : 'menu-up'"> </b-icon>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div class="card-content">
|
||||||
|
<div class="content">
|
||||||
|
<ul>
|
||||||
|
<li class="pl-3">
|
||||||
|
Los servicios de impresión, escaneo y ploteo
|
||||||
|
<b>requieren de un pago que se realiza en cajas</b> (planta baja
|
||||||
|
edificio A4).
|
||||||
|
</li>
|
||||||
|
<p class="pl-3 pt-4">
|
||||||
|
Al realizar el pago en cajas indicar pago a CEDETEC y monto.
|
||||||
|
</p>
|
||||||
|
<p class="pl-3">
|
||||||
|
Solo se permiten ticket cuyo concepto sea CEDETEC.
|
||||||
|
</p>
|
||||||
|
<p class="pl-3">
|
||||||
|
El ticket debe ser del mes en que se realiza la impresión.
|
||||||
|
</p>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p class="subtitle is-2 pt-5">Impresión</p>
|
||||||
|
<p>De acuerdo al tamaño y color se tienen los siguientes costos</p>
|
||||||
|
|
||||||
|
<Tabla :data="dataImpresion" />
|
||||||
|
|
||||||
|
<p class="subtitle is-2">Ploteo</p>
|
||||||
|
<p>De acuerdo al tamaño y color se tienen los siguientes costos</p>
|
||||||
|
|
||||||
|
<Tabla :data="dataPloteo" />
|
||||||
|
|
||||||
|
<p class="subtitle is-2">Escaneo:</p>
|
||||||
|
<p>Precio por tamaño:</p>
|
||||||
|
|
||||||
|
<ul class="pb-5">
|
||||||
|
<li class="pl-3">Carta y oficio <b>$ 1.00</b></li>
|
||||||
|
<li class="pl-3">Doble Carta <b>$ 2.00</b></li>
|
||||||
|
<li class="pl-3">60 x 45 cms. ó 90 x 60 cms. <b>$ 5.00</b></li>
|
||||||
|
<li class="pl-3">Trae USB</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</b-collapse>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<p class="subtitle is-4 has-text-centered pt-5">
|
||||||
|
¿Desear continuar con la inscripción ?
|
||||||
|
</p>
|
||||||
|
<div class="has-text-centered pb-5">
|
||||||
|
<b-button type="is-info" @click="pushRegistro">Continuar</b-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import Tabla from '@/components/informacion/tablaCostos.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
components: {
|
||||||
|
Tabla,
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
lineamientos: false,
|
isOpen: 0,
|
||||||
|
index1: 0,
|
||||||
|
index2: 1,
|
||||||
|
index3: 2,
|
||||||
|
dataImpresion: [
|
||||||
|
{
|
||||||
|
color: 'Negro',
|
||||||
|
tamaño: 'carta/oficio',
|
||||||
|
costo: '$ 1.00 por cada página',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
color: 'Negro',
|
||||||
|
tamaño: 'doble carta',
|
||||||
|
costo: '$ 2.00 por cada página',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
color: 'Color',
|
||||||
|
tamaño: 'diferentes tamaños',
|
||||||
|
costo:
|
||||||
|
'1) El usuario presenta el archivo en el área de impresión (planta baja del CeDeTec) para que el operador le indique el costo <br/> 2) Ir cajas a pagar <br/> 3) Regresar a CeDeTec para entregar ticket y hacer la impresión',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
dataPloteo: [
|
||||||
|
{
|
||||||
|
color: 'Negro',
|
||||||
|
tamaño: '60x45 cm',
|
||||||
|
costo: '$14.00',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
color: 'Negro',
|
||||||
|
tamaño: '90x60 cm',
|
||||||
|
costo: '$16.50',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
color: 'Color',
|
||||||
|
tamaño: '60x45 cm o 90x60 cm',
|
||||||
|
costo:
|
||||||
|
'1) El usuario presenta el archivo en el área de impresión (planta baja del CeDeTec) para que el operador le indique el costo. <br /> 2) Ir cajas a pagar <br/> 3) Regresar a CeDeTec para entregar ticket y hacer la impresión',
|
||||||
|
},
|
||||||
|
],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -114,3 +302,9 @@ export default {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.color {
|
||||||
|
color: #1d3d6f;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container py-2 px-2">
|
||||||
<p class="title is-3">
|
<p class="title is-3 has-text-centered">
|
||||||
Inscripción para hacer uso de mesa para dispositivos móviles
|
Inscripción para hacer uso de mesa para dispositivos móviles
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -18,8 +18,11 @@
|
|||||||
:imprimirError="imprimirError"
|
:imprimirError="imprimirError"
|
||||||
:updateIsLoading="updateIsLoading"
|
:updateIsLoading="updateIsLoading"
|
||||||
:inscripcionesUsuario="inscripcionesUsuario"
|
:inscripcionesUsuario="inscripcionesUsuario"
|
||||||
|
:idUsuario="idUsuario"
|
||||||
@pedirInscripciones="pedirInscripciones"
|
@pedirInscripciones="pedirInscripciones"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<b-loading :is-full-page="true" v-model="isLoading" :can-cancel="false" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -38,16 +41,17 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
datosUsuario: {},
|
idUsuario: '',
|
||||||
inscripcionesUsuario: [],
|
inscripcionesUsuario: [],
|
||||||
|
isLoading: false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async pedirInscripciones() {
|
async pedirInscripciones() {
|
||||||
await axios
|
await axios
|
||||||
.get(
|
.get(
|
||||||
`${process.env.api}/usuario/inscripciones?idUsuario=${this.datosUsuario.idUsuario}`,
|
`${process.env.api}/usuario/inscripciones?idUsuario=${this.idUsuario}`,
|
||||||
this.datosUsuario.token
|
this.token
|
||||||
)
|
)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
this.inscripcionesUsuario = res.data
|
this.inscripcionesUsuario = res.data
|
||||||
@@ -94,7 +98,10 @@ export default {
|
|||||||
hasIcon: true,
|
hasIcon: true,
|
||||||
iconPack: 'mdi',
|
iconPack: 'mdi',
|
||||||
icon: 'check-circle',
|
icon: 'check-circle',
|
||||||
onConfirm: () => onConfirm(),
|
onConfirm: () => {
|
||||||
|
this.$router.push(`/`)
|
||||||
|
localStorage.clear()
|
||||||
|
},
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
imprimirWarning(
|
imprimirWarning(
|
||||||
@@ -109,9 +116,9 @@ export default {
|
|||||||
type: 'is-warning',
|
type: 'is-warning',
|
||||||
title,
|
title,
|
||||||
message,
|
message,
|
||||||
confirmText: 'Confirmar',
|
confirmText: 'Si',
|
||||||
canCancel: true,
|
canCancel: true,
|
||||||
cancelText: 'Cancelar',
|
cancelText: 'No',
|
||||||
hasIcon: true,
|
hasIcon: true,
|
||||||
iconPack: 'mdi',
|
iconPack: 'mdi',
|
||||||
icon: 'help-circle',
|
icon: 'help-circle',
|
||||||
@@ -121,8 +128,8 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.datosUsuario.idUsuario = Number(localStorage.getItem('idUsuario'))
|
this.idUsuario = Number(localStorage.getItem('idUsuario'))
|
||||||
this.datosUsuario.token = {
|
this.token = {
|
||||||
headers: { token: localStorage.getItem('token') },
|
headers: { token: localStorage.getItem('token') },
|
||||||
}
|
}
|
||||||
this.pedirInscripciones()
|
this.pedirInscripciones()
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
// src/utils/alerts.js
|
||||||
|
import Swal from 'sweetalert2';
|
||||||
|
|
||||||
|
export const inscripcionExitosa = (correo) => {
|
||||||
|
Swal.fire({
|
||||||
|
title: '¡Inscripción exitosa!',
|
||||||
|
html: `Hemos enviado un correo a<br><strong>${correo}</strong> por favor revisar su correo.`,
|
||||||
|
icon: 'success',
|
||||||
|
confirmButtonText: 'Aceptar',
|
||||||
|
confirmButtonColor: '#28a745',
|
||||||
|
backdrop: true,
|
||||||
|
allowOutsideClick: false,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const errorAlInscribir = () => {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Error',
|
||||||
|
text: 'No se pudo completar la inscripción. Intenta más tarde.',
|
||||||
|
icon: 'error',
|
||||||
|
confirmButtonText: 'Aceptar',
|
||||||
|
confirmButtonColor: '#d33',
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
//Por favor confirme que la informacion enviada es correcta en caso contrario redirigirse a su programa academico
|
||||||
|
|
||||||
|
export const errorBuscar = () => {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Error',
|
||||||
|
text: 'Su número de trabajador no fue encontrado en nuestro sistema. Por favor, acudir a su Programa Académico para que reporte el problema al DSC.',
|
||||||
|
icon: 'error',
|
||||||
|
confirmButtonText: 'Aceptar',
|
||||||
|
confirmButtonColor: '#d33',
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const profesorYaInscrito = () => {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Error',
|
||||||
|
text: 'El profesor ya esta inscrito, por favor verificar el correo enviado anteriormente.',
|
||||||
|
icon: 'error',
|
||||||
|
confirmButtonText: 'Aceptar',
|
||||||
|
confirmButtonColor: '#d33',
|
||||||
|
})
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user