diff --git a/frontend/src/components/OrderCard.jsx b/frontend/src/components/OrderCard.jsx new file mode 100644 index 0000000..9f5cb15 --- /dev/null +++ b/frontend/src/components/OrderCard.jsx @@ -0,0 +1,39 @@ +export default function OrderCard({ order, statusLabels }) { + return ( +
+ {/* шапка */} +
+ Заказ #{order.id} + + {statusLabels[order.status] || order.status} + +
+ + {/* товары */} +
+ {order.Items?.map((oi) => ( +
+ + {oi.item?.name} + + {oi.quantity} {oi.item?.unit} × {oi.price} ₽ + +
+ ))} +
+ + {/* подвал */} +
+ {order.delivery_address} + Итого: {order.total_price} ₽ +
+
+ ); +} diff --git a/frontend/src/pages/Profile.jsx b/frontend/src/pages/Profile.jsx index 50c0266..e9d67cc 100644 --- a/frontend/src/pages/Profile.jsx +++ b/frontend/src/pages/Profile.jsx @@ -2,6 +2,7 @@ import { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import PageLayout from "../components/PageLayout"; import { getUserInfo, getUserOrders } from "../api"; +import OrderCard from "../components/OrderCard"; export default function Profile() { const [user, setUser] = useState(null); @@ -39,6 +40,14 @@ export default function Profile() { ); } + + const activeOrders = orders.filter( + (o) => o.status === "new" || o.status === "packed", + ); + + const completedOrders = orders.filter( + (o) => o.status === "delivered" || o.status === "cancel", + ); return (
@@ -68,54 +77,37 @@ export default function Profile() { )} -
-

Мои заказы

- {orders.length === 0 ? ( -

У вас пока нет заказов

+
+

Активные заказы

+ {activeOrders.length === 0 ? ( +

Нет активных заказов

) : (
- {orders.map((order) => ( -
( + -
- - Заказ #{order.id} - - - {statusLabels[order.status]} - -
+ order={order} + statusLabels={statusLabels} + /> + ))} +
+ )} +
-
- {order.items?.map((oi) => ( -
- {oi.item?.name} navigate(`/items/${oi.item.id}`)} - /> - {oi.item?.name} - - {oi.quantity} {oi.item?.unit} x {oi.price}р - -
- ))} -
-
- - {order.delivery_address} - - - Итого: {order.total_price} - -
- +
+

+ Завершённые +

+ {completedOrders.length === 0 ? ( +

Нет завершённых заказов

+ ) : ( +
+ {completedOrders.map((order) => ( + ))}
)}