diff --git a/mechanic-pwa/frontend/src/pages/repairs/CreateRepairPage.tsx b/mechanic-pwa/frontend/src/pages/repairs/CreateRepairPage.tsx index e7e881a..c08aeeb 100644 --- a/mechanic-pwa/frontend/src/pages/repairs/CreateRepairPage.tsx +++ b/mechanic-pwa/frontend/src/pages/repairs/CreateRepairPage.tsx @@ -67,8 +67,6 @@ interface PartRow { interface OilChangeState { enabled: boolean; - mileage_at_change: number | null; - mileage_is_dirty: boolean; // У24: мягкая подписка с шапочным next_in_km: number; sticker: PhotoState | null; } @@ -107,8 +105,6 @@ export default function CreateRepairPage() { const [parts, setParts] = useState([]); const [oilChange, setOilChange] = useState({ enabled: false, - mileage_at_change: null, - mileage_is_dirty: false, next_in_km: 10000, sticker: null, }); @@ -130,13 +126,9 @@ export default function CreateRepairPage() { .catch((e) => setCtxError((e as Error).message || "Не удалось загрузить машину")); }, [carId]); - // У24: мягкая подписка пробега блока масла на шапочный. - useEffect(() => { - if (oilChange.enabled && !oilChange.mileage_is_dirty) { - setOilChange((oc) => ({ ...oc, mileage_at_change: mileage })); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [mileage, oilChange.enabled]); + // У24 упрощено: пробег ввода в форме теперь один — главный «Пробег (км)» + // в шапке. На submit подставляется и в oil_change.mileage_at_change, чтобы + // не заставлять механика вводить одно и то же дважды. // ── Photo upload ───────────────────────────────────────────────────────── @@ -325,7 +317,8 @@ export default function CreateRepairPage() { oil_change: oilChange.enabled ? { enabled: true, - mileage_at_change: oilChange.mileage_at_change, + // Один источник истины — главный пробег ремонта (см. У24). + mileage_at_change: mileage, next_in_km: oilChange.next_in_km, sticker_photo_uuid: oilChange.sticker?.status === "uploaded" @@ -625,21 +618,6 @@ export default function CreateRepairPage() { {oilChange.enabled && (
-
- - - setOilChange((oc) => ({ - ...oc, - mileage_at_change: e.target.value === "" ? null : Number(e.target.value), - mileage_is_dirty: true, - })) - } - /> -
(null); const [works, setWorks] = useState([]); const [parts, setParts] = useState([]); - const [oil, setOil] = useState({ enabled: false, mileage_at_change: null, next_in_km: null }); + const [oil, setOil] = useState({ enabled: false, next_in_km: null }); const [worksPicker, setWorksPicker] = useState<{ open: boolean; q: string; results: MechWork[] }>( { open: false, q: "", results: [] } @@ -89,7 +88,6 @@ export default function EditRepairPage() { if (d.oil_change) { setOil({ enabled: true, - mileage_at_change: d.oil_change.mileage_at_change, next_in_km: d.oil_change.next_in_km, }); } @@ -174,7 +172,8 @@ export default function EditRepairPage() { qty: p.qty, })), oil_change: oil.enabled - ? { enabled: true, mileage_at_change: oil.mileage_at_change, next_in_km: oil.next_in_km } + // Один источник истины — главный пробег ремонта. + ? { enabled: true, mileage_at_change: mileage, next_in_km: oil.next_in_km } : { enabled: false, mileage_at_change: null, next_in_km: null }, }); navigate(`/repairs/${detail.id}`, { replace: true }); @@ -343,29 +342,16 @@ export default function EditRepairPage() { Замена масла {oil.enabled && ( -
-
- - setOil((o) => ({ - ...o, mileage_at_change: e.target.value === "" ? null : Number(e.target.value), - }))} - /> -
-
- - setOil((o) => ({ - ...o, next_in_km: e.target.value === "" ? null : Number(e.target.value), - }))} - /> -
+
+ + setOil((o) => ({ + ...o, next_in_km: e.target.value === "" ? null : Number(e.target.value), + }))} + />
)}