This commit is contained in:
Андрей Дувакин 2024-10-05 16:14:48 +05:00
parent fd49aa6e6d
commit c485066371
2 changed files with 70 additions and 29 deletions

View File

@ -1,8 +1,13 @@
import { getDeliveryOrders } from "../api"; import { getDeliveryOrders } from "../api";
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
const DeliveryOrdersList = ({ totalOrderId, onSubOrderClick }) => { const DeliveryOrdersList = ({
totalOrderId,
onSubOrderClick,
setDeliveryOrdersCount,
}) => {
const [deliveryOrders, setDeliveryOrders] = useState([]); const [deliveryOrders, setDeliveryOrders] = useState([]);
const [loadingDeliveryOrders, setLoadingDeliveryOrders] = useState(true);
useEffect(() => { useEffect(() => {
fetchDeliveryOrders(); fetchDeliveryOrders();
@ -11,25 +16,32 @@ const DeliveryOrdersList = ({ totalOrderId, onSubOrderClick }) => {
const fetchDeliveryOrders = async () => { const fetchDeliveryOrders = async () => {
try { try {
const orders = await getDeliveryOrders(totalOrderId); const orders = await getDeliveryOrders(totalOrderId);
setDeliveryOrdersCount(orders.length);
setDeliveryOrders(orders); setDeliveryOrders(orders);
} catch (error) { } catch (error) {
console.error("Ошибка при загрузке подзаказов:", error); console.error("Ошибка при загрузке подзаказов:", error);
} finally {
setLoadingDeliveryOrders(false);
} }
}; };
return ( return (
<div> <div>
{deliveryOrders.map((order, index) => ( {loadingDeliveryOrders ? (
<div className="spinner-border" role="status">
<span className="visually-hidden"></span>
</div>
) : (
deliveryOrders.map((order, index) => (
<div <div
key={order.id} key={order.id}
className="card mb-1" className="card mb-1"
onClick={() => onSubOrderClick(order.id)} onClick={() => onSubOrderClick(order.id)}
> >
<div className="card-body"> <div className="card-body">Подзаказ #{index + 1}</div>
Подзаказ #{index + 1} {/* Отображение порядкового номера */}
</div> </div>
</div> ))
))} )}
</div> </div>
); );
}; };

View File

@ -9,12 +9,14 @@ const Home = () => {
const [totalOrders, setTotalOrders] = useState([]); const [totalOrders, setTotalOrders] = useState([]);
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 [deliveryOrdersCount, setDeliveryOrdersCount] = useState(0);
const navigate = useNavigate(); const navigate = useNavigate();
const user = JSON.parse(localStorage.getItem("user")); const user = JSON.parse(localStorage.getItem("user"));
useEffect(() => { useEffect(() => {
fetchTotalOrders();
fetchStatuses(); fetchStatuses();
fetchTotalOrders();
}, []); }, []);
const fetchStatuses = async () => { const fetchStatuses = async () => {
@ -34,6 +36,8 @@ const Home = () => {
setTotalOrders(orders); setTotalOrders(orders);
} catch (error) { } catch (error) {
console.error("Ошибка при загрузке заказов:", error); console.error("Ошибка при загрузке заказов:", error);
} finally {
setLoadingOrders(false);
} }
}; };
@ -100,7 +104,14 @@ const Home = () => {
)} )}
</button> </button>
{totalOrders.map((order) => ( {loadingOrders ? (
<div className="text-center">
<div className="spinner-border mb-2" role="status">
<span className="visually-hidden"></span>
</div>
</div>
) : (
totalOrders.map((order) => (
<div key={order.id} className="card mb-2"> <div key={order.id} className="card mb-2">
<div <div
className="card-header" className="card-header"
@ -111,14 +122,32 @@ const Home = () => {
{expandedOrderId === order.id && ( {expandedOrderId === order.id && (
<div className="card-body"> <div className="card-body">
<p>
<strong>Статус:</strong>{" "}
{order.status_name || "Неизвестный статус"}
</p>
<p>
<strong>Количество роботов:</strong> {order.count_robots}
</p>
<p>
<strong>Количество подзаказов:</strong>{" "}
{deliveryOrdersCount || 0}
</p>
<p>
<strong>Создатель:</strong>{" "}
{order.user_login || "Неизвестный пользователь"}
</p>
<DeliveryOrdersList <DeliveryOrdersList
totalOrderId={order.id} totalOrderId={order.id}
onSubOrderClick={handleSubOrderClick} onSubOrderClick={handleSubOrderClick}
setDeliveryOrdersCount={setDeliveryOrdersCount}
/> />
</div> </div>
)} )}
</div> </div>
))} ))
)}
</div> </div>
); );
}; };