informe global listo

This commit is contained in:
xXpuma99Xx
2021-11-29 10:15:45 -06:00
parent e2b2da7a2e
commit 772412f6a4
4 changed files with 113 additions and 152 deletions
@@ -28,6 +28,11 @@
comunicarte al 5623 1686 o al correo registross@acatlan.unam.mx
</span>
<span v-if="Status.idStatus === 4">
Para continuar con el proceso de término de tu servicio social debes de
subir tu informe global y contesta el cuestionario.
</span>
<span v-if="Status.idStatus === 5">
Espera a que tus documentos sean validados por el Departamento de
Servicio Social y Bolsa de Trabajo.
+87 -141
View File
@@ -1,180 +1,126 @@
<template>
<div>
<h3 class="title is-4 mt-6">
<h3 class="label">
Cuestionario de evaluación del programa de servicio social
</h3>
<div class="my-6" v-if="idCuestionario == null">
<b-field class="mb-6" v-if="!servicio.idCuestionarioAlumno">
<b-button
type="is-info is-light"
tag="router-link"
to="/alumno/cuestionario"
type="is-info is-light "
icon-left="book-open"
class="border-info"
size="is-medium"
>
cuestionario
Cuestionario
</b-button>
</div>
<div class="is-flex" v-else>
<p class="block is-size-5">Cuestionario contestado</p>
<b-icon icon="check-bold" size="is-small" type="is-success"> </b-icon>
</b-field>
<div v-else>
<p class="block is-size-5">
Cuestionario contestado
<b-icon type="is-success" icon="check-bold" />
</p>
</div>
<h3 class="title is-4 mt-6">
<h3 class="label">
Informe global de actividades (en formato .PDF. No se aceptan fotos).
</h3>
<div v-if="!informeGlobal">
<b-field type="black">
<b-upload
v-model="file"
type="black"
drag-drop
expanded
accept="application/pdf"
>
<section class="section">
<div class="content has-text-centered">
<p>
<b-icon icon="upload" size="is-large"></b-icon>
</p>
<p>
{{
file.name || 'Arrastra aquí tu archivo o da click para buscar'
}}
</p>
<p>Tamaño máximo 20MB</p>
</div>
</section>
<div v-if="!servicio.informeGlobal">
<b-field>
<b-upload accept="application/pdf" v-model="file" drag-drop expanded>
<div class="section has-text-centered">
<b-icon icon="upload" size="is-large" class="mb-2" />
<p class="is-size-5">
{{
file.name ||
'Arrastra aquí tu archivo o da click aquí para buscarlo.'
}}
</p>
<p class="is-size-6">Tamaño máximo 20MB</p>
</div>
</b-upload>
</b-field>
<b-field style="text-align: center">
<button
:disabled="file == ''"
class="button is-success is-medium mb-4"
@click="enviarInforme()"
<b-field class="has-text-centered my-5">
<b-button
type="is-success"
:disabled="!file.name"
@click="
imprimirWarning(
`¿Estas seguro(a) de querer subir este informe global?`,
enviarInformeGlobal
)
"
>
Enviar
</button>
</b-button>
</b-field>
</div>
<div class="is-flex" v-else>
<p class="block is-size-5">Informe Global enviado.</p>
<b-icon icon="check-bold" size="is-small" type="is-success"> </b-icon>
</div>
<b-loading :is-full-page="true" :can-cancel="false" v-model="isLoading">
</b-loading>
<div v-else>
<p class="block is-size-6">
Informe Global enviado.
<b-icon type="is-success" icon="check-bold" />
</p>
</div>
</div>
</template>
<script>
import axios from 'axios'
export default {
props: {
alumno: { type: Object, required: true },
servicio: { type: Object, required: true },
imprimirMensaje: { type: Function, required: true },
imprimirWarning: { type: Function, required: true },
imprimirError: { type: Function, required: true },
obtenerServicio: { type: Function, required: true },
updateIsLoading: { type: Function, required: true },
},
data() {
return {
token: {
headers: {
token: localStorage.getItem('token'),
},
},
isLoading: false,
file: [],
file: {},
}
},
props: ['idCuestionario', 'informeGlobal', 'idServicio'],
methods: {
enviarInformeGlobal() {
const formData = new FormData()
const data = {
idServicio: this.servicio.idServicio,
}
this.updateIsLoading(true)
formData.append('data', JSON.stringify(data))
formData.append('informeGlobal', this.file)
axios
.put(
`${process.env.api}/servicio/informe_global`,
formData,
this.alumno.tokenArchivo
)
.then((res) => {
this.updateIsLoading(false)
this.imprimirMensaje(res.data.message)
this.obtenerServicio()
})
.catch((error) => {
this.updateIsLoading(false)
this.imprimirError(error.response.data)
})
},
},
watch: {
file() {
if (this.file.size >= 20000000) {
this.$buefy.dialog.alert({
title: 'Error',
message: 'El tamaño del archivo exede los 20MB',
type: 'is-danger',
hasIcon: true,
icon: 'alert-circle',
ariaRole: 'alertdialog',
ariaModal: true,
})
this.file = []
this.imprimirError({ message: 'El tamaño del archivo exede los 20MB' })
this.file = {}
}
},
},
methods: {
reset() {
this.file = []
},
error(msj) {
let salir = false
switch (msj) {
case 'invalid signature':
msj = 'Tu token no es valido, inicia sesión de nuevo.'
salir = true
break
case 'jwt expired':
msj = 'Tu sesión ha expirado, inicia sesión de nuevo.'
salir = true
break
case 'jwt malformed':
msj = 'No se encontro tu token, inicia sesión de nuevo.'
salir = true
break
case 'No hay token':
msj = 'Ocurrio un error al enviar tu token, inicia sesión de nuevo.'
salir = true
break
}
this.$buefy.dialog.alert({
title: 'Error',
message: msj,
type: 'is-danger',
hasIcon: true,
icon: 'alert-circle',
ariaRole: 'alertdialog',
ariaModal: true,
})
if (salir == true) {
localStorage.clear()
this.$router.push(`/`)
}
},
enviarInforme() {
this.isLoading = true
const data = {
idServicio: this.idServicio,
}
const formData = new FormData()
formData.append('data', JSON.stringify(data))
formData.append('informeGlobal', this.file)
axios
.put(`${process.env.api}/servicio/informe_global`, formData, {
headers: {
'Content-Type': 'multipart/form-data',
token: this.token.headers.token,
},
})
.then((res) => {
this.$buefy.dialog.alert({
title: 'Success',
message: 'Se enviaron los datos correctamente',
type: 'is-success',
hasIcon: true,
icon: 'checkbox-marked-circle',
ariaRole: 'alertdialog',
ariaModal: true,
})
this.reset()
this.$parent.getData()
})
.catch((error) => {
this.error(error.response.data.message)
})
.finally(() => {
this.isLoading = false
})
},
},
}
</script>
+1 -1
View File
@@ -25,7 +25,7 @@
:disabled="!file.name"
@click="
imprimirWarning(
`¿Estas seguro(a) de quere subir esta carta de ${tipoCarta}?`,
`¿Estas seguro(a) de querer subir esta carta de ${tipoCarta}?`,
subir
)
"
+20 -10
View File
@@ -5,7 +5,7 @@
:idStatus="servicio.Status.idStatus - 1"
/>
<Mensajes :Status="servicio.Status" />
<MensajesAlumno :Status="servicio.Status" />
<InformacionServicio :servicio="servicio" />
@@ -19,13 +19,17 @@
:updateIsLoading="updateIsLoading"
v-if="servicio.Status.idStatus === 2"
/>
<!--
<PreTermino
:idServicio="alumno.idServicio"
:idCuestionario="alumno.idCuestionario"
:informeGlobal="alumno.informeGlobal"
v-if="status == 4 || status == 9"
/> -->
:alumno="alumno"
:servicio="servicio"
:imprimirError="imprimirError"
:imprimirMensaje="imprimirMensaje"
:imprimirWarning="imprimirWarning"
:obtenerServicio="obtenerServicio"
:updateIsLoading="updateIsLoading"
v-if="servicio.Status.idStatus === 4 || servicio.Status.idStatus === 9"
/>
<b-loading :is-full-page="true" :can-cancel="false" v-model="isLoading" />
</div>
@@ -34,16 +38,16 @@
<script>
import axios from 'axios'
import BarraProgreso from '@/components/alumno/BarraProgreso'
import InformacionServicio from '@/components/alumno/InformacionServicio'
import Mensajes from '@/components/alumno/mensajes'
import CompletarDatosPersonales from '@/components/alumno/CompletarDatosPersonales'
import InformacionServicio from '@/components/alumno/InformacionServicio'
import MensajesAlumno from '@/components/alumno/MensajesAlumno'
import PreTermino from '@/components/alumno/preTermino'
export default {
components: {
BarraProgreso,
InformacionServicio,
Mensajes,
MensajesAlumno,
CompletarDatosPersonales,
PreTermino,
},
@@ -157,6 +161,12 @@ export default {
token: localStorage.getItem('token'),
},
}
this.alumno.tokenArchivo = {
headers: {
'Content-Type': 'multipart/form-data',
token: localStorage.getItem('token'),
},
}
},
},
created() {