informe global listo
This commit is contained in:
@@ -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.
|
||||
@@ -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>
|
||||
|
||||
@@ -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
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user