This commit is contained in:
Андрей Дувакин 2024-10-08 00:46:24 +05:00
parent bd5ad2b7df
commit 99372d7341
5 changed files with 78 additions and 6 deletions

View File

@ -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;
}
};

View File

@ -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;
}

View File

@ -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 = ({
<div>
{loadingDeliveryOrders ? (
<div className="spinner-border" role="status">
<span className="visually-hidden">Загрузка...</span>
<span className="visually-hidden"></span>
</div>
) : (
<>
@ -99,7 +100,7 @@ const DeliveryOrdersList = ({
<div className="card-body">
<p>Этап {index + 1}</p>
<p>
Расчетная длительность этапа:
Расчетная длительность этапа:{" "}
{formatTimeInHours(order.estimated_route_time_in_minutes)}
</p>
{calculatingRoutes.includes(order.id) && (

View File

@ -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 = () => {
<tr key={accessory.id}>
<td>{accessory.city_name}</td>
<td>{accessory.accessory_name}</td>
<td>{accessory.count}</td>
<td>{(accessory.count / 100) * totalOrder.count_robots}</td>
<td>{accessory.volume}</td>
</tr>
))}

View File

@ -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 = () => {
</div>
) : (
totalOrders.map((order) => (
<div key={order.id} className="card mb-2">
<div key={order.id} className="card mb-3">
<div
className="card-header d-flex justify-content-between"
onClick={() => handleToggleAccordion(order.id)}