import { useEffect, useState } from 'react'; import { View, Text } from '@tarojs/components'; import Taro, { useRouter } from '@tarojs/taro'; import PageShell from '../../components/PageShell'; import SubPageHeader from '../../components/SubPageHeader'; import { request, toast } from '../../lib/api'; const TABS = [ { key: 'pending_pay', label: '待付款' }, { key: 'paid', label: '已付款' }, { key: 'completed', label: '已完成' }, ] as const; type OrderRow = { id: string; orderNo?: string; status?: string; payAmount?: number; productName?: string; qty?: number; createdAt?: string; }; export default function OrdersPage() { const router = useRouter(); const initialTab = (router.params.tab as string) || 'pending_pay'; const [tab, setTab] = useState(initialTab); const [orders, setOrders] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { setLoading(true); request<{ items?: OrderRow[]; total?: number } | OrderRow[]>( `/trade/orders?tab=${encodeURIComponent(tab)}&pageSize=20`, ) .then((data) => { if (Array.isArray(data)) setOrders(data); else setOrders(Array.isArray(data?.items) ? data.items : []); }) .catch((e) => { toast(e instanceof Error ? e.message : '加载失败'); setOrders([]); }) .finally(() => setLoading(false)); }, [tab]); return ( {TABS.map((t) => ( setTab(t.key)} > {t.label} ))} {loading ? 加载中… : null} {!loading && orders.length === 0 ? 暂无订单 : null} {!loading && orders.map((o) => ( Taro.navigateTo({ url: `/pages/order-detail/index?id=${o.id}` })} > {o.orderNo || o.id} {TABS.find((t) => t.key === tab)?.label || o.status || ''} {o.productName || '杜康商品'} 数量 {o.qty ?? 1} · {o.createdAt ? String(o.createdAt).slice(0, 10) : ''} 实付 ¥{Number(o.payAmount ?? 0).toFixed(2)} ))} ); }