From 42d9cb6be55fa4a5972dc29111494e42ca990b54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=B3=E6=B8=85=E7=88=BD?= Date: Thu, 24 Apr 2025 14:20:02 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B6=85=E7=AE=A1=E5=90=8E=E5=8F=B0=20-=20?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E9=A1=B9=E7=9B=AE=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=8E=89=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=97=B6=E4=BD=BF=E7=94=A8=E7=9A=84=E8=99=9A?= =?UTF-8?q?=E5=81=87=E6=A8=A1=E6=8B=9F=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SuperAdmin/app/dashboard/admins/page.tsx | 60 +---- SuperAdmin/app/dashboard/customers/page.tsx | 229 +++++------------- .../app/dashboard/projects/[id]/edit/page.tsx | 11 +- 3 files changed, 67 insertions(+), 233 deletions(-) diff --git a/SuperAdmin/app/dashboard/admins/page.tsx b/SuperAdmin/app/dashboard/admins/page.tsx index af272b9a..51e80f71 100644 --- a/SuperAdmin/app/dashboard/admins/page.tsx +++ b/SuperAdmin/app/dashboard/admins/page.tsx @@ -21,46 +21,6 @@ import { AlertDialogTitle, } from "@/components/ui/alert-dialog" -// 保留原始示例数据,作为加载失败时的备用数据 -const adminsData = [ - { - id: "1", - account: "admin_zhang", - username: "张管理", - role: "超级管理员", - permissions: ["项目管理", "客户池", "管理员权限"], - createdAt: "2023-05-01", - lastLogin: "2023-06-28 09:15", - }, - { - id: "2", - account: "admin_li", - username: "李管理", - role: "项目管理员", - permissions: ["项目管理", "客户池"], - createdAt: "2023-05-10", - lastLogin: "2023-06-27 14:30", - }, - { - id: "3", - account: "admin_wang", - username: "王管理", - role: "客户管理员", - permissions: ["客户池"], - createdAt: "2023-05-15", - lastLogin: "2023-06-28 11:45", - }, - { - id: "4", - account: "admin_zhao", - username: "赵管理", - role: "项目管理员", - permissions: ["项目管理"], - createdAt: "2023-05-20", - lastLogin: "2023-06-26 16:20", - }, -] - export default function AdminsPage() { const [searchTerm, setSearchTerm] = useState("") const [isLoading, setIsLoading] = useState(true) @@ -95,14 +55,8 @@ export default function AdminsPage() { description: response.msg || "请稍后重试", variant: "destructive", }) - // 加载失败时显示示例数据 - setAdministrators(adminsData.map(admin => ({ - ...admin, - id: Number(admin.id), - name: admin.username, - status: 1 - }))) - setTotalCount(adminsData.length) + setAdministrators([]) + setTotalCount(0) } } catch (error) { console.error("获取管理员列表出错:", error) @@ -111,14 +65,8 @@ export default function AdminsPage() { description: "请检查网络连接后重试", variant: "destructive", }) - // 加载失败时显示示例数据 - setAdministrators(adminsData.map(admin => ({ - ...admin, - id: Number(admin.id), - name: admin.username, - status: 1 - }))) - setTotalCount(adminsData.length) + setAdministrators([]) + setTotalCount(0) } finally { setIsLoading(false) } diff --git a/SuperAdmin/app/dashboard/customers/page.tsx b/SuperAdmin/app/dashboard/customers/page.tsx index ee613e8f..0fe327bd 100644 --- a/SuperAdmin/app/dashboard/customers/page.tsx +++ b/SuperAdmin/app/dashboard/customers/page.tsx @@ -20,94 +20,6 @@ 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("") @@ -162,25 +74,6 @@ export default function CustomersPage() { 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 (
@@ -217,11 +110,7 @@ export default function CustomersPage() { 所有地区 - {regions.map((region) => ( - - {region} - - ))} + {/* 从API获取到的regions数据应在此处映射 */}
@@ -248,28 +137,20 @@ export default function CustomersPage() { 所有来源 - {sources.map((source) => ( - - {source} - - ))} + {/* 从API获取到的sources数据应在此处映射 */}
-

所属项目

+

项目

@@ -277,16 +158,16 @@ export default function CustomersPage() { -
+
- 客户昵称 - 微信ID + 姓名 性别 地区 来源 - 公司名称 + 标签 + 所属项目 添加时间 操作 @@ -294,45 +175,45 @@ export default function CustomersPage() { {isLoading ? ( - - 加载中... - + 加载中... ) : error ? ( - - {error} - + {error} - ) : customers.length > 0 ? ( + ) : 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.nickname.substring(0, 1) : "?"}
-
{customer.nickname || "未知"}
-
{customer.gender}
+
{customer.nickname}
+
{customer.wechatId}
- {customer.wechatId} {customer.gender} {customer.region} {customer.source} - {customer.projectName} - {customer.addTime} + +
+ {customer.tags && customer.tags.map((tag) => ( + + {tag} + + ))} +
+
+ {customer.companyName} + {customer.createTime} @@ -342,39 +223,41 @@ export default function CustomersPage() { - - - 查看详情 + + + + 查看详情 - - 分发客户 - + + 分配客服 + 添加标签 )) - ) : ( - - - 未找到客户 - - )}
- - {/* 使用新的分页组件 */} - + + {/* 分页控制 */} +
+
+ 共 {totalItems} 条记录,第 {currentPage} 页,共 {totalPages} 页 +
+
+ +
+
) diff --git a/SuperAdmin/app/dashboard/projects/[id]/edit/page.tsx b/SuperAdmin/app/dashboard/projects/[id]/edit/page.tsx index 051e2ec7..91a3ccb4 100644 --- a/SuperAdmin/app/dashboard/projects/[id]/edit/page.tsx +++ b/SuperAdmin/app/dashboard/projects/[id]/edit/page.tsx @@ -28,6 +28,9 @@ interface Project { deviceCount: number friendCount: number userCount: number + username: string + status: number + devices?: Device[] } export default function EditProjectPage({ params }: { params: { id: string } }) { @@ -37,7 +40,7 @@ export default function EditProjectPage({ params }: { params: { id: string } }) const [project, setProject] = useState(null) const [password, setPassword] = useState("") const [confirmPassword, setConfirmPassword] = useState("") - const { id } = use(params) + const id = params.id useEffect(() => { const fetchProject = async () => { @@ -82,8 +85,8 @@ export default function EditProjectPage({ params }: { params: { id: string } }) account: project?.account, memo: project?.memo, phone: project?.phone, - username: nickname, - status: parseInt(status), + username: project?.username, + status: project?.status, ...(password && { password }) }), }) @@ -215,7 +218,7 @@ export default function EditProjectPage({ params }: { params: { id: string } })
- {project?.devices.length > 0 && project.devices.map((device) => ( + {project && project.devices && project.devices.length > 0 && project.devices.map((device) => (