import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { useAuth } from '../../contexts/AuthContext'; import { washingApi } from '../../api'; import { motion } from 'framer-motion'; import { ArrowLeft, Package, Clock, ChevronRight } from 'lucide-react'; import { useResponsive } from '../../hooks/useResponsive'; import type { WashingPlan } from '../../types'; interface PendingFabricItem { id: string; plan_code: string; purchaser_name: string; product_name: string; product_color: string; fabric_code: string; planned_meters: number; status: string; created_at: string; } const statusMap: Record = { pending: { label: '待确认', color: 'text-amber-600', bgColor: 'bg-amber-50' }, processing: { label: '处理中', color: 'text-purple-600', bgColor: 'bg-purple-50' } }; export function PendingFabric() { const navigate = useNavigate(); const { auth } = useAuth(); const { isMobile } = useResponsive(); const [items, setItems] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { if (!auth.company) return; fetchPendingFabric(); }, [auth.company]); const fetchPendingFabric = async () => { setLoading(true); try { const data = await washingApi.listPendingPlans(); const formattedItems = (data || []).map((plan: any) => ({ id: plan.id, plan_code: plan.plan_code, purchaser_name: plan.purchaser_name || plan.company?.name || '未知采购商', product_name: plan.product_name || plan.product?.product_name || '-', product_color: plan.product_color || plan.product?.color || '-', fabric_code: plan.fabric_code || plan.product?.fabric_code || '-', planned_meters: plan.planned_meters, status: plan.status, created_at: plan.created_at })); setItems(formattedItems); } catch { } setLoading(false); }; const totalMeters = items.reduce((sum, item) => sum + item.planned_meters, 0); return (
{/* Header - 与 Dashboard 一致 */}

待处理坯布

查看待处理的水洗坯布

{/* 统计卡片 */}

待处理计划

{items.length}

待处理米数

{totalMeters.toFixed(2)}

{/* 列表 */} {loading ? (
加载中...
) : items.length === 0 ? (

暂无待处理坯布

) : (

待处理列表

{items.map((item, index) => ( navigate(`/washing/plans?id=${item.id}`)} className="p-4 hover:bg-gray-50 transition-colors cursor-pointer" >
{statusMap[item.status]?.label} {item.plan_code}

{item.purchaser_name}

{item.product_name} - {item.product_color}

坯布码: {item.fabric_code}

{item.planned_meters}米

{new Date(item.created_at).toLocaleDateString('zh-CN')}

))}
)}
); }