From 37bddae6ca059ecb7139ce72202e512a4759b4bd Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Wed, 29 Jul 2026 10:42:14 +0200 Subject: [PATCH] feat: ouvre la fiche d'un lot dans l'interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nouvel onglet « Lots » : identité, chiffres, chronologie et intervenants d'un lot, choisi dans un sélecteur. Le lot vit dans l'URL (`/lots/26`) pour qu'une fiche se partage et survive au rechargement. La chronologie mêle recettes et dépenses dans l'ordre des comptes rendus : c'est là que se lit la vie du lot, y compris ce que la base ne porte pas ailleurs — les dates d'entrée et de sortie des locataires sont vides, mais les honoraires de mise en location et les états des lieux les racontent. Chaque entreprise du tableau des intervenants se déplie sur ses interventions. Le détail reprend les lignes déjà chargées plutôt que d'en redemander : un second calcul pourrait diverger du total affiché. Le solde n'étant pas un résultat net, la page le dit sous les tuiles, à l'endroit où le chiffre se lit, et rappelle le montant des charges d'immeuble laissées hors des lots. Le taux de recouvrement s'efface quand rien n'est facturé : les 100 % renvoyés dans ce cas afficheraient un lot sain à côté de 49 000 € d'impayé. Couleurs reprises des tuiles existantes — `.card` et `.badge` ne fixant aucune couleur de texte, une valeur sans classe héritait du noir et disparaissait sur le fond sombre. Co-Authored-By: Claude Opus 5 --- frontend/src/App.vue | 13 +- frontend/src/pages/LotPage.vue | 384 +++++++++++++++++++++++++++++++++ frontend/src/router.js | 8 + 3 files changed, 403 insertions(+), 2 deletions(-) create mode 100644 frontend/src/pages/LotPage.vue diff --git a/frontend/src/App.vue b/frontend/src/App.vue index f9531cb..c999482 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -15,7 +15,7 @@ :key="link.to" :to="link.to" class="px-3 py-1.5 text-sm rounded-lg transition-colors" - :class="$route.path === link.to ? 'bg-gray-800 text-white' : 'text-gray-400 hover:text-white hover:bg-gray-800'" + :class="estActif(link.to) ? 'bg-gray-800 text-white' : 'text-gray-400 hover:text-white hover:bg-gray-800'" > {{ link.label }} @@ -44,13 +44,21 @@ diff --git a/frontend/src/router.js b/frontend/src/router.js index 73bb1be..75e61a6 100644 --- a/frontend/src/router.js +++ b/frontend/src/router.js @@ -5,6 +5,7 @@ import AnalyticsPage from './pages/AnalyticsPage.vue' import RevenusPage from './pages/RevenusPage.vue' import DocumentsPage from './pages/DocumentsPage.vue' import LogementsPage from './pages/LogementsPage.vue' +import LotPage from './pages/LotPage.vue' import EditDocumentPage from './pages/EditDocumentPage.vue' import ReExtractionPage from './pages/ReExtractionPage.vue' import ConfigPage from './pages/ConfigPage.vue' @@ -61,6 +62,13 @@ const routes = [ name: 'logements', component: LogementsPage }, + // Le lot vit dans l'URL : une fiche se partage et survit au rechargement. + // `/lots` sans identifiant ouvre le premier lot plutôt qu'une page vide. + { + path: '/lots/:id?', + name: 'lot', + component: LotPage + }, { path: '/documents/:id/edit', name: 'edit-document',