._.
This commit is contained in:
parent
bd5ad2b7df
commit
99372d7341
36
src/api.jsx
36
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;
|
||||
}
|
||||
};
|
||||
9
src/components/DeliveryOrdersList.css
Normal file
9
src/components/DeliveryOrdersList.css
Normal 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;
|
||||
}
|
||||
@ -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) && (
|
||||
|
||||
@ -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>
|
||||
))}
|
||||
|
||||
@ -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)}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user