import { Paper, TextField, Select, MenuItem, FormControl, InputLabel, Button, Box, FormControlLabel, Checkbox, } from "@mui/material"; import { observer } from "mobx-react-lite"; import { ArrowLeft, Loader2, Save } from "lucide-react"; import { useNavigate, useParams } from "react-router-dom"; import { useEffect, useState } from "react"; import { carrierStore, languageStore, VEHICLE_TYPES, vehicleStore, LoadingSpinner, } from "@shared"; import { toast } from "react-toastify"; export const VehicleEditPage = observer(() => { const navigate = useNavigate(); const { id } = useParams(); const { getVehicle, vehicle, editVehicleData, setEditVehicleData, editVehicle, } = vehicleStore; const { getCarriers } = carrierStore; const { language } = languageStore; const [isLoading, setIsLoading] = useState(false); const [isLoadingData, setIsLoadingData] = useState(true); useEffect(() => { // Устанавливаем русский язык при загрузке страницы languageStore.setLanguage("ru"); }, []); useEffect(() => { const fetchAndSetVehicleData = async () => { if (!id) { setIsLoadingData(false); return; } setIsLoadingData(true); try { await getVehicle(Number(id)); await getCarriers(language); setEditVehicleData({ tail_number: vehicle[Number(id)]?.vehicle.tail_number ?? "", type: vehicle[Number(id)]?.vehicle.type ?? 0, carrier: vehicle[Number(id)]?.vehicle.carrier ?? "", carrier_id: vehicle[Number(id)]?.vehicle.carrier_id ?? 0, model: vehicle[Number(id)]?.vehicle.model ?? "", snapshot_update_blocked: vehicle[Number(id)]?.vehicle.snapshot_update_blocked ?? false, }); } finally { setIsLoadingData(false); } }; fetchAndSetVehicleData(); }, [id, language]); const handleEdit = async () => { try { setIsLoading(true); await editVehicle(Number(id), editVehicleData); toast.success("Транспортное средство успешно обновлено"); navigate("/devices"); } catch (error) { toast.error("Ошибка при обновлении транспортного средства"); } finally { setIsLoading(false); } }; if (isLoadingData) { return ( ); } return (
setEditVehicleData({ ...editVehicleData, tail_number: e.target.value, }) } /> Тип Перевозчик setEditVehicleData({ ...editVehicleData, model: e.target.value, }) } placeholder="Произвольное название модели" /> setEditVehicleData({ ...editVehicleData, snapshot_update_blocked: e.target.checked, }) } color="primary" /> } label="Блокировка обновления ПО" />
); });