import { ProjectData } from "@/types/project"; import { calculateCompleteness, getMissingFields } from "@/lib/projectUtils"; import { AlertCircle, CheckCircle2, X } from "lucide-react"; import { Button } from "@/components/ui/button"; interface ProjectAuditPanelProps { project: ProjectData; onClose: () => void; } export default function ProjectAuditPanel({ project, onClose }: ProjectAuditPanelProps) { const completeness = calculateCompleteness(project); const missingFields = getMissingFields(project); const missingCount = missingFields.length; const totalFields = 10; const filledCount = totalFields - missingCount; // Progress bar color based on completeness const getProgressColor = () => { if (completeness >= 100) return "bg-emerald-500"; if (completeness >= 50) return "bg-blue-500"; return "bg-red-500"; }; const getProgressBgColor = () => { if (completeness >= 100) return "bg-emerald-100"; if (completeness >= 50) return "bg-blue-100"; return "bg-red-100"; }; // Pie chart using conic gradient const pieChartStyle = { background: `conic-gradient( #10b981 0deg ${(completeness / 100) * 360}deg, #e2e8f0 ${(completeness / 100) * 360}deg 360deg )`, }; return (
{/* Header */}

项目审计面板

{project.identity.projectName} • {project.identity.moldNumber}

{/* Content */}
{/* Completeness Overview */}
{/* Progress Bar Section */}

项目完成度

{completeness}%
{/* Progress Bar */}
{completeness > 10 && ( {filledCount}/{totalFields} )}
{/* Status Message */}
{completeness >= 100 ? ( <>

数据完整! 所有必填字段已填写。

) : completeness >= 50 ? ( <>

进行中 还有 {missingCount} 个字段待完善。

) : ( <>

严重数据缺口! 缺失 {missingCount} 个关键字段。

)}
{/* Pie Chart Section */}

项目工序

{/* Pie Chart */}
{/* Center Label */}
{missingCount} 剩余
{/* Legend */}
已完成: {filledCount}
待完成: {missingCount}
{/* Missing Fields Table */} {missingFields.length > 0 && (

缺失字段清单

{missingFields.map((field, index) => ( ))}
序号 字段名称
{index + 1} {field}

提示: 请尽快补充以上缺失字段,以确保项目数据完整性。

)} {/* Success Message */} {missingFields.length === 0 && (

数据完整度100%

项目所有工序已全部完成!

)}
); }