"use client" import { useState } from "react" import { ChevronDown, ChevronUp, MoreVertical, Copy, Pencil, Trash2, Clock, Link } from "lucide-react" import { Button } from "@/components/ui/button" import { useRouter } from "next/navigation" import { Line, LineChart, ResponsiveContainer, Tooltip, XAxis, YAxis, CartesianGrid } from "recharts" import { Card } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { DailyAcquisitionChart } from "./DailyAcquisitionChart" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu" interface Task { id: string name: string status: "running" | "paused" | "completed" stats: { devices: number acquired: number added: number } lastUpdated: string executionTime: string nextExecutionTime: string trend: { date: string; customers: number }[] dailyData?: { date: string; acquired: number; added: number }[] } interface ExpandableAcquisitionCardProps { task: Task channel: string onCopy: (taskId: string) => void onDelete: (taskId: string) => void onOpenSettings?: (taskId: string) => void onStatusChange?: (taskId: string, newStatus: "running" | "paused") => void } export function ExpandableAcquisitionCard({ task, channel, onCopy, onDelete, onOpenSettings, onStatusChange, }: ExpandableAcquisitionCardProps) { const router = useRouter() const [expanded, setExpanded] = useState(false) const { devices: deviceCount, acquired: acquiredCount, added: addedCount } = task.stats const passRate = calculatePassRate(acquiredCount, addedCount) const handleEdit = (taskId: string) => { router.push(`/scenarios/${channel}/edit/${taskId}`) } const toggleTaskStatus = () => { if (onStatusChange) { onStatusChange(task.id, task.status === "running" ? "paused" : "running") } } return (

{task.name}

{task.status === "running" ? "进行中" : "已暂停"}
handleEdit(task.id)}> 编辑计划 onCopy(task.id)}> 复制计划 {onOpenSettings && ( onOpenSettings(task.id)}> 计划接口 )} onDelete(task.id)} className="text-red-600"> 删除计划
设备数
{deviceCount}
已获客
{acquiredCount}
已添加
{addedCount}
通过率
{passRate}%
上次执行:{task.lastUpdated}
下次执行:{task.nextExecutionTime}
{expanded && task.dailyData && (

每日获客数据

)}
) } // 计算通过率 function calculatePassRate(acquired: number, added: number) { if (acquired === 0) return 0 return Math.round((added / acquired) * 100) }