fix: ispravljen prikaz Vozilo servisera u WorkOrderDetailModal
Some checks failed
ERP CI/CD Pipeline / test (push) Has been cancelled
ERP CI/CD Pipeline / Deploy (server git pull + compose) (push) Has been cancelled

- Vozilo servisera sada prikazuje servicer_vehicle_* polja (registracija,
  marka/model, km start/end, trosak goriva) umjesto craneInfo podataka
- start_mileage/end_mileage (km dizalice na nalogu) premjesteni u Podaci dizalice
- servicer_vehicle_* polja dodana u form state, useEffect init i submit payload
- Trošak goriva (EUR) dodan kao novo polje u sekciji Vozilo servisera

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
mariomitte
2026-07-17 11:12:14 +02:00
parent 346682b172
commit 5e7ec72a4e

View File

@@ -116,6 +116,11 @@ export default function WorkOrderDetailModal({ open, workOrder, onClose, onSubmi
travel_end_at: workOrder.travel_end_at ? String(workOrder.travel_end_at).slice(0, 16) : '', travel_end_at: workOrder.travel_end_at ? String(workOrder.travel_end_at).slice(0, 16) : '',
purpose: workOrder.purpose || '', purpose: workOrder.purpose || '',
notes: workOrder.notes || '', notes: workOrder.notes || '',
servicer_vehicle_registration: workOrder.servicer_vehicle_registration || '',
servicer_vehicle_make_model: workOrder.servicer_vehicle_make_model || '',
servicer_vehicle_start_mileage: workOrder.servicer_vehicle_start_mileage == null ? '' : String(workOrder.servicer_vehicle_start_mileage),
servicer_vehicle_end_mileage: workOrder.servicer_vehicle_end_mileage == null ? '' : String(workOrder.servicer_vehicle_end_mileage),
servicer_vehicle_fuel_cost: workOrder.servicer_vehicle_fuel_cost == null ? '' : String(workOrder.servicer_vehicle_fuel_cost),
crane_current_mileage: String(workOrder.craneInfo?.current_mileage ?? ''), crane_current_mileage: String(workOrder.craneInfo?.current_mileage ?? ''),
crane_superstructure_working_hours: String(workOrder.craneInfo?.superstructure_working_hours ?? ''), crane_superstructure_working_hours: String(workOrder.craneInfo?.superstructure_working_hours ?? ''),
crane_chassis_working_hours: String(workOrder.craneInfo?.chassis_working_hours ?? ''), crane_chassis_working_hours: String(workOrder.craneInfo?.chassis_working_hours ?? ''),
@@ -416,6 +421,11 @@ export default function WorkOrderDetailModal({ open, workOrder, onClose, onSubmi
status: form.status, status: form.status,
start_mileage: startMileage, start_mileage: startMileage,
end_mileage: endMileage, end_mileage: endMileage,
servicer_vehicle_registration: form.servicer_vehicle_registration.trim(),
servicer_vehicle_make_model: form.servicer_vehicle_make_model.trim(),
servicer_vehicle_start_mileage: form.servicer_vehicle_start_mileage === '' ? null : Number(form.servicer_vehicle_start_mileage),
servicer_vehicle_end_mileage: form.servicer_vehicle_end_mileage === '' ? null : Number(form.servicer_vehicle_end_mileage),
servicer_vehicle_fuel_cost: form.servicer_vehicle_fuel_cost === '' ? null : Number(form.servicer_vehicle_fuel_cost),
location: form.location.trim(), location: form.location.trim(),
travel_start_at: travelStart ? travelStart.toISOString() : null, travel_start_at: travelStart ? travelStart.toISOString() : null,
travel_end_at: travelEnd ? travelEnd.toISOString() : null, travel_end_at: travelEnd ? travelEnd.toISOString() : null,
@@ -610,42 +620,55 @@ export default function WorkOrderDetailModal({ open, workOrder, onClose, onSubmi
<h4 className="mb-2 text-sm font-semibold text-text-main">Vozilo servisera</h4> <h4 className="mb-2 text-sm font-semibold text-text-main">Vozilo servisera</h4>
<div className="grid gap-4 sm:grid-cols-2"> <div className="grid gap-4 sm:grid-cols-2">
<label className="flex flex-col gap-1 text-sm"> <label className="flex flex-col gap-1 text-sm">
<span className="font-medium text-text-main">Registracija</span> <span className="font-medium text-text-main">Registracija vozila servisera</span>
<input <input
type="text" type="text"
value={workOrder?.craneInfo?.registration_number || ''} value={form.servicer_vehicle_registration}
className="rounded-lg border border-border-hairline bg-canvas-deep px-3 py-2 text-text-muted" onInput={(event) => setForm({ ...form, servicer_vehicle_registration: event.currentTarget.value })}
disabled
/>
</label>
<label className="flex flex-col gap-1 text-sm">
<span className="font-medium text-text-main">Marka/Model</span>
<input
type="text"
value={workOrder?.craneInfo?.display_name || ''}
className="rounded-lg border border-border-hairline bg-canvas-deep px-3 py-2 text-text-muted"
disabled
/>
</label>
<label className="flex flex-col gap-1 text-sm">
<span className="font-medium text-text-main">Početna kilometraža {form.has_travel_order ? '*' : ''}</span>
<input
type="number"
min="0"
value={form.start_mileage}
onInput={(event) => setForm({ ...form, start_mileage: event.currentTarget.value })}
className="rounded-lg border border-border-hairline bg-canvas-base px-3 py-2 text-text-main disabled:bg-canvas-deep" className="rounded-lg border border-border-hairline bg-canvas-base px-3 py-2 text-text-main disabled:bg-canvas-deep"
disabled={!isEditing} disabled={!isEditing}
/> />
</label> </label>
<label className="flex flex-col gap-1 text-sm"> <label className="flex flex-col gap-1 text-sm">
<span className="font-medium text-text-main">Završna kilometraža</span> <span className="font-medium text-text-main">Marka/Model vozila servisera</span>
<input
type="text"
value={form.servicer_vehicle_make_model}
onInput={(event) => setForm({ ...form, servicer_vehicle_make_model: event.currentTarget.value })}
className="rounded-lg border border-border-hairline bg-canvas-base px-3 py-2 text-text-main disabled:bg-canvas-deep"
disabled={!isEditing}
/>
</label>
<label className="flex flex-col gap-1 text-sm">
<span className="font-medium text-text-main">Početna km vozila servisera</span>
<input <input
type="number" type="number"
min="0" min="0"
value={form.end_mileage} value={form.servicer_vehicle_start_mileage}
onInput={(event) => setForm({ ...form, end_mileage: event.currentTarget.value })} onInput={(event) => setForm({ ...form, servicer_vehicle_start_mileage: event.currentTarget.value })}
className="rounded-lg border border-border-hairline bg-canvas-base px-3 py-2 text-text-main disabled:bg-canvas-deep"
disabled={!isEditing}
/>
</label>
<label className="flex flex-col gap-1 text-sm">
<span className="font-medium text-text-main">Završna km vozila servisera</span>
<input
type="number"
min="0"
value={form.servicer_vehicle_end_mileage}
onInput={(event) => setForm({ ...form, servicer_vehicle_end_mileage: event.currentTarget.value })}
className="rounded-lg border border-border-hairline bg-canvas-base px-3 py-2 text-text-main disabled:bg-canvas-deep"
disabled={!isEditing}
/>
</label>
<label className="flex flex-col gap-1 text-sm">
<span className="font-medium text-text-main">Trošak goriva (EUR)</span>
<input
type="number"
min="0"
step="0.01"
value={form.servicer_vehicle_fuel_cost}
onInput={(event) => setForm({ ...form, servicer_vehicle_fuel_cost: event.currentTarget.value })}
className="rounded-lg border border-border-hairline bg-canvas-base px-3 py-2 text-text-main disabled:bg-canvas-deep" className="rounded-lg border border-border-hairline bg-canvas-base px-3 py-2 text-text-main disabled:bg-canvas-deep"
disabled={!isEditing} disabled={!isEditing}
/> />
@@ -656,6 +679,28 @@ export default function WorkOrderDetailModal({ open, workOrder, onClose, onSubmi
<div className="rounded-xl border border-border-hairline bg-canvas-base p-3"> <div className="rounded-xl border border-border-hairline bg-canvas-base p-3">
<h4 className="mb-2 text-sm font-semibold text-text-main">Podaci dizalice</h4> <h4 className="mb-2 text-sm font-semibold text-text-main">Podaci dizalice</h4>
<div className="grid gap-4 sm:grid-cols-2"> <div className="grid gap-4 sm:grid-cols-2">
<label className="flex flex-col gap-1 text-sm">
<span className="font-medium text-text-main">Početna km dizalice (nalog)</span>
<input
type="number"
min="0"
value={form.start_mileage}
onInput={(event) => setForm({ ...form, start_mileage: event.currentTarget.value })}
className="rounded-lg border border-border-hairline bg-canvas-base px-3 py-2 text-text-main disabled:bg-canvas-deep"
disabled={!isEditing}
/>
</label>
<label className="flex flex-col gap-1 text-sm">
<span className="font-medium text-text-main">Završna km dizalice (nalog)</span>
<input
type="number"
min="0"
value={form.end_mileage}
onInput={(event) => setForm({ ...form, end_mileage: event.currentTarget.value })}
className="rounded-lg border border-border-hairline bg-canvas-base px-3 py-2 text-text-main disabled:bg-canvas-deep"
disabled={!isEditing}
/>
</label>
<label className="flex flex-col gap-1 text-sm"> <label className="flex flex-col gap-1 text-sm">
<span className="font-medium text-text-main">Trenutna km dizalice</span> <span className="font-medium text-text-main">Trenutna km dizalice</span>
<input <input