const { useState, useEffect, useCallback, useRef } = React;
const OrdersPage = () => {
const { user, showToast, handleLogin, authReady } = useApp();
const [orders, setOrders] = useState([]);
const [loading, setLoading] = useState(true);
const [confirmingOrder, setConfirmingOrder] = useState(null);
const fetchOrders = async () => {
if (user?._authenticated) {
try {
const data = await api.getOrders();
setOrders(data);
} catch (error) {
console.error('Fetch orders error:', error);
}
}
setLoading(false);
};
useEffect(() => { fetchOrders(); }, [user]);
const handleConfirmReceived = async (orderNumber) => {
if (!user?._authenticated) return;
setConfirmingOrder(orderNumber);
try {
const result = await api.confirmReceived(orderNumber);
setOrders(prev => prev.map(o =>
o.order_number === orderNumber ? result.order : o
));
showToast('已確認收貨');
} catch (error) {
showToast(error.message || '確認收貨失敗');
}
setConfirmingOrder(null);
};
const statusText = {
pending: '待確認',
pending_payment: '待付款',
paid: '已付款',
confirmed: '已確認',
shipped: '已出貨',
ready_pickup: '待取貨',
completed: '已完成',
cancelled: '已取消',
rejected: '已拒絕'
};
const receivableStatuses = new Set(['shipped', 'ready_pickup']);
if (loading) return
請先登入查看訂單
{authReady && ( )}尚無訂單記錄