._.
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;
|
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 React, { useState, useEffect } from "react";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import polyline from "@mapbox/polyline";
|
import polyline from "@mapbox/polyline";
|
||||||
|
import "./DeliveryOrdersList.css";
|
||||||
|
|
||||||
const DeliveryOrdersList = ({
|
const DeliveryOrdersList = ({
|
||||||
totalOrderId,
|
totalOrderId,
|
||||||
@ -81,7 +82,7 @@ const DeliveryOrdersList = ({
|
|||||||
<div>
|
<div>
|
||||||
{loadingDeliveryOrders ? (
|
{loadingDeliveryOrders ? (
|
||||||
<div className="spinner-border" role="status">
|
<div className="spinner-border" role="status">
|
||||||
<span className="visually-hidden">Загрузка...</span>
|
<span className="visually-hidden"></span>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
@ -99,8 +100,8 @@ const DeliveryOrdersList = ({
|
|||||||
<div className="card-body">
|
<div className="card-body">
|
||||||
<p>Этап №{index + 1}</p>
|
<p>Этап №{index + 1}</p>
|
||||||
<p>
|
<p>
|
||||||
Расчетная длительность этапа:
|
Расчетная длительность этапа:{" "}
|
||||||
{formatTimeInHours(order.estimated_route_time_in_minutes)}
|
{formatTimeInHours(order.estimated_route_time_in_minutes)}
|
||||||
</p>
|
</p>
|
||||||
{calculatingRoutes.includes(order.id) && (
|
{calculatingRoutes.includes(order.id) && (
|
||||||
<div className="spinner-border" role="status">
|
<div className="spinner-border" role="status">
|
||||||
|
|||||||
@ -3,6 +3,8 @@ import {
|
|||||||
getDeliveryAccessories,
|
getDeliveryAccessories,
|
||||||
getDeliveryOrderDetails,
|
getDeliveryOrderDetails,
|
||||||
updateDeliveryOrderRoute,
|
updateDeliveryOrderRoute,
|
||||||
|
getTotalOrder,
|
||||||
|
getDeliveryOrder,
|
||||||
} from "../api.jsx";
|
} from "../api.jsx";
|
||||||
import { useParams, useNavigate } from "react-router-dom";
|
import { useParams, useNavigate } from "react-router-dom";
|
||||||
import {
|
import {
|
||||||
@ -32,12 +34,37 @@ const DeliveryOrderDetails = () => {
|
|||||||
const [totalCost, setTotalCost] = useState(0);
|
const [totalCost, setTotalCost] = useState(0);
|
||||||
const [truckCount, setTruckCount] = useState(0);
|
const [truckCount, setTruckCount] = useState(0);
|
||||||
const [truckName, setTruckName] = useState("");
|
const [truckName, setTruckName] = useState("");
|
||||||
|
const [totalOrder, setTotalOrder] = useState(null);
|
||||||
|
const [deliveryOrder, setDeliveryOrder] = useState(null);
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
fetchDeliveryOrder();
|
||||||
fetchDeliveryAccessories();
|
fetchDeliveryAccessories();
|
||||||
|
fetchTotalOrder();
|
||||||
}, [deliveryOrderId]);
|
}, [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 () => {
|
const fetchDeliveryAccessories = async () => {
|
||||||
try {
|
try {
|
||||||
const deliveryOrderDetails = await getDeliveryOrderDetails(
|
const deliveryOrderDetails = await getDeliveryOrderDetails(
|
||||||
@ -159,7 +186,7 @@ const DeliveryOrderDetails = () => {
|
|||||||
<tr key={accessory.id}>
|
<tr key={accessory.id}>
|
||||||
<td>{accessory.city_name}</td>
|
<td>{accessory.city_name}</td>
|
||||||
<td>{accessory.accessory_name}</td>
|
<td>{accessory.accessory_name}</td>
|
||||||
<td>{accessory.count}</td>
|
<td>{(accessory.count / 100) * totalOrder.count_robots}</td>
|
||||||
<td>{accessory.volume}</td>
|
<td>{accessory.volume}</td>
|
||||||
</tr>
|
</tr>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@ -14,7 +14,6 @@ const Home = () => {
|
|||||||
const [loadingOrders, setLoadingOrders] = useState(true);
|
const [loadingOrders, setLoadingOrders] = useState(true);
|
||||||
const [loadingCreateOrder, setLoadingCreateOrder] = useState(false);
|
const [loadingCreateOrder, setLoadingCreateOrder] = useState(false);
|
||||||
const [deliveryOrdersCount, setDeliveryOrdersCount] = useState(0);
|
const [deliveryOrdersCount, setDeliveryOrdersCount] = useState(0);
|
||||||
const [deadline, setDeadline] = useState(new Date());
|
|
||||||
const [showModal, setShowModal] = useState(false);
|
const [showModal, setShowModal] = useState(false);
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const user = JSON.parse(localStorage.getItem("user"));
|
const user = JSON.parse(localStorage.getItem("user"));
|
||||||
@ -103,7 +102,7 @@ const Home = () => {
|
|||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
totalOrders.map((order) => (
|
totalOrders.map((order) => (
|
||||||
<div key={order.id} className="card mb-2">
|
<div key={order.id} className="card mb-3">
|
||||||
<div
|
<div
|
||||||
className="card-header d-flex justify-content-between"
|
className="card-header d-flex justify-content-between"
|
||||||
onClick={() => handleToggleAccordion(order.id)}
|
onClick={() => handleToggleAccordion(order.id)}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user