import { useCallback, useEffect, useState, type FormEvent } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import PageHeader from '@dukang/shared-ui/PageHeader'; import PullToRefresh from '@dukang/shared-ui/PullToRefresh'; import type { PartnerProxyOrderListItem, PartnerProxyOrderListResponse } from '@dukang/shared-types'; import { isLoggedIn, request } from '../lib/api'; import { proxyOrderStatusColor, proxyOrderStatusLabel, } from '../lib/proxyOrderStatus'; function fmtMoney(n: number) { return n.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); } function fmtTime(value: string | undefined) { if (!value) return '—'; const d = new Date(value); if (Number.isNaN(d.getTime())) return value; const pad = (n: number) => String(n).padStart(2, '0'); return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}`; } function deliveryLabel(item: PartnerProxyOrderListItem) { const t = String(item.deliveryType || '').toUpperCase(); if (t === 'ON_SITE_PICKUP') return '现场提货'; if (t === 'CROSS_CITY') return '跨城配送'; if (t === 'LOCAL') return '同城配送'; return '线下代下单'; } function coverUrl(item: PartnerProxyOrderListItem) { return item.imageResource?.url || ''; } export default function ProxyOrderListPage() { const navigate = useNavigate(); const [list, setList] = useState([]); const [total, setTotal] = useState(0); const [keyword, setKeyword] = useState(''); const [q, setQ] = useState(''); const [loading, setLoading] = useState(true); const loadList = useCallback(() => { if (!isLoggedIn()) { navigate('/login'); return Promise.resolve(); } setLoading(true); const params = new URLSearchParams({ page: '1', pageSize: '50' }); if (q.trim()) params.set('keyword', q.trim()); return request('PARTNER_H5', `/partner/proxy-orders?${params}`) .then((res) => { setList(Array.isArray(res.list) ? res.list : []); setTotal(Number(res.total) || 0); }) .catch(() => { setList([]); setTotal(0); }) .finally(() => setLoading(false)); }, [navigate, q]); useEffect(() => { document.title = '代下单列表'; }, []); useEffect(() => { void loadList(); }, [loadList]); function submitSearch(e: FormEvent) { e.preventDefault(); setQ(keyword.trim()); } return ( navigate('/center')} />
search setKeyword(e.target.value)} />

{loading ? '加载中…' : `共 ${total} 笔代下单`}

{!loading && list.length === 0 &&
暂无代下单记录
} {list.map((o) => { const orderId = String(o.id); const img = coverUrl(o); return (
NO. {o.orderNo} {proxyOrderStatusLabel(o.status)}
{!img && liquor}

{o.productName || '杜康好酒'}

×{o.quantity} · ¥{fmtMoney(Number(o.payAmount || 0))}

{deliveryLabel(o)} · {fmtTime(o.createdAt)}

person

{o.receiverName || '客户'} {o.receiverPhone ? ` · ${o.receiverPhone}` : ''} {o.receiverAddress ? ` · ${o.receiverAddress}` : ''}

); })}
); }