diff --git a/frontend/modules/transport/pages/carriers/[id]/index.vue b/frontend/modules/transport/pages/carriers/[id]/index.vue
index 2c57c57..612206f 100644
--- a/frontend/modules/transport/pages/carriers/[id]/index.vue
+++ b/frontend/modules/transport/pages/carriers/[id]/index.vue
@@ -124,24 +124,24 @@
-
+
|
{{ group.label }}
|
- {{ headerTitle }} |
- {{ row.apro }} |
- {{ row.delivery }} |
- {{ row.forfait }} |
- {{ row.tonne }} |
- {{ row.indexation }} |
- {{ row.state }} |
+ {{ headerTitle }} |
+ {{ row.apro }} |
+ {{ row.delivery }} |
+ {{ row.forfait }} |
+ {{ row.tonne }} |
+ {{ row.indexation }} |
+ {{ row.state }} |
@@ -337,6 +337,27 @@ const priceGroups = computed(() => {
const hasPrices = computed(() => priceGroups.value.length > 0)
+/**
+ * Bordure basse d'une cellule de données :
+ * - ligne interne d'un groupe → fine grise ;
+ * - dernière ligne d'un groupe NON final → épaisse noire (séparateur de groupe) ;
+ * - dernière ligne du DERNIER groupe → aucune (le cadre du tableau s'en charge,
+ * évite la double bordure tout en bas).
+ */
+function dataBorder(group: PriceGroupView, i: number, gi: number): string {
+ const isLastRow = i === group.rows.length - 1
+ const isLastGroup = gi === priceGroups.value.length - 1
+ if (!isLastRow) {
+ return 'border-b border-m-muted/30'
+ }
+ return isLastGroup ? '' : 'border-b-2 border-black'
+}
+
+/** Bordure basse de la cellule de groupe fusionnée (séparateur épais sauf dernier groupe). */
+function groupBorder(gi: number): string {
+ return gi === priceGroups.value.length - 1 ? '' : 'border-b-2 border-black'
+}
+
// ── Export XLSX des prix ─────────────────────────────────────────────────────
const exporting = ref(false)