fix(transport) : indexation réellement plafonnée à 100 % — re-synchronise le champ amount contrôlé via :key (ERP-170)
This commit is contained in:
@@ -64,13 +64,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<template v-if="showCharteredFields">
|
<template v-if="showCharteredFields">
|
||||||
<MalioInputAmount
|
<MalioInputAmount
|
||||||
|
:key="indexationKey"
|
||||||
:model-value="main.indexationRate"
|
:model-value="main.indexationRate"
|
||||||
:label="t('transport.carriers.form.main.indexationRate')"
|
:label="t('transport.carriers.form.main.indexationRate')"
|
||||||
icon-name="mdi:percent"
|
icon-name="mdi:percent"
|
||||||
icon-position="right"
|
icon-position="right"
|
||||||
:required="true"
|
:required="true"
|
||||||
:error="mainErrors.errors.indexationRate"
|
:error="mainErrors.errors.indexationRate"
|
||||||
@update:model-value="(v: string) => main.indexationRate = clampPercent(v)"
|
@update:model-value="onIndexationInput"
|
||||||
/>
|
/>
|
||||||
<MalioSelect
|
<MalioSelect
|
||||||
:model-value="main.containerType"
|
:model-value="main.containerType"
|
||||||
@@ -308,6 +309,19 @@ function apiErrorMessage(err: unknown): string {
|
|||||||
return extractApiErrorMessage(data) || t('transport.carriers.toast.error')
|
return extractApiErrorMessage(data) || t('transport.carriers.toast.error')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Indexation plafonnée à 100 % : la clé force le ré-affichage du MalioInputAmount
|
||||||
|
// (contrôlé) quand le plafonnement laisse le modelValue inchangé.
|
||||||
|
const indexationKey = ref(0)
|
||||||
|
|
||||||
|
/** Saisie de l'indexation : plafonne à 100 et re-synchronise le champ si plafonné. */
|
||||||
|
function onIndexationInput(value: string): void {
|
||||||
|
const clamped = clampPercent(value)
|
||||||
|
main.indexationRate = clamped
|
||||||
|
if (clamped !== value) {
|
||||||
|
indexationKey.value += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function goBack(): void {
|
function goBack(): void {
|
||||||
router.push(`/carriers/${carrierId}`)
|
router.push(`/carriers/${carrierId}`)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,8 +86,11 @@
|
|||||||
« Affreter ». La ligne 1 étant pleine (4 colonnes), ils démarrent
|
« Affreter ». La ligne 1 étant pleine (4 colonnes), ils démarrent
|
||||||
naturellement en colonne 1 de la ligne 2. -->
|
naturellement en colonne 1 de la ligne 2. -->
|
||||||
<template v-if="showCharteredFields">
|
<template v-if="showCharteredFields">
|
||||||
<!-- Indexation : montant en % (icône à droite), plafonné à 100. -->
|
<!-- Indexation : montant en % (icône à droite), plafonné à 100. La
|
||||||
|
:key force le ré-affichage du champ contrôlé quand on plafonne
|
||||||
|
(sinon le modelValue inchangé n'est pas re-synchronisé par Vue). -->
|
||||||
<MalioInputAmount
|
<MalioInputAmount
|
||||||
|
:key="indexationKey"
|
||||||
:model-value="main.indexationRate"
|
:model-value="main.indexationRate"
|
||||||
:label="t('transport.carriers.form.main.indexationRate')"
|
:label="t('transport.carriers.form.main.indexationRate')"
|
||||||
icon-name="mdi:percent"
|
icon-name="mdi:percent"
|
||||||
@@ -95,7 +98,7 @@
|
|||||||
:required="true"
|
:required="true"
|
||||||
:readonly="mainLocked"
|
:readonly="mainLocked"
|
||||||
:error="mainErrors.errors.indexationRate"
|
:error="mainErrors.errors.indexationRate"
|
||||||
@update:model-value="(v: string) => main.indexationRate = clampPercent(v)"
|
@update:model-value="onIndexationInput"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- Contenant : Benne / Fond mouvant (RG-4.03). -->
|
<!-- Contenant : Benne / Fond mouvant (RG-4.03). -->
|
||||||
@@ -713,6 +716,19 @@ async function confirmIntegrate(): Promise<void> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Indexation plafonnée à 100 % : la clé force le ré-affichage du MalioInputAmount
|
||||||
|
// (contrôlé) quand le plafonnement laisse le modelValue inchangé.
|
||||||
|
const indexationKey = ref(0)
|
||||||
|
|
||||||
|
/** Saisie de l'indexation : plafonne à 100 et re-synchronise le champ si plafonné. */
|
||||||
|
function onIndexationInput(value: string): void {
|
||||||
|
const clamped = clampPercent(value)
|
||||||
|
main.indexationRate = clamped
|
||||||
|
if (clamped !== value) {
|
||||||
|
indexationKey.value += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Retour vers le repertoire transporteurs (fleche d'en-tete). */
|
/** Retour vers le repertoire transporteurs (fleche d'en-tete). */
|
||||||
function goBack(): void {
|
function goBack(): void {
|
||||||
router.push('/carriers')
|
router.push('/carriers')
|
||||||
|
|||||||
Reference in New Issue
Block a user