import { useState } from 'react'; import { Button, Descriptions, Drawer, Form, Input, Space, Table, Typography, message, } from 'antd'; import type { ColumnsType } from 'antd/es/table'; import { request } from '../lib/api'; import { ORDER_STATUS_LABELS, fmtTime } from '../lib/constants'; import { useAdminList } from '../lib/useAdminList'; type Row = { id: string; provider: string; trackingNo: string | null; providerOrderNo: string | null; updatedAt: string; order?: { orderNo: string; status: string; receiverName: string; receiverPhone: string; deliveryType: string }; }; export default function DeliveriesPage() { const [form] = Form.useForm(); const [editForm] = Form.useForm(); const [filters, setFilters] = useState>({}); const { data, loading, page, pageSize, setPage, setPageSize, reload } = useAdminList( '/admin/deliveries', () => { const qs = new URLSearchParams(); if (filters.provider) qs.set('provider', filters.provider); if (filters.trackingNo) qs.set('trackingNo', filters.trackingNo); if (filters.orderNo) qs.set('orderNo', filters.orderNo); return qs; }, [filters], ); const [detail, setDetail] = useState(null); const [drawerOpen, setDrawerOpen] = useState(false); const columns: ColumnsType = [ { title: '订单号', dataIndex: ['order', 'orderNo'], width: 170 }, { title: 'provider', dataIndex: 'provider', width: 90 }, { title: '运单号', dataIndex: 'trackingNo', width: 140, render: (v) => v || '—' }, { title: '第三方单号', dataIndex: 'providerOrderNo', width: 140, render: (v) => v || '—' }, { title: '订单状态', dataIndex: ['order', 'status'], width: 100, render: (s) => ORDER_STATUS_LABELS[s] || s }, { title: '收货人', dataIndex: ['order', 'receiverName'], width: 90 }, { title: '更新', dataIndex: 'updatedAt', width: 160, render: fmtTime }, { title: '操作', width: 80, render: (_, row) => ( ), }, ]; return (
快递/配送单
{ setFilters(v); setPage(1); }}>
{ setPage(p); setPageSize(ps); } }} /> setDrawerOpen(false)} extra={ }> {detail && ( <> {detail.order?.orderNo} {detail.order?.receiverName} {detail.order?.receiverPhone}
)}
); }