This commit is contained in:
Андрей Дувакин 2024-10-08 10:35:16 +05:00
parent 2e6a760e40
commit 68468ee72e
2 changed files with 15 additions and 8 deletions

View File

@ -20,6 +20,7 @@ const DeliveryOrdersList = ({
totalOrderId, totalOrderId,
onSubOrderClick, onSubOrderClick,
setDeliveryOrdersCount, setDeliveryOrdersCount,
setTotalEstimatedTime,
}) => { }) => {
const [deliveryOrders, setDeliveryOrders] = useState([]); const [deliveryOrders, setDeliveryOrders] = useState([]);
const [loadingDeliveryOrders, setLoadingDeliveryOrders] = useState(true); const [loadingDeliveryOrders, setLoadingDeliveryOrders] = useState(true);
@ -35,6 +36,11 @@ const DeliveryOrdersList = ({
const orders = await getDeliveryOrders(totalOrderId); const orders = await getDeliveryOrders(totalOrderId);
setDeliveryOrdersCount(orders.length); setDeliveryOrdersCount(orders.length);
setDeliveryOrders(orders); setDeliveryOrders(orders);
const totalTime = orders.reduce((sum, order) => {
return sum + (order.estimated_route_time_in_minutes || 0);
}, 0);
setTotalEstimatedTime(totalTime);
} catch (error) { } catch (error) {
if (error.response && error.response.status === 401) { if (error.response && error.response.status === 401) {
navigate("/login"); navigate("/login");
@ -52,13 +58,6 @@ const DeliveryOrdersList = ({
return (minutes / 60).toFixed(2) + " час."; return (minutes / 60).toFixed(2) + " час.";
}; };
const formatPrice = (price) => {
if (!price) {
return "не указана";
}
return `${Math.round(price)}`;
};
const calculateRoutes = async () => { const calculateRoutes = async () => {
const ordersToCalculate = deliveryOrders.filter( const ordersToCalculate = deliveryOrders.filter(
(order) => !order.estimated_route_time_in_minutes (order) => !order.estimated_route_time_in_minutes
@ -168,7 +167,6 @@ const DeliveryOrdersList = ({
Прогнозируемое время этапа:{" "} Прогнозируемое время этапа:{" "}
{formatTimeInHours(order.estimated_route_time_in_minutes)} {formatTimeInHours(order.estimated_route_time_in_minutes)}
</p> </p>
<p>Стоимость: {formatPrice(order.price)} </p>
{calculatingRoutes.includes(order.id) && ( {calculatingRoutes.includes(order.id) && (
<div className="spinner-border" role="status"> <div className="spinner-border" role="status">
<span className="visually-hidden"></span> <span className="visually-hidden"></span>

View File

@ -15,6 +15,7 @@ const Home = () => {
const [loadingCreateOrder, setLoadingCreateOrder] = useState(false); const [loadingCreateOrder, setLoadingCreateOrder] = useState(false);
const [deliveryOrdersCount, setDeliveryOrdersCount] = useState(0); const [deliveryOrdersCount, setDeliveryOrdersCount] = useState(0);
const [showModal, setShowModal] = useState(false); const [showModal, setShowModal] = useState(false);
const [totalEstimatedTime, setTotalEstimatedTime] = useState(0);
const navigate = useNavigate(); const navigate = useNavigate();
const user = JSON.parse(localStorage.getItem("user")); const user = JSON.parse(localStorage.getItem("user"));
@ -51,6 +52,13 @@ const Home = () => {
} }
}; };
const formatTimeInHours = (minutes) => {
if (!minutes || minutes === 0) {
return "ещё не рассчитывалось";
}
return (minutes / 60).toFixed(2) + " час.";
};
const handleCreateOrder = async ({ deadline, robotsCount }) => { const handleCreateOrder = async ({ deadline, robotsCount }) => {
setLoadingCreateOrder(true); setLoadingCreateOrder(true);
try { try {
@ -141,6 +149,7 @@ const Home = () => {
totalOrderId={order.id} totalOrderId={order.id}
onSubOrderClick={handleSubOrderClick} onSubOrderClick={handleSubOrderClick}
setDeliveryOrdersCount={setDeliveryOrdersCount} setDeliveryOrdersCount={setDeliveryOrdersCount}
setTotalEstimatedTime={setTotalEstimatedTime}
/> />
</div> </div>
)} )}