import { Sparkles, Check } from "lucide-react"; import { cn } from "../ui/utils"; import { Badge } from "../ui/badge"; import type { ProjectStatus } from "../../data/mock"; /** AI 生成 / AI 能力标签 */ export function AiBadge({ label = "AI 生成", className }: { label?: string; className?: string }) { return ( {label} ); } /** 页面标题区 */ export function PageHeader({ title, description, actions, }: { title: string; description?: string; actions?: React.ReactNode; }) { return (

{title}

{description &&

{description}

}
{actions &&
{actions}
}
); } const statusColor: Record = { 需求委托: "bg-slate-100 text-slate-700", 立项审批: "bg-amber-100 text-amber-700", 招标文件: "bg-sky-100 text-sky-700", 投标开标: "bg-indigo-100 text-indigo-700", 在线评标: "bg-blue-100 text-blue-700", 定标审批: "bg-violet-100 text-violet-700", 合同归档: "bg-teal-100 text-teal-700", 已完成: "bg-emerald-100 text-emerald-700", }; export function StatusBadge({ status }: { status: ProjectStatus | string }) { return ( {status} ); } export function RiskBadge({ risk }: { risk: string }) { const map: Record = { 正常: "bg-emerald-50 text-emerald-700 border-emerald-200", 关注: "bg-amber-50 text-amber-700 border-amber-200", 高风险: "bg-red-50 text-red-700 border-red-200", }; return ( {risk} ); } /** AI 审核结论标签 */ export function AiResultTag({ result }: { result: string }) { const ok = result === "资质有效"; const map: Record = { 资质有效: "bg-emerald-50 text-emerald-700 border-emerald-200", 存在关联风险: "bg-amber-50 text-amber-700 border-amber-200", 工商异常: "bg-red-50 text-red-700 border-red-200", }; return ( {result} ); } /** 横向步骤条 */ export function Steps({ steps, current, }: { steps: string[]; current: number; }) { return (
{steps.map((s, i) => { const done = i < current; const active = i === current; return (
{done ? : i + 1}
{s}
{i < steps.length - 1 && (
)}
); })}
); } export interface ApprovalNode { name: string; role: string; status: "completed" | "current" | "pending"; time?: string; } /** 审批流程跟踪条 */ export function ApprovalTracker({ nodes }: { nodes: ApprovalNode[] }) { return (
{nodes.map((n, i) => (
{n.status === "completed" ? : i + 1}
{i < nodes.length - 1 && (
)}
{n.role} {n.status === "current" && ( 审批中 )} {n.status === "completed" && ( 已通过 )}

{n.name}

{n.time &&

{n.time}

}
))}
); }