From 99372d7341882a72b27e95635e15d3021c853da1 Mon Sep 17 00:00:00 2001 From: andrei Date: Tue, 8 Oct 2024 00:46:24 +0500 Subject: [PATCH] ._. --- src/api.jsx | 36 +++++++++++++++++++++++++++ src/components/DeliveryOrdersList.css | 9 +++++++ src/components/DeliveryOrdersList.jsx | 7 +++--- src/pages/DeliveryOrderDetails.jsx | 29 ++++++++++++++++++++- src/pages/Home.jsx | 3 +-- 5 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 src/components/DeliveryOrdersList.css diff --git a/src/api.jsx b/src/api.jsx index 0480fd9..662b349 100755 --- a/src/api.jsx +++ b/src/api.jsx @@ -590,3 +590,39 @@ export const updateDeliveryOrderRoute = async ( throw error; } }; + +export const getTotalOrder = async (totalOrderId) => { + try { + const response = await axios.get( + `${API_URL}/total-orders/${totalOrderId}`, + { + headers: { + Authorization: `Bearer ${getAuthToken()}`, + "Content-Type": "application/json", + }, + } + ); + return response.data; + } catch (error) { + console.error("Ошибка при получении totalOrder:", error); + throw error; + } +}; + +export const getDeliveryOrder = async (deliveryOrderId) => { + try { + const response = await axios.get( + `${API_URL}/delivery-orders/${deliveryOrderId}`, + { + headers: { + Authorization: `Bearer ${getAuthToken()}`, + "Content-Type": "application/json", + }, + } + ); + return response.data; + } catch (error) { + console.error("Ошибка при получении deliveryOrder:", error); + throw error; + } +}; \ No newline at end of file diff --git a/src/components/DeliveryOrdersList.css b/src/components/DeliveryOrdersList.css new file mode 100644 index 0000000..1fdce25 --- /dev/null +++ b/src/components/DeliveryOrdersList.css @@ -0,0 +1,9 @@ +.card { + transition: box-shadow 0.3s ease, transform 0.3s ease; +} + +.card:hover { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); + transform: scale(1.02); + background-color: #f8f9fa; +} \ No newline at end of file diff --git a/src/components/DeliveryOrdersList.jsx b/src/components/DeliveryOrdersList.jsx index 8412c25..c436def 100644 --- a/src/components/DeliveryOrdersList.jsx +++ b/src/components/DeliveryOrdersList.jsx @@ -2,6 +2,7 @@ import { getDeliveryOrders, updateDeliveryOrderRoute } from "../api.jsx"; import React, { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import polyline from "@mapbox/polyline"; +import "./DeliveryOrdersList.css"; const DeliveryOrdersList = ({ totalOrderId, @@ -81,7 +82,7 @@ const DeliveryOrdersList = ({
{loadingDeliveryOrders ? (
- Загрузка... +
) : ( <> @@ -99,8 +100,8 @@ const DeliveryOrdersList = ({

Этап №{index + 1}

- Расчетная длительность этапа: - {formatTimeInHours(order.estimated_route_time_in_minutes)} + Расчетная длительность этапа:{" "} + {formatTimeInHours(order.estimated_route_time_in_minutes)}

{calculatingRoutes.includes(order.id) && (
diff --git a/src/pages/DeliveryOrderDetails.jsx b/src/pages/DeliveryOrderDetails.jsx index bdda72b..55e2988 100644 --- a/src/pages/DeliveryOrderDetails.jsx +++ b/src/pages/DeliveryOrderDetails.jsx @@ -3,6 +3,8 @@ import { getDeliveryAccessories, getDeliveryOrderDetails, updateDeliveryOrderRoute, + getTotalOrder, + getDeliveryOrder, } from "../api.jsx"; import { useParams, useNavigate } from "react-router-dom"; import { @@ -32,12 +34,37 @@ const DeliveryOrderDetails = () => { const [totalCost, setTotalCost] = useState(0); const [truckCount, setTruckCount] = useState(0); const [truckName, setTruckName] = useState(""); + const [totalOrder, setTotalOrder] = useState(null); + const [deliveryOrder, setDeliveryOrder] = useState(null); const navigate = useNavigate(); useEffect(() => { + fetchDeliveryOrder(); fetchDeliveryAccessories(); + fetchTotalOrder(); }, [deliveryOrderId]); + const fetchDeliveryOrder = async () => { + try { + const order = await getDeliveryOrder(deliveryOrderId); + setDeliveryOrder(order); + } catch (error) { + console.error("Ошибка при загрузке deliveryOrder:", error); + } + }; + + const fetchTotalOrder = async () => { + try { + const order = await getTotalOrder(deliveryOrder.id); + setTotalOrder(order); + } catch (error) { + if (error.response && error.response.status === 401) { + navigate("/login"); + } + console.error("Ошибка при загрузке totalOrder:", error); + } + }; + const fetchDeliveryAccessories = async () => { try { const deliveryOrderDetails = await getDeliveryOrderDetails( @@ -159,7 +186,7 @@ const DeliveryOrderDetails = () => { {accessory.city_name} {accessory.accessory_name} - {accessory.count} + {(accessory.count / 100) * totalOrder.count_robots} {accessory.volume} ))} diff --git a/src/pages/Home.jsx b/src/pages/Home.jsx index 57911e9..17181c6 100644 --- a/src/pages/Home.jsx +++ b/src/pages/Home.jsx @@ -14,7 +14,6 @@ const Home = () => { const [loadingOrders, setLoadingOrders] = useState(true); const [loadingCreateOrder, setLoadingCreateOrder] = useState(false); const [deliveryOrdersCount, setDeliveryOrdersCount] = useState(0); - const [deadline, setDeadline] = useState(new Date()); const [showModal, setShowModal] = useState(false); const navigate = useNavigate(); const user = JSON.parse(localStorage.getItem("user")); @@ -103,7 +102,7 @@ const Home = () => {
) : ( totalOrders.map((order) => ( -
+
handleToggleAccordion(order.id)}