import { useCallback, useEffect, useState } from 'react' import { Button, Input, Modal, Select, Space, Table, Tag, Typography, message, } from 'antd' import { ReloadOutlined } from '@ant-design/icons' import type { ColumnsType } from 'antd/es/table' import dayjs from 'dayjs' import { shipLogApi } from '../api' import type { ShipLog } from '../types' const shipStatusMap: Record = { success: { color: 'green', text: '成功' }, failed: { color: 'red', text: '失败' }, processing: { color: 'cyan', text: '发货中' }, } const orderStatusMap: Record = { pending: { color: 'orange', text: '待支付' }, paid: { color: 'blue', text: '已支付' }, delivering: { color: 'cyan', text: '发货中' }, delivered: { color: 'green', text: '已交付' }, ship_failed: { color: 'red', text: '发货失败' }, cancelled: { color: 'default', text: '已取消' }, } export default function ShipLogs() { const [list, setList] = useState([]) const [total, setTotal] = useState(0) const [page, setPage] = useState(1) const [size, setSize] = useState(10) const [orderNo, setOrderNo] = useState('') const [shipStatus, setShipStatus] = useState() const [loading, setLoading] = useState(false) const [detail, setDetail] = useState(null) const load = useCallback(async () => { setLoading(true) try { const data = await shipLogApi.list({ page, size, order_no: orderNo || undefined, ship_status: shipStatus, }) setList(data.list || []) setTotal(data.total) } catch (e) { message.error(e instanceof Error ? e.message : '加载失败') } finally { setLoading(false) } }, [page, size, orderNo, shipStatus]) useEffect(() => { load() }, [load]) const columns: ColumnsType = [ { title: 'ID', dataIndex: 'id', width: 70 }, { title: '店铺订单号', dataIndex: 'order_no', width: 200, ellipsis: true }, { title: '推送状态', dataIndex: 'ship_status', width: 100, render: (v: string) => { const s = shipStatusMap[v] || { color: 'default', text: v } return {s.text} }, }, { title: '处理后订单状态', dataIndex: 'result_status', width: 130, render: (v: string) => { if (!v) return '-' const s = orderStatusMap[v] || { color: 'default', text: v } return {s.text} }, }, { title: '上游单号', dataIndex: 'provider_order_no', width: 160, ellipsis: true, render: (v: string) => v || '-', }, { title: '说明', dataIndex: 'message', ellipsis: true, render: (v: string) => v || '-', }, { title: '失败原因', dataIndex: 'fail_reason', width: 140, ellipsis: true, render: (v: string) => v || '-', }, { title: '时间', dataIndex: 'created_at', width: 170, render: (v: string) => dayjs(v).format('YYYY-MM-DD HH:mm:ss'), }, { title: '操作', key: 'action', width: 90, render: (_, record) => ( ), }, ] return (
发货推送记录 { setPage(1) setOrderNo(v) }} style={{ width: 220 }} />