This commit is contained in:
Андрей Дувакин 2024-10-05 22:32:35 +05:00
parent 1aa6c84448
commit 7e2bfc7489
2 changed files with 56 additions and 48 deletions

View File

@ -541,3 +541,22 @@ export const getDeliveryOrderDetails = async (deliveryOrderId) => {
throw error;
}
};
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;
}
};

View File

@ -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,6 +12,7 @@ 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 navigate = useNavigate();
@ -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="Выберите дату дедлайна"
/>
</div>
<button
className="btn btn-primary mb-3"
onClick={handleCreateOrder}
disabled={loadingStatuses}
>
{loadingStatuses ? (
<>
<span
className="spinner-border spinner-border-sm"
role="status"
aria-hidden="true"
></span>
Загрузка...
</>
) : (
"+ Создать"
<div className="d-flex align-items-center mb-3">
<button
className="btn btn-primary"
onClick={handleCreateOrder}
disabled={loadingCreateOrder || loadingStatuses}
>
{loadingCreateOrder ? (
<>
<span
className="spinner-border spinner-border-sm"
role="status"
aria-hidden="true"
></span>
Загрузка...
</>
) : (
"+ Создать"
)}
</button>
{loadingCreateOrder && (
<span className="ms-2 text-muted">
Запрос может выполняться до 5 минут...
</span>
)}
</button>
</div>
{loadingOrders ? (
<div className="text-center">