github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/frontend/bv/src/pages/equipier/Documents.vue (about) 1 <template> 2 <b-card 3 title="Documents" 4 :sub-title=" 5 controller.pieces.length == 0 6 ? 'Aucun document à fournir' 7 : `Merci d'ajouter (ou de vérifier) les documents ci-dessous` 8 " 9 class="my-2" 10 > 11 <b-card-text> 12 <b-list-group flush> 13 <b-list-group-item 14 v-for="(piece, i) in sortedPieces" 15 :key="i" 16 class="p-1" 17 > 18 <needed-document 19 :controller="controller" 20 :contrainte="piece.contrainte" 21 :documents="piece.docs || []" 22 @changed="onDocumentChange(piece, $event)" 23 @upload="onDocumentCreate(piece, $event)" 24 :border="piece.optionnel ? '' : 'secondary'" 25 > 26 <template v-slot:corner> 27 <h4> 28 <b-badge 29 variant="info" 30 v-if="piece.optionnel" 31 class="align-top" 32 > 33 Optionnel 34 </b-badge> 35 </h4> 36 </template> 37 </needed-document> 38 </b-list-group-item> 39 </b-list-group> 40 </b-card-text> 41 </b-card> 42 </template> 43 44 <script lang="ts"> 45 import Vue from "vue"; 46 import Component from "vue-class-component"; 47 import NeededDocument from "@/shared/NeededDocument.vue"; 48 import { ContrainteDocuments, PublicDocument } from "@/shared/logic/types"; 49 import { nullDocument, ModifDocument } from "@/shared/logic/utils"; 50 import axios, { AxiosResponse } from "axios"; 51 import { UrlServerBase, ControllerDocument } from "@/shared/logic/controller"; 52 import { DOCUMENTS } from "@/shared/logic/enums"; 53 import { UrlServerEquipier } from "./controller"; 54 import { ValidEvent, ValidEventFile } from "@/shared/utils"; 55 import { C } from "./controller"; 56 57 const DocumentsProps = Vue.extend({ 58 props: {} 59 }); 60 61 @Component({ 62 components: { NeededDocument } 63 }) 64 export default class Documents extends DocumentsProps { 65 controller = C; 66 67 onDocumentChange(piece: ContrainteDocuments, docs: PublicDocument[]) { 68 piece.docs = docs; 69 } 70 71 async onDocumentCreate(piece: ContrainteDocuments, event: ValidEventFile) { 72 C.ajouteDocument(event.event, event.file, piece.contrainte.id_crypted); 73 } 74 75 get sortedPieces() { 76 return C.pieces.sort((a, b) => (a.optionnel ? 1 : -1)); 77 } 78 } 79 </script> 80 81 <style scoped></style>