import React, { useState, useEffect } from 'react'; import { Table, Button, Input, Select, DatePicker, message, Card, Tabs } from 'antd'; import { PlusOutlined, EditOutlined, DeleteOutlined, SearchOutlined, PlayCircleOutlined, PauseCircleOutlined } from '@ant-design/icons'; import { marketingDataSource, Ad } from '@/services/marketingDataSource'; const { Option } = Select; const { RangePicker } = DatePicker; const { Search } = Input; const { TabPane } = Tabs; const Ads: React.FC = () => { const [ads, setAds] = useState([]); const [loading, setLoading] = useState(false); const [filters, setFilters] = useState({ platform: '', status: '', search: '', dateRange: null as [Date, Date] | null, }); useEffect(() => { fetchAds(); }, [filters]); const fetchAds = async () => { setLoading(true); try { const data = await marketingDataSource.fetchAds(filters); setAds(data); } catch (error) { message.error('Failed to load ads'); } finally { setLoading(false); } }; const handleAddAd = () => { message.info('创建广告功能开发中'); }; const handleStartAd = (id: string) => { message.success('广告已启动'); fetchAds(); }; const handlePauseAd = (id: string) => { message.success('广告已暂停'); fetchAds(); }; const handleEditAd = (id: string) => { message.info('编辑广告功能开发中'); }; const handleDeleteAd = (id: string) => { message.success('广告已删除'); fetchAds(); }; const columns = [ { title: '广告名称', dataIndex: 'name', key: 'name', }, { title: '平台', dataIndex: 'platform', key: 'platform', }, { title: '活动', dataIndex: 'campaign', key: 'campaign', }, { title: '状态', dataIndex: 'status', key: 'status', render: (status: string) => { const statusMap = { active: '活跃', paused: '暂停', completed: '已完成', }; return statusMap[status] || status; }, }, { title: '预算', dataIndex: 'budget', key: 'budget', render: (budget: number) => `$${budget.toFixed(2)}`, }, { title: '支出', dataIndex: 'spend', key: 'spend', render: (spend: number) => `$${spend.toFixed(2)}`, }, { title: '点击量', dataIndex: 'clicks', key: 'clicks', }, { title: '转化数', dataIndex: 'conversions', key: 'conversions', }, { title: 'ROI', dataIndex: 'roi', key: 'roi', render: (roi: number) => `${roi.toFixed(2)}x`, }, { title: '操作', key: 'action', render: (_: unknown, record: Ad) => (
{record.status === 'active' ? ( ) : ( )}
), }, ]; return (

广告管理

setFilters({ ...filters, search: e.target.value })} /> setFilters({ ...filters, dateRange: dates })} />
); }; export default Ads;