._.
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;
|
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 React, { useState, useEffect } from "react";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import DeliveryOrdersList from "../components/DeliveryOrdersList.jsx";
|
import DeliveryOrdersList from "../components/DeliveryOrdersList.jsx";
|
||||||
import { getTotalOrders, createTotalOrder } from "../api.jsx";
|
import { getTotalOrders, calculateTotalOrder } from "../api.jsx";
|
||||||
import { getStatuses } from "../api.jsx";
|
import { getStatuses } from "../api.jsx";
|
||||||
import DatePicker from "react-datepicker";
|
import DatePicker from "react-datepicker";
|
||||||
import "react-datepicker/dist/react-datepicker.css";
|
import "react-datepicker/dist/react-datepicker.css";
|
||||||
@ -12,6 +12,7 @@ const Home = () => {
|
|||||||
const [expandedOrderId, setExpandedOrderId] = useState(null);
|
const [expandedOrderId, setExpandedOrderId] = useState(null);
|
||||||
const [loadingStatuses, setLoadingStatuses] = useState(true);
|
const [loadingStatuses, setLoadingStatuses] = useState(true);
|
||||||
const [loadingOrders, setLoadingOrders] = useState(true);
|
const [loadingOrders, setLoadingOrders] = useState(true);
|
||||||
|
const [loadingCreateOrder, setLoadingCreateOrder] = useState(false);
|
||||||
const [deliveryOrdersCount, setDeliveryOrdersCount] = useState(0);
|
const [deliveryOrdersCount, setDeliveryOrdersCount] = useState(0);
|
||||||
const [deadline, setDeadline] = useState(new Date());
|
const [deadline, setDeadline] = useState(new Date());
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
@ -45,34 +46,15 @@ const Home = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleCreateOrder = async () => {
|
const handleCreateOrder = async () => {
|
||||||
const current_status = statuses.filter(
|
setLoadingCreateOrder(true);
|
||||||
(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,
|
|
||||||
};
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const newOrder = await createTotalOrder(defaultOrderData);
|
await calculateTotalOrder();
|
||||||
setTotalOrders([...totalOrders, newOrder]);
|
alert("Начался расчет маршрутов. Заказ скоро появится в списке заказов.");
|
||||||
|
fetchTotalOrders();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Ошибка при создании заказа:", error);
|
console.error("Ошибка при расчете заказа:", error);
|
||||||
|
} finally {
|
||||||
|
setLoadingCreateOrder(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -102,24 +84,31 @@ const Home = () => {
|
|||||||
placeholderText="Выберите дату дедлайна"
|
placeholderText="Выберите дату дедлайна"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<div className="d-flex align-items-center mb-3">
|
||||||
className="btn btn-primary mb-3"
|
<button
|
||||||
onClick={handleCreateOrder}
|
className="btn btn-primary"
|
||||||
disabled={loadingStatuses}
|
onClick={handleCreateOrder}
|
||||||
>
|
disabled={loadingCreateOrder || loadingStatuses}
|
||||||
{loadingStatuses ? (
|
>
|
||||||
<>
|
{loadingCreateOrder ? (
|
||||||
<span
|
<>
|
||||||
className="spinner-border spinner-border-sm"
|
<span
|
||||||
role="status"
|
className="spinner-border spinner-border-sm"
|
||||||
aria-hidden="true"
|
role="status"
|
||||||
></span>
|
aria-hidden="true"
|
||||||
Загрузка...
|
></span>
|
||||||
</>
|
Загрузка...
|
||||||
) : (
|
</>
|
||||||
"+ Создать"
|
) : (
|
||||||
|
"+ Создать"
|
||||||
|
)}
|
||||||
|
</button>
|
||||||
|
{loadingCreateOrder && (
|
||||||
|
<span className="ms-2 text-muted">
|
||||||
|
Запрос может выполняться до 5 минут...
|
||||||
|
</span>
|
||||||
)}
|
)}
|
||||||
</button>
|
</div>
|
||||||
|
|
||||||
{loadingOrders ? (
|
{loadingOrders ? (
|
||||||
<div className="text-center">
|
<div className="text-center">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user