"use client" import type React from "react" import { useState, useEffect } from "react" import { useRouter } from "next/navigation" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { Label } from "@/components/ui/label" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { ArrowLeft, Plus, Trash } from "lucide-react" import Link from "next/link" import { toast, Toaster } from "sonner" interface Device { id: number memo: string } export default function EditProjectPage({ params }: { params: { id: string } }) { const router = useRouter() const [isSubmitting, setIsSubmitting] = useState(false) const [isLoading, setIsLoading] = useState(true) const [projectName, setProjectName] = useState("") const [account, setAccount] = useState("") const [description, setDescription] = useState("") const [devices, setDevices] = useState([]) const [phone, setPhone] = useState("") const [nickname, setNickname] = useState("") const [status, setStatus] = useState("1") const [password, setPassword] = useState("") const [confirmPassword, setConfirmPassword] = useState("") useEffect(() => { const fetchProjectDetail = async () => { try { const response = await fetch(`http://yishi.com/company/detail/${params.id}`) const data = await response.json() if (data.code === 200) { setProjectName(data.data.name || "") setAccount(data.data.account || "") setDescription(data.data.memo || "") setDevices(data.data.devices || []) setPhone(data.data.phone || "") setNickname(data.data.username || "") setStatus(data.data.status.toString()) } else { toast.error(data.msg || "获取项目信息失败") } } catch (error) { toast.error("网络错误,请稍后重试") } finally { setIsLoading(false) } } fetchProjectDetail() }, [params.id]) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (password && password !== confirmPassword) { toast.error("两次输入的密码不一致") return } setIsSubmitting(true) try { const response = await fetch(`http://yishi.com/company/update`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ id: params.id, name: projectName, account, memo: description, phone, username: nickname, status: parseInt(status), ...(password && { password }) }), }) const data = await response.json() if (data.code === 200) { toast.success("更新成功") router.push("/dashboard/projects") } else { toast.error(data.msg) } } catch (error) { toast.error("网络错误,请稍后重试") } finally { setIsSubmitting(false) } } const handleAddDevice = () => { router.push(`/dashboard/projects/${params.id}/devices/new`) } if (isLoading) { return
加载中...
} return (

编辑项目

项目基本信息 编辑项目的名称、手机号等基础信息
setProjectName(e.target.value)} placeholder="请输入项目名称" required />
setAccount(e.target.value)} placeholder="请输入登录的账号" required />
setNickname(e.target.value)} placeholder="用于账号登录后显示的用户名,可以填真实姓名" required />
setPassword(e.target.value)} placeholder="不修改请留空" />
setConfirmPassword(e.target.value)} placeholder="不修改请留空" />
setPhone(e.target.value)} placeholder="手机号可用于登录" required />
{devices.length > 0 && devices.map((device) => (
))}