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>