"use client" import { useState, useEffect } from "react" import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Button } from "@/components/ui/button" import { Search } from "lucide-react" import { Checkbox } from "@/components/ui/checkbox" interface WechatGroup { id: string name: string memberCount: number avatar: string owner: string customer: string } interface WechatGroupSelectorProps { open: boolean onOpenChange: (open: boolean) => void selectedGroups: WechatGroup[] onSelect: (groups: WechatGroup[]) => void } export function WechatGroupSelector({ open, onOpenChange, selectedGroups, onSelect }: WechatGroupSelectorProps) { const [searchQuery, setSearchQuery] = useState("") const [groups, setGroups] = useState([]) const [loading, setLoading] = useState(false) useEffect(() => { if (open) { fetchGroups() } }, [open]) const fetchGroups = async () => { setLoading(true) // 模拟从API获取群聊列表 await new Promise((resolve) => setTimeout(resolve, 1000)) const mockGroups = Array.from({ length: 10 }, (_, i) => ({ id: `group-${i}`, name: `群聊${i + 1}`, memberCount: Math.floor(Math.random() * 400) + 100, avatar: `/placeholder.svg?height=40&width=40&text=群${i + 1}`, owner: `群主${i + 1}`, customer: `客户${i + 1}`, })) setGroups(mockGroups) setLoading(false) } const filteredGroups = groups.filter((group) => group.name.toLowerCase().includes(searchQuery.toLowerCase())) return ( 选择聊天群
setSearchQuery(e.target.value)} className="pl-9" />
{loading ? (
加载中...
) : filteredGroups.length === 0 ? (
未找到匹配的群聊
) : ( filteredGroups.map((group) => (
g.id === group.id)} onCheckedChange={(checked) => { if (checked) { onSelect([...selectedGroups, group]) } else { onSelect(selectedGroups.filter((g) => g.id !== group.id)) } }} /> {group.name}
{group.name}
群主:{group.owner}
归属客户:{group.customer}
{group.memberCount}人
)) )}
) }