ba462a091b
Fiches Client / Prospect / Prestataire (onglet Rapport mis à part) : - Champs email/téléphone : composants MalioInputEmail / MalioInputPhone - Grilles en 4 colonnes (Info + blocs Contact/Adresse) - Boutons « Nouveau contact/adresse » en secondary ; « Enregistrer » en taille Malio standard ; marge form↔bouton homogène entre onglets - Bouton retour ghost (mdi:arrow-left-bold) comme Starseed - Adresse : flux CP → ville → rue (rue conditionnée au CP+ville, cascade de reset), titre du bloc = libellé saisi - Suppression d'un bloc Contact/Adresse : modal de confirmation (logique centralisée dans useDirectoryDetail) Onglet Rapport : - Bouton d'ajout en taille Malio standard, label « Ajouter » - Suppression compte-rendu : passe à la ConfirmModal partagée (remplace l'ancienne ConfirmDeleteReportModal, supprimée) - Suppression d'un document joint : ajout d'une modal de confirmation - Upload via MalioInputUpload ; bouton supprimer document aligné (mdi:delete-outline ghost) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
38 lines
1.2 KiB
Vue
38 lines
1.2 KiB
Vue
<template>
|
|
<div class="flex items-center gap-3">
|
|
<MalioInputUpload
|
|
v-model="fileName"
|
|
class="flex-1"
|
|
:label="$t('directory.documents.add')"
|
|
:disabled="uploading"
|
|
:reserve-message-space="false"
|
|
@file-selected="onFile"
|
|
/>
|
|
<span v-if="uploading" class="shrink-0 text-sm text-neutral-500">{{ $t('directory.documents.uploading') }}</span>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { useReportDocumentService } from '~/modules/directory/services/report-documents'
|
|
|
|
const props = defineProps<{ reportId: number }>()
|
|
const emit = defineEmits<{ uploaded: [] }>()
|
|
|
|
const service = useReportDocumentService()
|
|
// Nom du fichier affiché par le champ Malio (v-model) ; réinitialisé après envoi.
|
|
const fileName = ref('')
|
|
const uploading = ref(false)
|
|
|
|
// L'upload se déclenche dès la sélection (event natif du composant Malio).
|
|
async function onFile(file: File): Promise<void> {
|
|
uploading.value = true
|
|
try {
|
|
await service.upload(props.reportId, file)
|
|
emit('uploaded')
|
|
} finally {
|
|
uploading.value = false
|
|
fileName.value = ''
|
|
}
|
|
}
|
|
</script>
|