"use client" import { useState, useEffect } from "react" import { Card } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" import { Checkbox } from "@/components/ui/checkbox" import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Battery, Smartphone, MessageCircle, Users, Clock, Search, Power, RefreshCcw, Settings, AlertTriangle } from "lucide-react" import { ImeiDisplay } from "@/components/ImeiDisplay" import { Input } from "@/components/ui/input" import { Button } from "@/components/ui/button" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" export interface Device { id: string imei: string name: string status: "online" | "offline" battery: number wechatId: string friendCount: number todayAdded: number messageCount: number lastActive: string addFriendStatus: "normal" | "abnormal" } interface DeviceGridProps { devices: Device[] selectable?: boolean selectedDevices?: string[] onSelect?: (deviceIds: string[]) => void itemsPerRow?: number } export function DeviceGrid({ devices, selectable = false, selectedDevices = [], onSelect, itemsPerRow = 2, }: DeviceGridProps) { const [selectedDevice, setSelectedDevice] = useState(null) const [searchTerm, setSearchTerm] = useState("") const [filteredDevices, setFilteredDevices] = useState(devices) useEffect(() => { const filtered = devices.filter( (device) => device.name.toLowerCase().includes(searchTerm.toLowerCase()) || device.imei.includes(searchTerm) || device.wechatId.toLowerCase().includes(searchTerm.toLowerCase()) ) setFilteredDevices(filtered) }, [searchTerm, devices]) const handleSelectAll = () => { if (selectedDevices.length === filteredDevices.length) { onSelect?.([]) } else { onSelect?.(filteredDevices.map((d) => d.id)) } } return (
setSearchTerm(e.target.value)} />
{selectable && (
0} onCheckedChange={handleSelectAll} /> 全选
已选择 {selectedDevices.length} 个设备
)}
{filteredDevices.map((device) => ( { if (selectable) { const newSelection = selectedDevices.includes(device.id) ? selectedDevices.filter((id) => id !== device.id) : [...selectedDevices, device.id] onSelect?.(newSelection) } else { setSelectedDevice(device) } }} >
{selectable && ( e.stopPropagation()} /> )}
{device.name} {device.addFriendStatus === "abnormal" && ( 加友异常 )}
{device.status === "online" ? "在线" : "离线"}
{device.battery}%
{device.friendCount}
{device.messageCount}
+{device.todayAdded}
IMEI:
微信号: {device.wechatId}
))}
setSelectedDevice(null)}> 设备详情 {selectedDevice && (

{selectedDevice.name}
{selectedDevice.status === "online" ? "在线" : "离线"}

IMEI: 微信号: {selectedDevice.wechatId}
状态信息 统计数据 任务管理 运行日志
电池电量
{selectedDevice.battery}%
好友数量
{selectedDevice.friendCount}
今日新增
+{selectedDevice.todayAdded}
消息数量
{selectedDevice.messageCount}
{selectedDevice.addFriendStatus === "abnormal" && (
加友异常警告

该设备当前存在加友异常情况,请检查设备状态和相关配置。

)}
统计数据开发中...
任务管理开发中...
运行日志开发中...
)}
) }