fix : corrections de tous les retours
This commit is contained in:
@@ -22,24 +22,27 @@
|
||||
wrapper-class="col-start-1 row-start-3"
|
||||
/>
|
||||
<!-- Type d'expédition -->
|
||||
<div class="col-start-1 row-start-4">
|
||||
<label class="font-bold uppercase text-xl mb-2">
|
||||
Type d'expédition
|
||||
</label>
|
||||
<div class="grid grid-cols-2 gap-x-8">
|
||||
<div
|
||||
v-for="type in bovineShipment"
|
||||
:key="type.id"
|
||||
class="mt-2 flex flex-row gap-6"
|
||||
>
|
||||
<UiNumberInput
|
||||
:label="type.label"
|
||||
v-model="bovineQuantities[String(type.id)]"
|
||||
:placeholder="0"
|
||||
:min="0"
|
||||
:max="10"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-start-1 row-start-4 h-[64px]">
|
||||
<div class="flex items-end gap-8">
|
||||
<UiRadioGroup
|
||||
id="shipment-type"
|
||||
name="shipment-type"
|
||||
label="Type d'expédition"
|
||||
v-model="selectedShipmentTypeId"
|
||||
:options="bovineShipment.map((type) => ({
|
||||
value: String(type.id),
|
||||
label: type.label
|
||||
}))"
|
||||
/>
|
||||
<UiNumberInput
|
||||
id="shipment-type-quantity"
|
||||
label="Quantité"
|
||||
v-model="shipmentQuantity"
|
||||
:placeholder="0"
|
||||
:min="0"
|
||||
:max="1200"
|
||||
:disabled="!selectedShipmentTypeId"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Client -->
|
||||
@@ -97,6 +100,7 @@
|
||||
}))"
|
||||
:loading="isLoadingDrivers"
|
||||
wrapper-class="col-start-2 row-start-4"
|
||||
v-if="isLiotCarrier"
|
||||
/>
|
||||
<!-- Plaque d'immatriculation (hors LIOT) -->
|
||||
<div v-if="!isLiotCarrier" class="col-start-2 row-start-5">
|
||||
@@ -177,8 +181,9 @@ const isLoadingDrivers = ref(false)
|
||||
const authStore = useAuthStore()
|
||||
const shipmentStore = useShipmentStore()
|
||||
const router = useRouter()
|
||||
const bovineQuantities = ref<Record<string, number | null>>({})
|
||||
const bovineShipment = ref<ShipmentTypeData[]>([])
|
||||
const selectedShipmentTypeId = ref('')
|
||||
const shipmentQuantity = ref<number | null>(0)
|
||||
// Transporteur sélectionné dans le formulaire
|
||||
const selectedCarrier = computed(() =>
|
||||
carriers.value.find((carrier) => String(carrier.id) === form.carrierId) ?? null
|
||||
@@ -328,15 +333,21 @@ watch(
|
||||
form.driverId = shipment?.driver?.id ? String(shipment.driver.id) : ''
|
||||
form.vehicleId = shipment?.vehicle?.id ? String(shipment.vehicle.id) : ''
|
||||
if (!shipment || !shipment.bovinShipments) {
|
||||
bovineQuantities.value = {}
|
||||
selectedShipmentTypeId.value = ''
|
||||
shipmentQuantity.value = 0
|
||||
} else {
|
||||
const next: Record<string, number | null> = {}
|
||||
for (const entry of shipment.bovinShipments) {
|
||||
const selectedEntry = shipment.bovinShipments.find((entry) => {
|
||||
const typeId = entry.shipmentType?.id
|
||||
if (!typeId) continue
|
||||
next[String(typeId)] = entry.nbBovinSend ?? null
|
||||
return Boolean(typeId) && Number(entry.nbBovinSend ?? 0) > 0
|
||||
}) ?? shipment.bovinShipments.find((entry) => Boolean(entry.shipmentType?.id))
|
||||
|
||||
if (!selectedEntry?.shipmentType?.id) {
|
||||
selectedShipmentTypeId.value = ''
|
||||
shipmentQuantity.value = 0
|
||||
} else {
|
||||
selectedShipmentTypeId.value = String(selectedEntry.shipmentType.id)
|
||||
shipmentQuantity.value = selectedEntry.nbBovinSend ?? 0
|
||||
}
|
||||
bovineQuantities.value = next
|
||||
}
|
||||
isHydrating.value = false
|
||||
},
|
||||
@@ -464,16 +475,22 @@ watch(
|
||||
}
|
||||
)
|
||||
const buildDesiredBovinShipments = () => {
|
||||
return bovineShipment.value
|
||||
.map((type) => {
|
||||
const raw = bovineQuantities.value[String(type.id)]
|
||||
const quantity = raw === null || raw === undefined ? 0 : Number(raw)
|
||||
return {
|
||||
type,
|
||||
quantity: Number.isFinite(quantity) ? Math.max(0, Math.trunc(quantity)) : 0
|
||||
}
|
||||
})
|
||||
.filter((entry) => entry.quantity > 0)
|
||||
const typeId = Number(selectedShipmentTypeId.value)
|
||||
if (!Number.isFinite(typeId)) {
|
||||
return []
|
||||
}
|
||||
const type = bovineShipment.value.find((entry) => entry.id === typeId)
|
||||
if (!type) {
|
||||
return []
|
||||
}
|
||||
const raw = shipmentQuantity.value
|
||||
const quantity = raw === null || raw === undefined ? 0 : Number(raw)
|
||||
const normalizedQuantity = Number.isFinite(quantity) ? Math.max(0, Math.trunc(quantity)) : 0
|
||||
if (normalizedQuantity <= 0) {
|
||||
return []
|
||||
}
|
||||
|
||||
return [{type, quantity: normalizedQuantity}]
|
||||
}
|
||||
const syncBovinShipments = async (
|
||||
shipmentId: number,
|
||||
|
||||
Reference in New Issue
Block a user