"use client" import { useState, useEffect } from "react" import { Card } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from "@/components/ui/table" import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "@/components/ui/dialog" import { Plus, Pencil, Trash2 } from "lucide-react" interface TrafficTeam { id: string name: string commission: number } interface TrafficTeamSettingsProps { formData?: any onChange: (data: any) => void } export function TrafficTeamSettings({ formData = {}, onChange }: TrafficTeamSettingsProps) { // Initialize teams with an empty array if formData.trafficTeams is undefined const [teams, setTeams] = useState([]) const [isAddTeamOpen, setIsAddTeamOpen] = useState(false) const [editingTeam, setEditingTeam] = useState(null) const [newTeam, setNewTeam] = useState>({ name: "", commission: 0, }) // Initialize teams state safely useEffect(() => { if (formData && Array.isArray(formData.trafficTeams)) { setTeams(formData.trafficTeams) } else { // If formData.trafficTeams is undefined or not an array, initialize with empty array // Also update the parent formData to include the empty trafficTeams array setTeams([]) onChange({ ...formData, trafficTeams: [] }) } }, [formData]) const handleAddTeam = () => { if (!newTeam.name) return const updatedTeams = [...teams] if (editingTeam) { const index = updatedTeams.findIndex((team) => team.id === editingTeam.id) if (index !== -1) { updatedTeams[index] = { ...updatedTeams[index], name: newTeam.name || updatedTeams[index].name, commission: newTeam.commission !== undefined ? newTeam.commission : updatedTeams[index].commission, } } } else { updatedTeams.push({ id: Date.now().toString(), name: newTeam.name, commission: newTeam.commission || 0, }) } setTeams(updatedTeams) setIsAddTeamOpen(false) setNewTeam({ name: "", commission: 0 }) setEditingTeam(null) // Ensure we're creating a new object for formData to trigger proper updates const updatedFormData = { ...(formData || {}), trafficTeams: updatedTeams } onChange(updatedFormData) } const handleEditTeam = (team: TrafficTeam) => { setEditingTeam(team) setNewTeam(team) setIsAddTeamOpen(true) } const handleDeleteTeam = (teamId: string) => { const updatedTeams = teams.filter((team) => team.id !== teamId) setTeams(updatedTeams) // Ensure we're creating a new object for formData to trigger proper updates const updatedFormData = { ...(formData || {}), trafficTeams: updatedTeams } onChange(updatedFormData) } return (

打粉团队设置

团队名称 佣金比例 操作 {teams.length === 0 ? ( 暂无数据 ) : ( teams.map((team) => ( {team.name} {team.commission}%
)) )}
{editingTeam ? "编辑团队" : "添加团队"}
setNewTeam({ ...newTeam, name: e.target.value })} placeholder="请输入团队名称" />
setNewTeam({ ...newTeam, commission: Number(e.target.value) })} placeholder="请输入佣金比例" />
) }