"use client" import { useState } from "react" import { zodResolver } from "@hookform/resolvers/zod" import { useForm } from "react-hook-form" import * as z from "zod" import { Button } from "@/components/ui/button" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card" import { toast } from "sonner" import { apiRequest } from '@/lib/api-utils' const formSchema = z.object({ name: z.string().min(2, "项目名称至少需要2个字符"), account: z.string().min(3, "账号至少需要3个字符"), password: z.string().min(6, "密码至少需要6个字符"), confirmPassword: z.string().min(6, "确认密码至少需要6个字符"), phone: z.string().optional(), realname: z.string().optional(), nickname: z.string().optional(), memo: z.string().optional(), }).refine((data) => data.password === data.confirmPassword, { message: "两次输入的密码不一致", path: ["confirmPassword"], }); interface ProjectCreateProps { onSuccess?: () => void } export default function ProjectCreate({ onSuccess }: ProjectCreateProps) { const [isLoading, setIsLoading] = useState(false) const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { name: "", account: "", password: "", confirmPassword: "", phone: "", realname: "", nickname: "", memo: "", }, }) const onSubmit = async (values: z.infer) => { setIsLoading(true) try { // 从localStorage获取token和admin_id const token = localStorage.getItem('admin_token') const adminId = localStorage.getItem('admin_id') // 设置cookie if (token && adminId) { const domain = new URL(process.env.NEXT_PUBLIC_API_BASE_URL || '').hostname document.cookie = `admin_token=${token}; path=/; domain=${domain}` document.cookie = `admin_id=${adminId}; path=/; domain=${domain}` } const result = await apiRequest('/company/create', 'POST', { name: values.name, account: values.account, password: values.password, phone: values.phone || null, realname: values.realname || null, nickname: values.nickname || null, memo: values.memo || null, }) if (result.code === 200) { toast.success("项目创建成功") form.reset() if (onSuccess) { onSuccess() } } else { toast.error(result.msg || "创建项目失败") } } catch (error) { console.error("创建项目失败:", error) toast.error("网络错误,请稍后再试") } finally { setIsLoading(false) } } return ( 新建项目 创建一个新的项目并设置基本信息
( 项目名称 )} />
( 账号 )} /> ( 手机号 )} />
( 密码 )} /> ( 确认密码 )} />
( 真实姓名 )} /> ( 昵称 )} />
( 项目描述