Медиа
diff --git a/src/pages/Route/RouteEditPage/index.tsx b/src/pages/Route/RouteEditPage/index.tsx
new file mode 100644
index 0000000..887e010
--- /dev/null
+++ b/src/pages/Route/RouteEditPage/index.tsx
@@ -0,0 +1,225 @@
+import {
+ Button,
+ Paper,
+ TextField,
+ Select,
+ MenuItem,
+ FormControl,
+ InputLabel,
+ Typography,
+ Box,
+} from "@mui/material";
+
+import { observer } from "mobx-react-lite";
+import { ArrowLeft, Save } from "lucide-react";
+import { useEffect, useState } from "react";
+import { useNavigate, useParams } from "react-router-dom";
+
+import { carrierStore } from "../../../shared/store/CarrierStore";
+import { articlesStore } from "../../../shared/store/ArticlesStore";
+import { routeStore } from "../../../shared/store/RouteStore";
+import { toast } from "react-toastify";
+
+export const RouteEditPage = observer(() => {
+ const navigate = useNavigate();
+ const { id } = useParams();
+ const { editRouteData } = routeStore;
+ const [isLoading, setIsLoading] = useState(false);
+
+ useEffect(() => {
+ const fetchData = async () => {
+ const response = await routeStore.getRoute(Number(id));
+ routeStore.setEditRouteData(response);
+ carrierStore.getCarriers();
+ articlesStore.getArticleList();
+ };
+ fetchData();
+ }, [id]);
+
+ const handleSave = async () => {
+ setIsLoading(true);
+ await routeStore.editRoute(Number(id));
+ toast.success("Маршрут успешно сохранен");
+ setIsLoading(false);
+ };
+
+ return (
+
+
+
+
+
+ Редактировать маршрут
+
+
+
+ Выберите перевозчика
+
+
+
+ routeStore.setEditRouteData({
+ route_number: e.target.value,
+ })
+ }
+ />
+ p.join(" ")).join("\n") || ""}
+ onChange={(e) =>
+ routeStore.setEditRouteData({
+ path: e.target.value
+ .split("\n")
+ .map((line) => line.split(" ").map(Number)),
+ })
+ }
+ />
+
+ routeStore.setEditRouteData({
+ route_sys_number: e.target.value,
+ })
+ }
+ />
+
+ Обращение губернатора
+
+
+
+ Прямой/обратный маршрут
+
+
+
+ routeStore.setEditRouteData({
+ scale_min: Number(e.target.value),
+ })
+ }
+ />
+
+ routeStore.setEditRouteData({
+ scale_max: Number(e.target.value),
+ })
+ }
+ />
+
+ routeStore.setEditRouteData({
+ rotate: Number(e.target.value),
+ })
+ }
+ />
+
+ routeStore.setEditRouteData({
+ center_latitude: Number(e.target.value),
+ })
+ }
+ />
+
+ routeStore.setEditRouteData({
+ center_longitude: Number(e.target.value),
+ })
+ }
+ />
+
+
+ }
+ onClick={handleSave}
+ disabled={isLoading}
+ >
+ Сохранить
+
+
+
+ );
+});
diff --git a/src/pages/Route/RouteListPage/index.tsx b/src/pages/Route/RouteListPage/index.tsx
index d3bd299..dab1c0a 100644
--- a/src/pages/Route/RouteListPage/index.tsx
+++ b/src/pages/Route/RouteListPage/index.tsx
@@ -2,7 +2,7 @@ import { DataGrid, GridColDef, GridRenderCellParams } from "@mui/x-data-grid";
import { languageStore, routeStore } from "@shared";
import { useEffect, useState } from "react";
import { observer } from "mobx-react-lite";
-import { Eye, Trash2 } from "lucide-react";
+import { Eye, Map, Pencil, Trash2 } from "lucide-react";
import { useNavigate } from "react-router-dom";
import { CreateButton, DeleteModal, LanguageSwitcher } from "@widgets";
@@ -49,15 +49,21 @@ export const RouteListPage = observer(() => {
{
field: "actions",
headerName: "Действия",
- width: 140,
+ width: 250,
align: "center",
headerAlign: "center",
renderCell: (params: GridRenderCellParams) => {
return (
-