"use client" import { useState, useEffect } from "react" 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 Image from "next/image" import { Badge } from "@/components/ui/badge" import { apiRequest } from '@/lib/api-utils' 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 ProjectDetailProps { projectId: string onEdit?: (projectId: string) => void } export default function ProjectDetail({ projectId, onEdit }: ProjectDetailProps) { 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") const fetchProject = async () => { try { setIsLoading(true) const result = await apiRequest(`/company/profile/${projectId}`) if (result.code === 200 && result.data) { setProfile(result.data) } else { toast.error(result.msg || "获取项目信息失败") } } catch (error) { console.error("获取项目信息失败:", error) toast.error("网络错误,请稍后再试") } finally { setIsLoading(false) } } const fetchDevices = async () => { try { setIsLoading(true) const result = await apiRequest(`/company/devices?companyId=${projectId}`) if (result.code === 200 && result.data) { setDevices(result.data) } else { toast.error(result.msg || "获取设备列表失败") } } catch (error) { console.error("获取设备列表失败:", error) toast.error("网络错误,请稍后再试") } finally { setIsLoading(false) } } const fetchSubusers = async () => { try { setIsLoading(true) const result = await apiRequest(`/company/subusers?companyId=${projectId}`) if (result.code === 200 && result.data) { setSubUsers(result.data) } else { toast.error(result.msg || "获取子用户列表失败") } } catch (error) { console.error("获取子用户列表失败:", error) toast.error("网络错误,请稍后再试") } finally { setIsLoading(false) } } useEffect(() => { fetchProject() }, [projectId]) useEffect(() => { fetchDevices() }, [activeTab, projectId]) useEffect(() => { fetchSubusers() }, [activeTab, projectId]) if (isLoading) { return
加载中...
} if (!profile) { return
未找到项目信息
} return (

{profile.name}

{onEdit && ( )}
项目概览 关联设备 子账号 基本信息
项目名称
{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.typeId === 1 ? "操盘手" : "门店顾问"} {user.createTime} ))}
共 {subUsers.length} 条数据
)}
) }