import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { useAuth } from '../../contexts/AuthContext'; import { supabase } from '../../supabase/client'; 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-blue-600', bgColor: 'bg-blue-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); const { data, error } = await supabase .from('washing_plans') .select(` *, product:product_id(product_name, color, fabric_code), company:company_id(name) `) .eq('washing_factory_id', auth.company!.id) .in('status', ['pending', 'processing']) .order('created_at', { ascending: false }); if (error) { console.error('获取待处理坯布失败:', error); } else { const formattedItems = (data || []).map(plan => ({ id: plan.id, plan_code: plan.plan_code, purchaser_name: (plan.company as any)?.name || '未知采购商', product_name: (plan.product as any)?.product_name || '-', product_color: (plan.product as any)?.color || '-', fabric_code: (plan.product as any)?.fabric_code || '-', planned_meters: plan.planned_meters, status: plan.status, created_at: plan.created_at })); setItems(formattedItems); } setLoading(false); }; const totalMeters = items.reduce((sum, item) => sum + item.planned_meters, 0); return (
{/* Header */}

待处理坯布

查看待处理的水洗坯布

{/* 统计卡片 */}

待处理计划

{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')}

))}
)}
); }