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 (
{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}
}
))}
);
}