import { useState, useEffect } from "react"; import { getAdminOrder } from "../api"; import { useParams, useNavigate } from "react-router-dom"; // Статусы заказа — ПОДСТАВЬ свои, если в БД они другие const STATUSES = [ { value: "new", label: "Новый" }, { value: "prepared", label: "Собран" }, { value: "shipped", label: "Отправлен" }, { value: "delivered", label: "Доставлен" }, { value: "canceled", label: "Отменён" }, ]; export default function AdminOrderDetail({ orderId }) { const [order, setOrder] = useState(null); const [status, setStatus] = useState(""); const [items, setItems] = useState([]); // редактируемая копия позиций const [loading, setLoading] = useState(false); const [saving, setSaving] = useState(false); const [error, setError] = useState(""); const { id } = useParams(); const navigate = useNavigate(); // Загружаем заказ при монтировании / смене orderId useEffect(() => { setError(""); setLoading(true); getAdminOrder(id) .then((res) => { setOrder(res.data); setStatus(res.data.status); setItems((res.data.items ?? []).map((it) => ({ ...it }))); }) .catch((err) => { setError(err.response?.data?.error ?? "Не удалось загрузить заказ"); }) .finally(() => { }); }, [orderId]); function handleQuantityChange(itemId, value) { setItems((prev) => prev.map((it) => it.item_id === itemId ? { ...it, quantity: value === "" ? "" : parseFloat(value) } : it, ), ); } // Пересчёт итога на лету const total = items.reduce((sum, it) => { const q = typeof it.quantity === "number" ? it.quantity : 0; return sum + it.price * q; }, 0); if (!loading) { return
{error || "Заказ не найден"}
{it.name}
{it.price} ₽ / {it.unit}