"use client" import React from "react" import { useState, useEffect } from "react" import { useRouter } from "next/navigation" import Link from "next/link" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { ArrowLeft, Edit } from "lucide-react" import { toast } from "sonner" import { use } from "react" import Image from "next/image" import { Badge } from "@/components/ui/badge" interface ProjectProfile { id: number name: string memo: string companyId: number createTime: string account: string phone: string | null deviceCount: number friendCount: number userCount: number } interface Device { id: number memo: string phone: string model: string brand: string alive: number deviceId: number wechatId: string friendCount: number wAlive: number imei: string } interface SubUser { id: number account: string username: string phone: string avatar: string status: number createTime: string typeId: number } interface ProjectDetailPageProps { params: { id: string } } export default function ProjectDetailPage({ params }: ProjectDetailPageProps) { const { id } = use(params) const router = useRouter() const [isLoading, setIsLoading] = useState(true) const [isDevicesLoading, setIsDevicesLoading] = useState(false) const [isSubUsersLoading, setIsSubUsersLoading] = useState(false) const [profile, setProfile] = useState(null) const [devices, setDevices] = useState([]) const [subUsers, setSubUsers] = useState([]) const [activeTab, setActiveTab] = useState("overview") useEffect(() => { const fetchProjectProfile = async () => { setIsLoading(true) try { const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/company/profile/${id}`) const data = await response.json() if (data.code === 200) { setProfile(data.data) } else { toast.error(data.msg || "获取项目信息失败") } } catch (error) { toast.error("网络错误,请稍后重试") } finally { setIsLoading(false) } } fetchProjectProfile() }, [id]) useEffect(() => { const fetchDevices = async () => { if (activeTab === "devices") { setIsDevicesLoading(true) try { const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/company/devices?companyId=${id}`) const data = await response.json() if (data.code === 200) { setDevices(data.data) } else { toast.error(data.msg || "获取设备列表失败") } } catch (error) { toast.error("网络错误,请稍后重试") } finally { setIsDevicesLoading(false) } } } fetchDevices() }, [activeTab, id]) useEffect(() => { const fetchSubUsers = async () => { if (activeTab === "accounts") { setIsSubUsersLoading(true) try { const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/company/subusers?companyId=${id}`) const data = await response.json() if (data.code === 200) { setSubUsers(data.data) } else { toast.error(data.msg || "获取子账号列表失败") } } catch (error) { toast.error("网络错误,请稍后重试") } finally { setIsSubUsersLoading(false) } } } fetchSubUsers() }, [activeTab, id]) if (isLoading) { return
加载中...
} if (!profile) { return
未找到项目信息
} return (

{profile.name}

项目概览 关联设备 子账号 基本信息
项目名称
{profile.name}
手机号
{profile.phone || "未设置"}
账号
{profile.account}
创建时间
{profile.createTime}
项目介绍
{profile.memo}
关联设备数
{profile.deviceCount}
子账号数
{profile.userCount}
微信好友总数
{profile.friendCount}
关联设备列表 项目关联的所有设备及其微信好友数量 {isDevicesLoading ? (
加载中...
) : devices.length === 0 ? (
暂无数据
) : ( <> 设备名称 设备型号 品牌 IMEI 设备状态 微信状态 微信好友数量 {devices.map((device) => ( {device.memo} {device.model} {device.brand} {device.imei} {device.alive === 1 ? "在线" : "离线"} {device.wAlive === 1 ? "已登录" : device.wAlive === 0 ? "已登出" : "未登录微信"} {device.friendCount || 0} ))}
共 {devices.length} 条数据
)}
子账号列表 项目下的所有子账号 {isSubUsersLoading ? (
加载中...
) : subUsers.length === 0 ? (
暂无数据
) : ( <> 头像 账号ID 登录账号 昵称 手机号 状态 账号类型 创建时间 {subUsers.map((user) => ( {user.id} {user.account} {user.username} {user.phone} {user.status === 1 ? "启用" : "禁用"} {user.typeId === 1 ? "操盘手" : "门店顾问"} {user.createTime} ))}
共 {subUsers.length} 条数据
)}
) }