"use client" import { useState, useEffect } from "react" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Checkbox } from "@/components/ui/checkbox" import { Badge } from "@/components/ui/badge" import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Search, RefreshCw, Smartphone, Database, Users } from "lucide-react" import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" interface Device { id: string name: string status: "online" | "offline" wechatId: string } interface DatabaseItem { id: string name: string description: string count: number } interface AudienceGroup { id: string name: string count: number description: string } export interface DeviceSelectionData { selectedDevices: string[] selectedDatabase: string selectedAudience: string } interface DeviceSelectionProps { initialData?: Partial onSave: (data: DeviceSelectionData) => void onBack: () => void } export function DeviceSelection({ initialData, onSave, onBack }: DeviceSelectionProps) { const [devices, setDevices] = useState([]) const [databases, setDatabases] = useState([]) const [audienceGroups, setAudienceGroups] = useState([]) const [selectedDevices, setSelectedDevices] = useState(initialData?.selectedDevices || []) const [selectedDatabase, setSelectedDatabase] = useState(initialData?.selectedDatabase || "") const [selectedAudience, setSelectedAudience] = useState(initialData?.selectedAudience || "") const [searchQuery, setSearchQuery] = useState("") const [activeTab, setActiveTab] = useState("all") // 模拟获取设备数据 useEffect(() => { // 模拟设备数据 const mockDevices: Device[] = Array.from({ length: 10 }, (_, i) => ({ id: `device-${i + 1}`, name: `设备 ${i + 1}`, status: Math.random() > 0.3 ? "online" : "offline", wechatId: `wxid_${Math.random().toString(36).substr(2, 8)}`, })) setDevices(mockDevices) // 模拟数据库数据 const mockDatabases: DatabaseItem[] = [ { id: "db-1", name: "默认数据库", description: "系统默认的数据库", count: 1250, }, { id: "db-2", name: "高净值客户", description: "高消费能力的客户群体", count: 450, }, { id: "db-3", name: "潜在客户", description: "有购买意向的潜在客户", count: 780, }, ] setDatabases(mockDatabases) // 模拟目标人群数据 const mockAudienceGroups: AudienceGroup[] = [ { id: "audience-1", name: "全部好友", count: 1250, description: "所有微信好友", }, { id: "audience-2", name: "高频互动好友", count: 320, description: "经常互动的好友", }, { id: "audience-3", name: "潜在客户", count: 450, description: "有购买意向的好友", }, { id: "audience-4", name: "VIP客户", description: "已成交的VIP客户", }, ] setAudienceGroups(mockAudienceGroups) // 设置默认选中的数据库和目标人群 if (!initialData?.selectedDatabase) { setSelectedDatabase("db-1") } if (!initialData?.selectedAudience) { setSelectedAudience("audience-1") } }, [initialData?.selectedDatabase, initialData?.selectedAudience]) // 过滤设备 const filteredDevices = devices.filter((device) => { const matchesSearch = device.name.toLowerCase().includes(searchQuery.toLowerCase()) || device.wechatId.toLowerCase().includes(searchQuery.toLowerCase()) const matchesTab = activeTab === "all" || (activeTab === "selected" && selectedDevices.includes(device.id)) || (activeTab === "online" && device.status === "online") || (activeTab === "offline" && device.status === "offline") return matchesSearch && matchesTab }) // 选择/取消选择单个设备 const handleDeviceSelect = (deviceId: string) => { setSelectedDevices( selectedDevices.includes(deviceId) ? selectedDevices.filter((id) => id !== deviceId) : [...selectedDevices, deviceId], ) } // 保存选择的设备 const handleSave = () => { onSave({ selectedDevices, selectedDatabase, selectedAudience, }) } return (
选择执行点赞任务的设备 选择要执行自动点赞任务的设备、数据库和目标人群 {/* 设备筛选和搜索 */}
setSearchQuery(e.target.value)} className="pl-9" />
{/* 设备分类标签页 */} 全部设备 已选择 ({selectedDevices.length}) 在线设备 离线设备 {/* 设备列表 */}
{filteredDevices.map((device) => (
handleDeviceSelect(device.id)} />
{device.name}
{device.status === "online" ? "在线" : "离线"}
微信号: {device.wechatId}
))} {filteredDevices.length === 0 && (
未找到符合条件的设备
)}
{/* 数据库选择 */}
{databases.map((db) => (

{db.description}

))}
{/* 目标人群选择 */}
{audienceGroups.map((group) => (

{group.description}

))}
) }