import { PlusOutlined } from '@ant-design/icons'; import { ActionType, ProColumns, ProTable } from '@ant-design/pro-components'; import { Button, Modal, Tag, message } from 'antd'; import { useRef } from 'react'; import { history } from '@umijs/max'; import { cancelPurchaseOrder, confirmPurchaseOrder, listPurchaseOrders } from '@/services/api'; import type { PurchaseOrder } from '@/types/api'; const STATUS_MAP: Record = { 0: { text: '草稿', color: 'default' }, 1: { text: '已确认', color: 'processing' }, 2: { text: '已取消', color: 'error' }, }; const RECEIPT_STATUS_MAP: Record = { 0: '未入库', 1: '部分入库', 2: '已入库', }; const PAYMENT_STATUS_MAP: Record = { 0: '未付款', 1: '部分付款', 2: '已付清', }; const OrdersPage: React.FC = () => { const actionRef = useRef(); const handleConfirm = async (id: string) => { await confirmPurchaseOrder(id); message.success('确认成功'); actionRef.current?.reload(); }; const handleCancel = async (id: string) => { await cancelPurchaseOrder(id); message.success('取消成功'); actionRef.current?.reload(); }; const columns: ProColumns[] = [ { title: '订单编号', dataIndex: 'orderNo', copyable: true }, { title: '供应商', dataIndex: 'supplierName', search: false }, { title: '采购日期', dataIndex: 'orderDate', search: false }, { title: '合同金额', dataIndex: 'contractAmount', search: false }, { title: '入库状态', dataIndex: 'receiptStatus', search: false, render: (_, r) => RECEIPT_STATUS_MAP[r.receiptStatus] ?? '-', }, { title: '付款状态', dataIndex: 'paymentStatus', search: false, render: (_, r) => PAYMENT_STATUS_MAP[r.paymentStatus] ?? '-', }, { title: '状态', dataIndex: 'status', search: false, render: (_, r) => { const s = STATUS_MAP[r.status] ?? STATUS_MAP[0]; return {s.text}; }, }, { title: '创建时间', dataIndex: 'createdAt', valueType: 'dateTime', search: false }, { title: '操作', valueType: 'option', render: (_, r) => [ history.push(`/purchase/orders/${r.orderId}`)}>详情, r.status === 0 && ( Modal.confirm({ title: '确认采购订单?', onOk: () => handleConfirm(r.orderId) })}>确认 ), r.status === 1 && r.receiptStatus === 0 && ( Modal.confirm({ title: '确认取消?', onOk: () => handleCancel(r.orderId) })}>取消 ), ].filter(Boolean), }, ]; return ( actionRef={actionRef} headerTitle="采购订单" rowKey="orderId" columns={columns} request={async (params) => { const res = await listPurchaseOrders({ page: params.current, pageSize: params.pageSize }); return { data: res?.data?.list || [], total: res?.data?.total || 0, success: res?.code === 0 }; }} toolBarRender={() => [ , ]} /> ); }; export default OrdersPage;