"use client" import { useState, useEffect } from "react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Checkbox } from "@/components/ui/checkbox" import { Card, CardContent } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Search, Smartphone, Users } from "lucide-react" interface Device { id: string name: string status: "online" | "offline" } interface TrafficPool { id: string name: string deviceId: string deviceName: string type: "wechat" | "device" userCount: number lastUpdated: string } interface TrafficPoolSelectionProps { formData: any updateFormData: (data: any) => void onNext: () => void } export function TrafficPoolSelection({ formData, updateFormData, onNext }: TrafficPoolSelectionProps) { const [devices, setDevices] = useState([]) const [trafficPools, setTrafficPools] = useState([]) const [selectedDeviceIds, setSelectedDeviceIds] = useState(formData.deviceIds || []) const [selectedPoolIds, setSelectedPoolIds] = useState(formData.trafficPoolIds || []) const [searchQuery, setSearchQuery] = useState("") const [isLoading, setIsLoading] = useState(true) const [activeTab, setActiveTab] = useState("devices") useEffect(() => { // 模拟加载设备和流量池数据 const fetchData = async () => { await new Promise((resolve) => setTimeout(resolve, 1000)) const mockDevices: Device[] = [ { id: "device-1", name: "iPhone 13 Pro", status: "online" }, { id: "device-2", name: "Xiaomi 12", status: "online" }, { id: "device-3", name: "Huawei P40", status: "offline" }, { id: "device-4", name: "OPPO Find X3", status: "online" }, { id: "device-5", name: "Samsung S21", status: "offline" }, ] const mockTrafficPools: TrafficPool[] = [ { id: "pool-1", name: "微信好友池-设备1", deviceId: "device-1", deviceName: "iPhone 13 Pro", type: "wechat", userCount: 156, lastUpdated: "2023-12-15T10:30:00Z", }, { id: "pool-2", name: "设备流量池-设备1", deviceId: "device-1", deviceName: "iPhone 13 Pro", type: "device", userCount: 287, lastUpdated: "2023-12-14T15:45:00Z", }, { id: "pool-3", name: "微信好友池-设备2", deviceId: "device-2", deviceName: "Xiaomi 12", type: "wechat", userCount: 203, lastUpdated: "2023-12-16T09:15:00Z", }, { id: "pool-4", name: "设备流量池-设备3", deviceId: "device-3", deviceName: "Huawei P40", type: "device", userCount: 156, lastUpdated: "2023-12-13T14:20:00Z", }, { id: "pool-5", name: "微信好友池-设备4", deviceId: "device-4", deviceName: "OPPO Find X3", type: "wechat", userCount: 178, lastUpdated: "2023-12-12T11:30:00Z", }, ] setDevices(mockDevices) setTrafficPools(mockTrafficPools) setIsLoading(false) } fetchData() }, []) const handleDeviceToggle = (deviceId: string) => { setSelectedDeviceIds((prev) => { if (prev.includes(deviceId)) { return prev.filter((id) => id !== deviceId) } else { return [...prev, deviceId] } }) } const handlePoolToggle = (poolId: string) => { setSelectedPoolIds((prev) => { if (prev.includes(poolId)) { return prev.filter((id) => id !== poolId) } else { return [...prev, poolId] } }) } const filteredDevices = devices.filter((device) => device.name.toLowerCase().includes(searchQuery.toLowerCase())) const filteredPools = trafficPools.filter( (pool) => (selectedDeviceIds.length === 0 || selectedDeviceIds.includes(pool.deviceId)) && pool.name.toLowerCase().includes(searchQuery.toLowerCase()), ) const handleContinue = () => { const selectedPools = trafficPools.filter((pool) => selectedPoolIds.includes(pool.id)) const totalUserCount = selectedPools.reduce((sum, pool) => sum + pool.userCount, 0) updateFormData({ deviceIds: selectedDeviceIds, deviceNames: devices.filter((device) => selectedDeviceIds.includes(device.id)).map((device) => device.name), trafficPoolIds: selectedPoolIds, trafficPoolNames: selectedPools.map((pool) => pool.name), trafficPoolSize: totalUserCount, }) onNext() } return (

选择流量池

选择需要进行策略优化的设备和流量池

setSearchQuery(e.target.value)} className="pl-9" />
设备选择 流量池选择 {isLoading ? (
) : filteredDevices.length > 0 ? (
{filteredDevices.map((device) => ( handleDeviceToggle(device.id)} >

{device.name}

{device.status === "online" ? "在线" : "离线"}
handleDeviceToggle(device.id)} className="h-5 w-5" />
))}
) : (
未找到匹配的设备
)}
{isLoading ? (
) : filteredPools.length > 0 ? (
{filteredPools.map((pool) => ( handlePoolToggle(pool.id)} >

{pool.name}

设备: {pool.deviceName} 用户数: {pool.userCount}
handlePoolToggle(pool.id)} className="h-5 w-5" />
))}
) : (
{selectedDeviceIds.length > 0 ? "所选设备没有可用的流量池" : "请先选择设备或搜索流量池"}
)}
已选择 {selectedDeviceIds.length} 个设备, {selectedPoolIds.length} 个流量池
) }