._.
This commit is contained in:
parent
f167ad20e0
commit
2ff4d89a1a
52
src/api.jsx
52
src/api.jsx
@ -458,3 +458,55 @@ export const deleteUser = async (id) => {
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
export const getTotalOrders = async () => {
|
||||
try {
|
||||
const response = await axios.get(`${API_URL}/total-orders`, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${getAuthToken()}`,
|
||||
Accept: "application/json",
|
||||
},
|
||||
});
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.log("Ошибка при загрузке общих заказов:", error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
export const createTotalOrder = async () => {
|
||||
try {
|
||||
const response = await axios.post(
|
||||
`${API_URL}/total-orders`,
|
||||
{},
|
||||
{
|
||||
headers: {
|
||||
Authorization: `Bearer ${getAuthToken()}`,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
}
|
||||
);
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.log("Ошибка при создании общего заказа:", error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
export const getDeliveryOrders = async (totalOrderId) => {
|
||||
try {
|
||||
const response = await axios.get(
|
||||
`${API_URL}/delivery-orders/total/${totalOrderId}`,
|
||||
{
|
||||
headers: {
|
||||
Authorization: `Bearer ${getAuthToken()}`,
|
||||
Accept: "application/json",
|
||||
},
|
||||
}
|
||||
);
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.log("Ошибка при загрузке подзаказов:", error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
37
src/components/DeliveryOrdersList.jsx
Normal file
37
src/components/DeliveryOrdersList.jsx
Normal file
@ -0,0 +1,37 @@
|
||||
import { getDeliveryOrders } from "../api";
|
||||
import React, { useState, useEffect } from "react";
|
||||
|
||||
const DeliveryOrdersList = ({ totalOrderId, onSubOrderClick }) => {
|
||||
const [deliveryOrders, setDeliveryOrders] = useState([]);
|
||||
|
||||
useEffect(() => {
|
||||
fetchDeliveryOrders();
|
||||
}, [totalOrderId]);
|
||||
|
||||
const fetchDeliveryOrders = async () => {
|
||||
try {
|
||||
const orders = await getDeliveryOrders(totalOrderId);
|
||||
setDeliveryOrders(orders);
|
||||
} catch (error) {
|
||||
console.error("Ошибка при загрузке подзаказов:", error);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
{deliveryOrders.map((order, index) => (
|
||||
<div
|
||||
key={order.id}
|
||||
className="card mb-1"
|
||||
onClick={() => onSubOrderClick(order.id)}
|
||||
>
|
||||
<div className="card-body">
|
||||
Подзаказ #{index + 1} {/* Отображение порядкового номера */}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default DeliveryOrdersList;
|
||||
@ -1,3 +1,74 @@
|
||||
const Home = () => {};
|
||||
import React, { useState, useEffect } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import DeliveryOrdersList from "../components/DeliveryOrdersList.jsx";
|
||||
import { getTotalOrders, createTotalOrder } from "../api.jsx";
|
||||
|
||||
const Home = () => {
|
||||
const [totalOrders, setTotalOrders] = useState([]);
|
||||
const [expandedOrderId, setExpandedOrderId] = useState(null);
|
||||
const navigate = useNavigate();
|
||||
|
||||
useEffect(() => {
|
||||
fetchTotalOrders();
|
||||
}, []);
|
||||
|
||||
const fetchTotalOrders = async () => {
|
||||
try {
|
||||
const orders = await getTotalOrders();
|
||||
setTotalOrders(orders);
|
||||
} catch (error) {
|
||||
console.error("Ошибка при загрузке заказов:", error);
|
||||
}
|
||||
};
|
||||
|
||||
const handleCreateOrder = async () => {
|
||||
try {
|
||||
const newOrder = await createTotalOrder();
|
||||
setTotalOrders([...totalOrders, newOrder]);
|
||||
} catch (error) {
|
||||
console.error("Ошибка при создании заказа:", error);
|
||||
}
|
||||
};
|
||||
|
||||
const handleToggleAccordion = (orderId) => {
|
||||
if (expandedOrderId === orderId) {
|
||||
setExpandedOrderId(null);
|
||||
} else {
|
||||
setExpandedOrderId(orderId);
|
||||
}
|
||||
};
|
||||
|
||||
const handleSubOrderClick = (subOrderId) => {
|
||||
navigate(`/sub-orders/${subOrderId}`);
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="container mt-4">
|
||||
<button className="btn btn-primary mb-3" onClick={handleCreateOrder}>
|
||||
+ Создать
|
||||
</button>
|
||||
|
||||
{totalOrders.map((order) => (
|
||||
<div key={order.id} className="card mb-2">
|
||||
<div
|
||||
className="card-header"
|
||||
onClick={() => handleToggleAccordion(order.id)}
|
||||
>
|
||||
Заказ от {new Date(order.order_datetime).toLocaleString()}
|
||||
</div>
|
||||
|
||||
{expandedOrderId === order.id && (
|
||||
<div className="card-body">
|
||||
<DeliveryOrdersList
|
||||
totalOrderId={order.id}
|
||||
onSubOrderClick={handleSubOrderClick}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default Home;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user