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)