._.
This commit is contained in:
parent
1aa6c84448
commit
7e2bfc7489
19
src/api.jsx
19
src/api.jsx
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
@ -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">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user