'use client' import { useState } from 'react' import Link from 'next/link' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card' import { Button } from '@/components/ui/Button' import { SuccessTag, PendingTag, WarningTag } from '@/components/ui/Tag' import { FileText, Search, Filter, Clock, CheckCircle, AlertTriangle, ChevronRight, Settings } from 'lucide-react' import { getPlatformInfo } from '@/lib/platforms' // 模拟 Brief 列表 const mockBriefs = [ { id: 'brief-001', projectName: 'XX品牌618推广', brandName: 'XX护肤品牌', platform: 'douyin', status: 'configured', uploadedAt: '2026-02-01', configuredAt: '2026-02-02', creatorCount: 15, sellingPoints: 5, blacklistWords: 12, }, { id: 'brief-002', projectName: '新品口红系列', brandName: 'XX美妆品牌', platform: 'xiaohongshu', status: 'pending', uploadedAt: '2026-02-05', configuredAt: null, creatorCount: 0, sellingPoints: 0, blacklistWords: 0, }, { id: 'brief-003', projectName: '护肤品秋季活动', brandName: 'XX护肤品牌', platform: 'bilibili', status: 'configured', uploadedAt: '2025-09-15', configuredAt: '2025-09-16', creatorCount: 10, sellingPoints: 4, blacklistWords: 8, }, ] function StatusTag({ status }: { status: string }) { if (status === 'configured') return 已配置 if (status === 'pending') return 待配置 return 处理中 } export default function AgencyBriefsPage() { const [searchQuery, setSearchQuery] = useState('') const [statusFilter, setStatusFilter] = useState('all') const filteredBriefs = mockBriefs.filter(brief => { const matchesSearch = brief.projectName.toLowerCase().includes(searchQuery.toLowerCase()) || brief.brandName.toLowerCase().includes(searchQuery.toLowerCase()) const matchesStatus = statusFilter === 'all' || brief.status === statusFilter return matchesSearch && matchesStatus }) const pendingCount = mockBriefs.filter(b => b.status === 'pending').length const configuredCount = mockBriefs.filter(b => b.status === 'configured').length return (
{/* 页面标题 */}

Brief 配置

配置项目 Brief,设置审核规则

{pendingCount} 待配置 {configuredCount} 已配置
{/* 搜索和筛选 */}
setSearchQuery(e.target.value)} className="w-full pl-10 pr-4 py-2 border border-border-subtle rounded-lg bg-bg-elevated text-text-primary focus:outline-none focus:ring-2 focus:ring-accent-indigo" />
{/* Brief 列表 */}
{filteredBriefs.map((brief) => { const platform = getPlatformInfo(brief.platform) return ( {/* 平台顶部条 */} {platform && (
{platform.icon} {platform.name}
)}
{brief.status === 'configured' ? ( ) : ( )}

{brief.projectName}

{brief.brandName} 上传于 {brief.uploadedAt}
{brief.status === 'configured' && (
{brief.sellingPoints}
卖点
{brief.blacklistWords}
违禁词
{brief.creatorCount}
达人
)}
) })}
{filteredBriefs.length === 0 && (

暂无匹配的 Brief

)}
) }