"use client" import type React from "react" import { useState } from "react" import { Button } from "@/components/ui/button" import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Textarea } from "@/components/ui/textarea" import { Switch } from "@/components/ui/switch" import { useToast } from "@/components/ui/use-toast" import TrafficPoolSelector from "../components/traffic-pool-selector" import { useRouter } from "next/navigation" // 定义分发规则表单的属性接口 interface DistributionRuleFormProps { initialData?: { id?: string name?: string description?: string trafficPoolId?: string trafficPoolName?: string keywords?: string[] isActive?: boolean distributionRatio?: number targetAudience?: string } onSubmit?: (data: any) => void isEdit?: boolean } // 导出分发规则表单组件 export default function DistributionRuleForm({ initialData = {}, onSubmit, isEdit = false, }: DistributionRuleFormProps) { const router = useRouter() const { toast } = useToast() // 表单状态 const [formData, setFormData] = useState({ name: initialData.name || "", description: initialData.description || "", trafficPoolId: initialData.trafficPoolId || "", trafficPoolName: initialData.trafficPoolName || "", keywords: initialData.keywords || [], isActive: initialData.isActive !== undefined ? initialData.isActive : true, distributionRatio: initialData.distributionRatio || 50, targetAudience: initialData.targetAudience || "", }) const [keywordInput, setKeywordInput] = useState("") const [isSubmitting, setIsSubmitting] = useState(false) // 处理表单输入变化 const handleChange = (field: string, value: any) => { setFormData((prev) => ({ ...prev, [field]: value })) } // 处理关键词添加 const handleAddKeyword = () => { if (keywordInput.trim() && !formData.keywords.includes(keywordInput.trim())) { setFormData((prev) => ({ ...prev, keywords: [...prev.keywords, keywordInput.trim()], })) setKeywordInput("") } } // 处理关键词删除 const handleRemoveKeyword = (keyword: string) => { setFormData((prev) => ({ ...prev, keywords: prev.keywords.filter((k) => k !== keyword), })) } // 处理流量池选择 const handlePoolSelect = (poolId: string, poolName: string) => { setFormData((prev) => ({ ...prev, trafficPoolId: poolId, trafficPoolName: poolName, })) } // 处理表单提交 const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setIsSubmitting(true) try { // 表单验证 if (!formData.name) { toast({ title: "错误", description: "请输入分发规则名称", variant: "destructive", }) setIsSubmitting(false) return } if (!formData.trafficPoolId) { toast({ title: "错误", description: "请选择流量池", variant: "destructive", }) setIsSubmitting(false) return } // 如果有onSubmit回调,则调用 if (onSubmit) { await onSubmit(formData) } else { // 模拟API调用 await new Promise((resolve) => setTimeout(resolve, 1000)) toast({ title: isEdit ? "更新成功" : "创建成功", description: isEdit ? "流量分发规则已成功更新" : "新的流量分发规则已创建", }) // 返回列表页 router.push("/workspace/traffic-distribution") } } catch (error) { console.error("提交表单时出错:", error) toast({ title: "提交失败", description: "保存分发规则时发生错误,请重试", variant: "destructive", }) } finally { setIsSubmitting(false) } } return (
) }