// MOMO Pro - 訂單管理頁 const OrdersPage = ({ density = 'comfortable', cardStyle = 'shadow', buttonStyle = 'gradient' }) => { const [selected, setSelected] = React.useState(new Set()); const [statusFilter, setStatusFilter] = React.useState('all'); const [search, setSearch] = React.useState(''); const filtered = MOMO_DATA.orders.filter(o => { if (statusFilter !== 'all' && o.status !== statusFilter) return false; if (search && !o.id.toLowerCase().includes(search.toLowerCase()) && !o.customer.includes(search)) return false; return true; }); const toggleAll = () => { if (selected.size === filtered.length) setSelected(new Set()); else setSelected(new Set(filtered.map(o => o.id))); }; const toggleOne = (id) => { const s = new Set(selected); if (s.has(id)) s.delete(id); else s.add(id); setSelected(s); }; const tabs = [ { id: 'all', label: '全部', count: MOMO_DATA.orders.length }, { id: 'pending', label: '待處理', count: MOMO_DATA.orders.filter(o => o.status === 'pending').length }, { id: 'processing', label: '處理中', count: MOMO_DATA.orders.filter(o => o.status === 'processing').length }, { id: 'shipped', label: '已出貨', count: MOMO_DATA.orders.filter(o => o.status === 'shipped').length }, { id: 'completed', label: '已完成', count: MOMO_DATA.orders.filter(o => o.status === 'completed').length }, { id: 'cancelled', label: '已取消', count: MOMO_DATA.orders.filter(o => o.status === 'cancelled').length }, ]; const rowPad = density === 'compact' ? '8px 16px' : '14px 16px'; const headPad = density === 'compact' ? '8px 16px' : '12px 16px'; return (
|
|
{[
{ label: '訂單編號', sort: true },
{ label: '會員', sort: false },
{ label: '金額', sort: true, align: 'right' },
{ label: '商品', sort: false, align: 'right' },
{ label: '狀態', sort: false },
{ label: '付款', sort: false },
{ label: '通路', sort: false },
{ label: '建立時間', sort: true },
{ label: '', sort: false, align: 'right' },
].map((h, i) => (
{h.sort ? ( ) : h.label} | ))}||||||||
|---|---|---|---|---|---|---|---|---|---|
|
|
{order.id} |
{order.customer}
{order.email}
|
NT$ {order.total.toLocaleString()} | {order.items} 項 |
|
|
{order.channel} | {order.date} |
|