Se ha definido una estructura de pantalla que deberán seguir los servicios implementados en Mi campus. Sin embargo, en lugar de modificar el componente fwjsPageWithMenu, se ha optado por crear un nuevo componente que facilite la tarea de organizar las pantallas de los distintos servicios ofrecidos en Mi campus siguiendo la estructura definida por la diseñadora en Zepplin.
En esencia, el diseño de la página será algo como lo siguiente:
Import
import fwjsSimplePagefrom '@/app/shared/components/fwjsServicePage.vue';
Ejemplo
<fwjs-service-page
mainServiceId="20601_16600"
:mainServiceName="$t('mis_tramites_titulo')"
:serviceName="$t('tramites_activos_titulo')"
:breadcrumbs="breadcrumbs"
:loading="loading"
subicon="fad fa-list-ul"
>
<template v-slot:menu>
<!-- Contenido del menú lateral-->
</template>
<template v-slot:service-name>
<!-- Si se indica, podrá personalizarse el h1 mostrado en el título -->
</template>
<template v-slot:service-description>
<!-- Descripción de la página -->
</template>
<template v-slot:service-content>
<!-- Contenido de la página -->
</template>
</fwjs-service-page>
Propiedades
| Propiedad | Tipo | Default | Descripción |
|---|---|---|---|
| mainServiceName | String | Nombre del servicio principal. | |
| serviceName | String | Nombre del servicio. | |
| loading | Boolean | false | Boolean que indica si se está esperando a que se complete la carga inicial de la pantalla. |
| breadcrumbs | Array | Migas de pan del servicio. {
title: 'Título de la miga de pan',
path: 'Path al que irá la miga de pan'
}
| |
| icon | String | Icono del servicio. | |
| subicon | String | Subicono del servicio. | |
| category | Number | 0 | Identificador de la categoría del servicio. |
| categoryName | String | Nombre de la categoría del servicio. | |
| mainServiceId | String | Identificador del servicio principal. Si se indica, se recuperará de la API el icono, subicono y nombre de categoría. |
Slots
Este componente únicamente tiene los siguientes slots: menu, service-name, service-description y service-content.
- menu: En este se tendrán que establecer los enlaces del menú lateral.
- service-name: Este slot no es obligatorio. Si se indica, el contenido del slot se establecerá en el punto 2 de la siguiente imagen.
- service-description: En este se establecerá una descripción del servicio que se va a integrar.
- service-content: En este se establecerá el contenido de la página.
Eventos
Este componente no emite eventos.
Peculiaridades
1. Nombre del servicio principal
Si el servicio que vamos a integrar formase parte de un grupo de servicios, se tendría que establecer el nombre del servicio principal en la propiedad "mainServiceName".
Ejemplo
El servicio de "Mis trámites" está compuesto por dos subservicios: la consulta de trámites activos y nuevo trámite. Si vamos a integrar este componente en la pantalla de consulta de trámites activos, en la propiedad "mainServiceName" estableceríamos "Mis trámites" y en la propiedad "serviceName" estableceríamos "Trámites activos".
El valor de la propiedad "mainServiceName" se utilizará en los puntos identificados con un 1 en la imagen anterior. Se usará también en el punto 2 cuando no se establezca la propiedad "serviceName".
2. Subtítulo del servicio
Si el servicio que vamos a integrar formase parte de un grupo de servicios, se tendría que establecer el nombre del servicio concreto en la propiedad "serviceName".
Ejemplo
El servicio de "Mis trámites" está compuesto por dos subservicios: la consulta de trámites activos y nuevo trámite. Si vamos a integrar este componente en la pantalla de consulta de trámites activos, en la propiedad "mainServiceName" estableceríamos "Mis trámites" y en la propiedad "serviceName" estableceríamos "Trámites activos".
El valor de la propiedad "serviceName" se utilizará en los puntos identificados con un 2 en la imagen anterior. También se establecerá en el header de la página para evitar problemas de accesibilidad.
3. Icono del servicio
Hay dos maneras de pintar el icono en la pantalla del servicio que queramos integrar:
- Utilizar las propiedades "icon", "category" y "categoryName". Lo ideal sería recuperarlas de portal-api. De modo que, si el icono cambiase, la pantalla se haría eco del cambio.
- Utilizar la propiedad "mainServiceId". Internamente, recuperará la información del icono y categoría del servicio, llamando a portal-api.
4. Subicono del servicio
Si el servicio que vamos a integrar formase parte de un grupo de servicios, tendríamos que establecer un icono que resumiese el servicio concreto en la propiedad "subicon".
Ejemplo
El servicio de "Mis trámites" está compuesto por dos subservicios: la consulta de trámites activos y nuevo trámite. Si vamos a integrar este componente en la pantalla de consulta de trámites activos, en la propiedad "subicon" estableceríamos "fad fa-list-ul".
El valor de la propiedad "subicon" se utilizará en los puntos identificados con un 4 en la imagen anterior.
5. Migas de pan del servicio
Para establecer las migas de pan, habrá que pasárselas al componente haciendo uso de la propiedad "breadcrumbs". La miga inicial no es necesario añadirla, ya que se establece automáticamente. Mientras que la última miga no necesita que se establezca la propiedad "path", ya que no será navegable.
Ejemplo
En la pantalla de consulta de trámites activos, se le pasará el siguiente objeto con las migas de pan:
[{ path: '', title: this.$t('mis_tramites_titulo') }]
El valor de la propiedad "breadcrumbs" se utilizará en los puntos identificados con un 5 en la imagen anterior.
6. Menú lateral del servicio
En el slot "menu", se establecerán los enlaces a los elementos del menú lateral del servicio. Si no se indican, no se muestra.
7. Descripción del servicio
En el slot "service-description", se establecerá una pequeña descripción del servicio que se va a integrar (2 o 3 líneas).
8. Contenido del servicio
En el slot "service-content", se establecerá el contenido del servicio que se va a integrar.

