import React, { useState, useEffect, useMemo } from 'react' import axios from 'axios' /** * 采购单管理 * 数据来源:happy 后端 /api/purchase-orders(P1 后端合并阶段开放) */ function PurchaseOrderManagement() { const [orders, setOrders] = useState([]) const [loading, setLoading] = useState(true) const [keyword, setKeyword] = useState('') useEffect(() => { let alive = true axios.get('/api/purchase-orders') .then(res => { if (alive) setOrders(Array.isArray(res.data) ? res.data : res.data?.items || []) }) .catch(() => { if (alive) setOrders([]) }) .finally(() => { if (alive) setLoading(false) }) return () => { alive = false } }, []) const rows = useMemo(() => { const kw = keyword.trim().toLowerCase() if (!kw) return orders return orders.filter(o => [o.po_no, o.supplier_name].filter(Boolean).join(' ').toLowerCase().includes(kw)) }, [orders, keyword]) const statusText = (s) => ({ draft: '草稿', issued: '已下达', received: '已收货', partial: '部分到货', closed: '已关闭', cancelled: '已取消' }[s] || s || '—') return (
| 采购单号 | 供应商 | 下单日期 | 预计交期 | 金额 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| 加载中... | ||||||
|
暂无采购单
采购单接口待接入(P1 后端合并阶段开放)
|
||||||
| {o.po_no} | {o.supplier_name || '—'} | {o.order_date ? new Date(o.order_date).toLocaleDateString('zh-CN') : '—'} | {o.expected_date ? new Date(o.expected_date).toLocaleDateString('zh-CN') : '—'} | {o.total_amount ? `${o.currency || 'CNY'} ${Number(o.total_amount).toFixed(2)}` : '—'} | {statusText(o.status)} | |