github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/frontend/bv/src/pages/espace_perso/views/Documents.vue (about) 1 <template> 2 <div> 3 <b-alert show variant="info" class="mt-2"> 4 Vous retrouvez sur cette page les documents des séjours auxquels vous 5 participez, à télécharger. 6 <br /> 7 <span v-if="restant > 0"> 8 Merci de remplir les documents demandés dans l'onglet 9 <b>Documents à remplir</b>. 10 </span> 11 </b-alert> 12 <b-tabs fill> 13 <b-tab title="Documents à lire"> 14 <documents-camp 15 :camp="camp" 16 v-for="(camp, i) in camps" 17 :key="i" 18 ></documents-camp> 19 </b-tab> 20 <b-tab v-if="personnes.length > 0"> 21 <template v-slot:title> 22 Documents à remplir 23 <b-badge v-if="restant > 0" variant="fushia">{{ restant }}</b-badge> 24 </template> 25 <contraintes-personne 26 v-for="personne in personnes" 27 :key="personne.id_crypted" 28 :personne="personne" 29 ></contraintes-personne> 30 </b-tab> 31 </b-tabs> 32 </div> 33 </template> 34 35 <script lang="ts"> 36 import Vue from "vue"; 37 import Component from "vue-class-component"; 38 import DocumentsCamp from "../components/documents/DocumentsCamp.vue"; 39 40 import { C } from "../logic/controller"; 41 import { CampPlus } from "@/shared/logic/types"; 42 import ContraintesPersonne from "../components/documents/ContraintesPersonne.vue"; 43 44 const DocumentProps = Vue.extend({ 45 props: {} 46 }); 47 48 @Component({ 49 components: { DocumentsCamp, ContraintesPersonne } 50 }) 51 export default class Document extends DocumentProps { 52 C = C; // reactivity 53 54 get restant() { 55 return C.documentsARemplir(); 56 } 57 58 get camps() { 59 const camps: { [key: number]: CampPlus } = {}; 60 C.data.participants.forEach(part => { 61 camps[part.id_camp] = C.data.camps[part.id_camp]; 62 }); 63 return Object.values(camps).sort((a, b) => (a.id < b.id ? -1 : 1)); 64 } 65 66 get personnes() { 67 return Object.values(C.data.personnes).sort((a, b) => 68 a.nom_prenom.localeCompare(b.nom_prenom) 69 ); 70 } 71 72 hrefMailDirecteur(camp: CampPlus) { 73 const mail = camp.mail_directeur || ""; 74 if (mail) { 75 return `mailto:${mail}?subject=[Document]`; 76 } 77 return ""; 78 } 79 } 80 </script> 81 82 <style scoped></style>