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>