"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" 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 }; return (

客户池

setSearchTerm(e.target.value)} />

地区

性别

来源

项目

姓名 性别 地区 来源 标签 所属项目 添加时间 操作 {isLoading ? ( 加载中... ) : error ? ( {error} ) : customers.length === 0 ? ( 没有符合条件的客户 ) : ( customers.map((customer) => (
{customer.nickname ? customer.nickname.substring(0, 1) : "?"}
{customer.nickname}
{customer.wechatId}
{customer.gender} {customer.region} {customer.source}
{customer.tags && customer.tags.map((tag) => ( {tag} ))}
{customer.companyName} {customer.createTime} 查看详情 分配客服 添加标签
)) )}
{/* 分页控制 */}
共 {totalItems} 条记录,第 {currentPage} 页,共 {totalPages} 页
) }