Files
cunkebao_v3/SuperAdmin/app/dashboard/projects/new/page.tsx
2025-04-18 15:52:16 +08:00

218 lines
6.8 KiB
TypeScript

"use client"
import type React from "react"
import { useState } 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 { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
import { ArrowLeft } from "lucide-react"
import Link from "next/link"
import { toast, Toaster } from "sonner"
export default function NewProjectPage() {
const router = useRouter()
const [isSubmitting, setIsSubmitting] = useState(false)
const [formData, setFormData] = useState({
name: "",
account: "",
password: "",
confirmPassword: "",
realName: "",
nickname: "",
description: "",
status: "1" // 默认启用
})
const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {
const { id, value } = e.target
setFormData(prev => ({
...prev,
[id]: value
}))
}
const handleStatusChange = (value: string) => {
setFormData(prev => ({
...prev,
status: value
}))
}
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault()
// 表单验证
if (formData.password !== formData.confirmPassword) {
toast.error("两次输入的密码不一致")
return
}
setIsSubmitting(true)
try {
const response = await fetch("http://yishi.com/company/create", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
name: formData.name,
account: formData.account,
password: formData.password,
realName: formData.realName,
username: formData.nickname,
description: formData.description,
status: formData.status
}),
})
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)
}
}
return (
<div className="space-y-6">
<Toaster richColors position="top-center" />
<div className="flex items-center gap-2">
<Button variant="outline" size="icon" asChild>
<Link href="/dashboard/projects">
<ArrowLeft className="h-4 w-4" />
</Link>
</Button>
<h1 className="text-2xl font-bold"></h1>
</div>
<form onSubmit={handleSubmit}>
<Card>
<CardHeader>
<CardTitle></CardTitle>
<CardDescription></CardDescription>
</CardHeader>
<CardContent className="space-y-6">
<div className="space-y-2">
<Label htmlFor="name"></Label>
<Input
id="name"
placeholder="请输入项目名称"
required
value={formData.name}
onChange={handleChange}
/>
</div>
<div className="grid gap-6 md:grid-cols-2">
<div className="space-y-2">
<Label htmlFor="account"></Label>
<Input
id="account"
type="number"
placeholder="请输入手机号"
required
value={formData.account}
onChange={handleChange}
/>
</div>
<div className="space-y-2">
<Label htmlFor="status"></Label>
<Select value={formData.status} onValueChange={handleStatusChange}>
<SelectTrigger>
<SelectValue placeholder="请选择状态" />
</SelectTrigger>
<SelectContent>
<SelectItem value="1"></SelectItem>
<SelectItem value="0"></SelectItem>
</SelectContent>
</Select>
</div>
<div className="space-y-2">
<Label htmlFor="password"></Label>
<Input
id="password"
type="password"
placeholder="请设置初始密码"
required
value={formData.password}
onChange={handleChange}
/>
</div>
<div className="space-y-2">
<Label htmlFor="confirmPassword"></Label>
<Input
id="confirmPassword"
type="password"
placeholder="请再次输入密码"
required
value={formData.confirmPassword}
onChange={handleChange}
/>
</div>
</div>
<div className="grid gap-6 md:grid-cols-2">
<div className="space-y-2">
<Label htmlFor="realName"></Label>
<Input
id="realName"
placeholder="请输入真实姓名"
required
value={formData.realName}
onChange={handleChange}
/>
</div>
<div className="space-y-2">
<Label htmlFor="nickname"></Label>
<Input
id="nickname"
placeholder="请输入昵称"
required
value={formData.nickname}
onChange={handleChange}
/>
</div>
</div>
<div className="space-y-2">
<Label htmlFor="description"></Label>
<Textarea
id="description"
placeholder="请输入项目介绍(选填)"
rows={4}
value={formData.description}
onChange={handleChange}
/>
</div>
</CardContent>
<CardFooter className="flex justify-end gap-2">
<Button variant="outline" asChild>
<Link href="/dashboard/projects"></Link>
</Button>
<Button type="submit" disabled={isSubmitting}>
{isSubmitting ? "创建中..." : "创建项目"}
</Button>
</CardFooter>
</Card>
</form>
</div>
)
}