._.
This commit is contained in:
parent
e36d654615
commit
094c1749e3
30
src/api.jsx
30
src/api.jsx
@ -560,3 +560,33 @@ export const calculateTotalOrder = async (deadline, robotsCount) => {
|
|||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const updateDeliveryOrderRoute = async (
|
||||||
|
deliveryOrderId,
|
||||||
|
estimatedRouteTime,
|
||||||
|
route
|
||||||
|
) => {
|
||||||
|
console.log({
|
||||||
|
estimated_route_time_in_minutes: estimatedRouteTime,
|
||||||
|
route: route,
|
||||||
|
});
|
||||||
|
try {
|
||||||
|
const response = await axios.put(
|
||||||
|
`${API_URL}/delivery-orders/${deliveryOrderId}/route`,
|
||||||
|
{
|
||||||
|
estimated_route_time_in_minutes: estimatedRouteTime,
|
||||||
|
route: route,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${getAuthToken()}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Ошибка при обновлении маршрута подзаказа:", error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|||||||
@ -1,5 +1,9 @@
|
|||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import { getDeliveryAccessories, getDeliveryOrderDetails } from "../api.jsx";
|
import {
|
||||||
|
getDeliveryAccessories,
|
||||||
|
getDeliveryOrderDetails,
|
||||||
|
updateDeliveryOrderRoute,
|
||||||
|
} from "../api.jsx";
|
||||||
import { useParams } from "react-router-dom";
|
import { useParams } from "react-router-dom";
|
||||||
import { getCoordinates } from "../geocoder.jsx";
|
import { getCoordinates } from "../geocoder.jsx";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
@ -28,7 +32,7 @@ const DeliveryOrderDetails = () => {
|
|||||||
const [route, setRoute] = useState([]);
|
const [route, setRoute] = useState([]);
|
||||||
const [totalCost, setTotalCost] = useState(0);
|
const [totalCost, setTotalCost] = useState(0);
|
||||||
const [truckCount, setTruckCount] = useState(0);
|
const [truckCount, setTruckCount] = useState(0);
|
||||||
const [truckName, settruckName] = useState("");
|
const [truckName, setTruckName] = useState("");
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -42,7 +46,7 @@ const DeliveryOrderDetails = () => {
|
|||||||
);
|
);
|
||||||
setTotalCost(deliveryOrderDetails.price);
|
setTotalCost(deliveryOrderDetails.price);
|
||||||
setTruckCount(deliveryOrderDetails.count_trucks);
|
setTruckCount(deliveryOrderDetails.count_trucks);
|
||||||
settruckName(deliveryOrderDetails.truck_name);
|
setTruckName(deliveryOrderDetails.truck_name);
|
||||||
|
|
||||||
const accessories = await getDeliveryAccessories(deliveryOrderId);
|
const accessories = await getDeliveryAccessories(deliveryOrderId);
|
||||||
setDeliveryAccessories(accessories);
|
setDeliveryAccessories(accessories);
|
||||||
@ -65,6 +69,10 @@ const DeliveryOrderDetails = () => {
|
|||||||
|
|
||||||
const fullCoordinates = [...coords, DELIVERY_CITY];
|
const fullCoordinates = [...coords, DELIVERY_CITY];
|
||||||
|
|
||||||
|
if (
|
||||||
|
!deliveryOrderDetails.route ||
|
||||||
|
deliveryOrderDetails.estimated_route_time_in_minutes === null
|
||||||
|
) {
|
||||||
if (fullCoordinates.length > 1) {
|
if (fullCoordinates.length > 1) {
|
||||||
const waypoints = fullCoordinates
|
const waypoints = fullCoordinates
|
||||||
.map(({ longitude, latitude }) => `${longitude},${latitude}`)
|
.map(({ longitude, latitude }) => `${longitude},${latitude}`)
|
||||||
@ -80,9 +88,18 @@ const DeliveryOrderDetails = () => {
|
|||||||
const decodedRoute = polyline.decode(geometry);
|
const decodedRoute = polyline.decode(geometry);
|
||||||
setRoute(decodedRoute);
|
setRoute(decodedRoute);
|
||||||
const duration = data.routes[0].duration;
|
const duration = data.routes[0].duration;
|
||||||
console.log(`Время в пути: ${duration / 60} минут`);
|
|
||||||
|
await updateDeliveryOrderRoute(
|
||||||
|
deliveryOrderId,
|
||||||
|
duration / 60,
|
||||||
|
decodedRoute
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
const decodedRoute = deliveryOrderDetails.route;
|
||||||
|
setRoute(decodedRoute);
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error.response && error.response.status === 401) {
|
if (error.response && error.response.status === 401) {
|
||||||
navigate("/login");
|
navigate("/login");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user