diff --git a/src/api.jsx b/src/api.jsx index e1d3af4..a8a00a0 100755 --- a/src/api.jsx +++ b/src/api.jsx @@ -517,10 +517,10 @@ export const getDeliveryAccessories = async (deliveryOrderId) => { }, } ); - return response.data; + return response.data; } catch (error) { console.log("Ошибка при загрузке доставок:", error); - throw error; + throw error; } }; @@ -540,4 +540,23 @@ export const getDeliveryOrderDetails = async (deliveryOrderId) => { console.log("Ошибка при загрузке деталей заказа доставки:", error); throw error; } -}; \ No newline at end of file +}; + +export const calculateTotalOrder = async () => { + try { + const response = await axios.post( + `${API_URL}/total-orders/calculate`, + null, + { + headers: { + Authorization: `Bearer ${getAuthToken()}`, + "Content-Type": "application/json", + }, + } + ); + return response.data; + } catch (error) { + console.log("Ошибка при запуске расчета заказа:", error); + throw error; + } +}; diff --git a/src/pages/Home.jsx b/src/pages/Home.jsx index b67b51f..106e201 100644 --- a/src/pages/Home.jsx +++ b/src/pages/Home.jsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import DeliveryOrdersList from "../components/DeliveryOrdersList.jsx"; -import { getTotalOrders, createTotalOrder } from "../api.jsx"; +import { getTotalOrders, calculateTotalOrder } from "../api.jsx"; import { getStatuses } from "../api.jsx"; import DatePicker from "react-datepicker"; import "react-datepicker/dist/react-datepicker.css"; @@ -12,8 +12,9 @@ const Home = () => { const [expandedOrderId, setExpandedOrderId] = useState(null); const [loadingStatuses, setLoadingStatuses] = useState(true); const [loadingOrders, setLoadingOrders] = useState(true); + const [loadingCreateOrder, setLoadingCreateOrder] = useState(false); const [deliveryOrdersCount, setDeliveryOrdersCount] = useState(0); - const [deadline, setDeadline] = useState(new Date()); + const [deadline, setDeadline] = useState(new Date()); const navigate = useNavigate(); const user = JSON.parse(localStorage.getItem("user")); @@ -45,34 +46,15 @@ const Home = () => { }; const handleCreateOrder = async () => { - const current_status = statuses.filter( - (status) => status.name === "Создан" - ); - - if (current_status.length === 0) { - console.error("Статус 'Создан' не найден"); - return; - } - - const statusId = current_status[0].id; - - const currentDate = new Date().toISOString(); - const deadlineDate = deadline.toISOString(); - - const defaultOrderData = { - order_datetime: currentDate, - count_robots: 2000, - deadline: deadlineDate, - price: 0.0, - user_id: user.id, - status_id: statusId, - }; - + setLoadingCreateOrder(true); try { - const newOrder = await createTotalOrder(defaultOrderData); - setTotalOrders([...totalOrders, newOrder]); + await calculateTotalOrder(); + alert("Начался расчет маршрутов. Заказ скоро появится в списке заказов."); + fetchTotalOrders(); } catch (error) { - console.error("Ошибка при создании заказа:", error); + console.error("Ошибка при расчете заказа:", error); + } finally { + setLoadingCreateOrder(false); } }; @@ -102,24 +84,31 @@ const Home = () => { placeholderText="Выберите дату дедлайна" /> - + {loadingCreateOrder && ( + + Запрос может выполняться до 5 минут... + )} - + {loadingOrders ? (