"use client" import { useState, useEffect } from "react" import Link from "next/link" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, DropdownMenuSeparator, } from "@/components/ui/dropdown-menu" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Search, MoreHorizontal, Eye, UserPlus, Filter, ChevronLeft, ChevronRight } from "lucide-react" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { Badge } from "@/components/ui/badge" import { getTrafficPoolList } from "@/lib/traffic-pool-api" import { Customer } from "@/lib/traffic-pool-api" import { PaginationControls } from "@/components/ui/pagination-controls" // Sample customer data const customersData = [ { id: "1", name: "张三", avatar: "/placeholder.svg?height=40&width=40", wechatId: "zhangsan123", gender: "男", region: "北京", source: "微信搜索", tags: ["潜在客户", "高消费"], projectName: "电商平台项目", addedDate: "2023-06-10", }, { id: "2", name: "李四", avatar: "/placeholder.svg?height=40&width=40", wechatId: "lisi456", gender: "男", region: "上海", source: "朋友推荐", tags: ["活跃用户"], projectName: "社交媒体营销", addedDate: "2023-06-12", }, { id: "3", name: "王五", avatar: "/placeholder.svg?height=40&width=40", wechatId: "wangwu789", gender: "男", region: "广州", source: "广告点击", tags: ["新用户"], projectName: "企业官网推广", addedDate: "2023-06-15", }, { id: "4", name: "赵六", avatar: "/placeholder.svg?height=40&width=40", wechatId: "zhaoliu321", gender: "男", region: "深圳", source: "线下活动", tags: ["高消费", "忠诚客户"], projectName: "教育平台项目", addedDate: "2023-06-18", }, { id: "5", name: "钱七", avatar: "/placeholder.svg?height=40&width=40", wechatId: "qianqi654", gender: "女", region: "成都", source: "微信群", tags: ["潜在客户"], projectName: "金融服务推广", addedDate: "2023-06-20", }, { id: "6", name: "孙八", avatar: "/placeholder.svg?height=40&width=40", wechatId: "sunba987", gender: "女", region: "武汉", source: "微信搜索", tags: ["活跃用户", "高消费"], projectName: "电商平台项目", addedDate: "2023-06-22", }, { id: "7", name: "周九", avatar: "/placeholder.svg?height=40&width=40", wechatId: "zhoujiu135", gender: "女", region: "杭州", source: "朋友推荐", tags: ["新用户"], projectName: "社交媒体营销", addedDate: "2023-06-25", }, ] export default function CustomersPage() { const [searchTerm, setSearchTerm] = useState("") const [selectedRegion, setSelectedRegion] = useState("") const [selectedGender, setSelectedGender] = useState("") const [selectedSource, setSelectedSource] = useState("") const [selectedProject, setSelectedProject] = useState("") // 客户列表状态 const [customers, setCustomers] = useState([]) const [isLoading, setIsLoading] = useState(true) const [error, setError] = useState(null) // 分页状态 const [currentPage, setCurrentPage] = useState(1) const [totalPages, setTotalPages] = useState(1) const [totalItems, setTotalItems] = useState(0) const [pageSize, setPageSize] = useState(100) // 获取客户列表数据 useEffect(() => { const fetchCustomers = async () => { setIsLoading(true); try { const response = await getTrafficPoolList(currentPage, pageSize, searchTerm); if (response.code === 200 && response.data) { setCustomers(response.data.list); setTotalItems(response.data.total); setTotalPages(Math.ceil(response.data.total / pageSize)); setError(null); } else { setError(response.msg || "获取客户列表失败"); setCustomers([]); setTotalItems(0); // Reset totals on error setTotalPages(0); } } catch (err: any) { setError(err.message || "获取客户列表失败"); setCustomers([]); setTotalItems(0); // Reset totals on error setTotalPages(0); } finally { setIsLoading(false); } }; fetchCustomers(); }, [currentPage, pageSize, searchTerm]); // 修改后的页面大小处理函数 const handlePageSizeChange = (newSize: number) => { setPageSize(newSize); setCurrentPage(1); // Reset to first page when page size changes }; // Filter customers based on search and filters (兼容示例数据) const filteredCustomers = customersData.filter((customer) => { const matchesSearch = customer.name.toLowerCase().includes(searchTerm.toLowerCase()) || customer.wechatId.toLowerCase().includes(searchTerm.toLowerCase()) const matchesRegion = selectedRegion ? customer.region === selectedRegion : true const matchesGender = selectedGender ? customer.gender === selectedGender : true const matchesSource = selectedSource ? customer.source === selectedSource : true const matchesProject = selectedProject ? customer.projectName === selectedProject : true return matchesSearch && matchesRegion && matchesGender && matchesSource && matchesProject }) // Get unique values for filters const regions = [...new Set(customersData.map((c) => c.region))] const sources = [...new Set(customersData.map((c) => c.source))] const projects = [...new Set(customersData.map((c) => c.projectName))] return (

客户池

setSearchTerm(e.target.value)} />

地区

性别

来源

所属项目

客户昵称 微信ID 性别 地区 来源 公司名称 添加时间 操作 {isLoading ? ( 加载中... ) : error ? ( {error} ) : customers.length > 0 ? ( customers.map((customer) => (
{ // 图片加载失败时使用默认图片 const target = e.target as HTMLImageElement; target.src = "/placeholder.svg?height=40&width=40"; }} /> {(customer.nickname || "未知").slice(0, 2)}
{customer.nickname || "未知"}
{customer.gender}
{customer.wechatId} {customer.gender} {customer.region} {customer.source} {customer.projectName} {customer.addTime} 查看详情 分发客户
)) ) : ( 未找到客户 )}
{/* 使用新的分页组件 */}
) }