'use client' import { useState, useEffect } from 'react' import { withAdminAuth } from '@/components/admin/AdminAuth' import { Eye, Package, Calendar, User } from 'lucide-react' interface Order { id: string orderNumber: string totalAmount: number status: string createdAt: string user: { id: string email: string name?: string username: string } orderItems: { id: string quantity: number price: number component: { id: string name: string brand: string model: string } }[] } const statusLabels: { [key: string]: string } = { PENDING: '待处理', CONFIRMED: '已确认', PROCESSING: '处理中', SHIPPED: '已发货', DELIVERED: '已送达', CANCELLED: '已取消' } const statusColors: { [key: string]: string } = { PENDING: 'bg-yellow-100 text-yellow-800', CONFIRMED: 'bg-blue-100 text-blue-800', PROCESSING: 'bg-purple-100 text-purple-800', SHIPPED: 'bg-green-100 text-green-800', DELIVERED: 'bg-green-100 text-green-800', CANCELLED: 'bg-red-100 text-red-800' } function AdminOrdersPage() { const [orders, setOrders] = useState([]) const [isLoading, setIsLoading] = useState(true) const [selectedOrder, setSelectedOrder] = useState(null) const [showModal, setShowModal] = useState(false) useEffect(() => { loadOrders() }, []) const loadOrders = async () => { try { const response = await fetch('/api/admin/orders') if (response.ok) { const data = await response.json() setOrders(data) } } catch (error) { console.error('加载订单失败:', error) } finally { setIsLoading(false) } } const updateOrderStatus = async (orderId: string, newStatus: string) => { try { const response = await fetch(`/api/admin/orders/${orderId}`, { method: 'PUT', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ status: newStatus }), }) if (response.ok) { await loadOrders() if (selectedOrder && selectedOrder.id === orderId) { setSelectedOrder({ ...selectedOrder, status: newStatus }) } } else { alert('更新订单状态失败') } } catch (error) { console.error('更新订单状态失败:', error) alert('更新订单状态失败') } } const viewOrderDetails = (order: Order) => { setSelectedOrder(order) setShowModal(true) } if (isLoading) { return (
) } return (

订单管理

共 {orders.length} 个订单
{/* Orders Table */}
{orders.map((order) => ( ))}
订单号 用户 金额 状态 创建时间 操作
{order.orderNumber}
{order.orderItems.length} 个配件
{order.user?.name || order.user?.username || '未知用户'}
{order.user?.email || '无邮箱'}
¥{order.totalAmount.toLocaleString()}
{new Date(order.createdAt).toLocaleDateString('zh-CN')}
{/* Order Details Modal */} {showModal && selectedOrder && (

订单详情

{selectedOrder.orderNumber}
{statusLabels[selectedOrder.status]}
{selectedOrder.user?.name || selectedOrder.user?.username || '未知用户'}
{selectedOrder.user?.email || '无邮箱'}
¥{selectedOrder.totalAmount.toLocaleString()}
{selectedOrder.orderItems.map((item) => (
{item.component?.name || '未知商品'}
{item.component?.brand || '未知品牌'} {item.component?.model || ''}
¥{item.price.toLocaleString()}
数量: {item.quantity}
))}
{new Date(selectedOrder.createdAt).toLocaleString('zh-CN')}
)}
) } export default withAdminAuth(AdminOrdersPage)