'use client' import { useState } from 'react' import { useRouter, useParams } from 'next/navigation' import Link from 'next/link' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card' import { Button } from '@/components/ui/Button' import { SuccessTag, PendingTag, WarningTag, ErrorTag } from '@/components/ui/Tag' import { ArrowLeft, Calendar, Users, FileText, Video, TrendingUp, Clock, CheckCircle, XCircle, ChevronRight } from 'lucide-react' // 模拟项目详情数据 const mockProject = { id: 'proj-001', name: 'XX品牌618推广', status: 'active', deadline: '2026-06-18', createdAt: '2026-02-01', description: '618大促活动营销内容审核项目', briefUrl: '/briefs/xx-brand-618.pdf', stats: { scriptTotal: 20, scriptPassed: 15, scriptPending: 3, scriptRejected: 2, videoTotal: 20, videoPassed: 12, videoPending: 5, videoRejected: 3, }, agencies: [ { id: 'agency-001', name: '星耀传媒', creatorCount: 8, passRate: 92 }, { id: 'agency-002', name: '创意无限', creatorCount: 5, passRate: 88 }, { id: 'agency-003', name: '美妆达人MCN', creatorCount: 2, passRate: 75 }, ], recentTasks: [ { id: 'task-001', type: 'video', creatorName: '小美护肤', status: 'pending', submittedAt: '2026-02-06 14:30' }, { id: 'task-002', type: 'script', creatorName: '美妆Lisa', status: 'approved', submittedAt: '2026-02-06 12:15' }, { id: 'task-003', type: 'video', creatorName: '健身王', status: 'rejected', submittedAt: '2026-02-06 10:00' }, { id: 'task-004', type: 'script', creatorName: '时尚达人', status: 'pending', submittedAt: '2026-02-05 16:45' }, ], } function StatCard({ title, value, icon: Icon, color }: { title: string; value: number | string; icon: React.ElementType; color: string }) { return (

{title}

{value}

) } function TaskStatusTag({ status }: { status: string }) { switch (status) { case 'approved': return 已通过 case 'pending': return 待审核 case 'rejected': return 已驳回 default: return 未知 } } export default function ProjectDetailPage() { const router = useRouter() const params = useParams() const project = mockProject const scriptPassRate = Math.round((project.stats.scriptPassed / project.stats.scriptTotal) * 100) const videoPassRate = Math.round((project.stats.videoPassed / project.stats.videoTotal) * 100) return (
{/* 顶部导航 */}

{project.name}

{project.description}

进行中
{/* 项目信息 */}
截止日期: {project.deadline} 创建时间: {project.createdAt} 查看 Brief
{/* 统计卡片 */}
{/* 审核进度 */} 审核进度 {/* 脚本审核 */}
脚本审核 {project.stats.scriptPassed}/{project.stats.scriptTotal} 已通过
通过 {project.stats.scriptPassed} 待审 {project.stats.scriptPending} 驳回 {project.stats.scriptRejected}
{/* 视频审核 */}
{project.stats.videoPassed}/{project.stats.videoTotal} 已通过
通过 {project.stats.videoPassed} 待审 {project.stats.videoPending} 驳回 {project.stats.videoRejected}
{/* 代理商列表 */} 参与代理商 {project.agencies.map((agency) => (
{agency.name} = 90 ? 'text-accent-green' : agency.passRate >= 80 ? 'text-accent-indigo' : 'text-orange-400'}`}> {agency.passRate}%
{agency.creatorCount} 位达人参与
))}
{/* 最近任务 */} 最近提交
{project.recentTasks.map((task) => ( ))}
类型 达人 状态 提交时间 操作
{task.type === 'script' ? : {task.creatorName} {task.submittedAt}
) }