"use client" import { useState, useEffect } from "react" import { ChevronLeft } from "lucide-react" import { Button } from "@/components/ui/button" import { cn } from "@/lib/utils" import { BasicSettings } from "../../../new/steps/BasicSettings" import { FriendRequestSettings } from "../../../new/steps/FriendRequestSettings" import { MessageSettings } from "../../../new/steps/MessageSettings" import { TagSettings } from "@/scenarios/new/steps/TagSettings" import { useRouter } from "next/navigation" import { toast } from "@/components/ui/use-toast" import { api, ApiResponse } from "@/lib/api" const steps = [ { id: 1, title: "步骤一", subtitle: "基础设置" }, { id: 2, title: "步骤二", subtitle: "好友申请设置" }, { id: 3, title: "步骤三", subtitle: "消息设置" }, { id: 4, title: "步骤四", subtitle: "流量标签设置" }, ] export default function EditAcquisitionPlan({ params }: { params: { channel: string; id: string } }) { const router = useRouter() const [currentStep, setCurrentStep] = useState(1) const [loading, setLoading] = useState(true) const [scenes, setScenes] = useState([]) const [formData, setFormData] = useState({ planName: "", accounts: [], dailyLimit: 10, enabled: true, remarkType: "phone", remarkKeyword: "", greeting: "", addFriendTimeStart: "09:00", addFriendTimeEnd: "18:00", addFriendInterval: 1, maxDailyFriends: 20, messageInterval: 1, messageContent: "", }) useEffect(() => { const fetchPlanData = async () => { try { const [planRes, scenesRes] = await Promise.all([ api.get(`/v1/plan/detail?id=${params.id}`), api.get("/v1/plan/scenes") ]) if (planRes.code === 200 && planRes.data) { setFormData(planRes.data) } if (scenesRes.code === 200 && Array.isArray(scenesRes.data)) { setScenes(scenesRes.data) } setLoading(false) } catch (error) { toast({ title: "加载失败", description: "获取计划数据失败,请重试", variant: "destructive", }) setLoading(false) } } fetchPlanData() }, [params.id]) const handleSave = async () => { try { const res = await api.put(`/v1/plan/update?id=${params.id}`, formData) if (res.code === 200) { toast({ title: "保存成功", description: "获客计划已更新", }) router.push(`/scenarios/${params.channel}`) } else { toast({ title: "保存失败", description: res.msg || "更新计划失败,请重试", variant: "destructive", }) } } catch (error) { toast({ title: "保存失败", description: "更新计划失败,请重试", variant: "destructive", }) } } const handlePrev = () => { setCurrentStep((prevStep) => Math.max(prevStep - 1, 1)) } const handleNext = () => { if (isStepValid()) { if (currentStep === steps.length) { handleSave() } else { setCurrentStep((prevStep) => Math.min(prevStep + 1, steps.length)) } } } const isStepValid = () => { switch (currentStep) { case 1: if (!formData.planName.trim() || formData.accounts.length === 0) { toast({ title: "请完善信息", description: "请填写计划名称并选择至少一个账号", variant: "destructive", }) return false } return true case 2: if (!formData.greeting.trim()) { toast({ title: "请完善信息", description: "请填写好友申请信息", variant: "destructive", }) return false } return true case 3: if (!formData.messageContent.trim()) { toast({ title: "请完善信息", description: "请填写消息内容", variant: "destructive", }) return false } return true case 4: return true default: return true } } if (loading) { return (

加载中...

) } const renderStepContent = () => { switch (currentStep) { case 1: return case 2: return ( ) case 3: return case 4: return default: return null } } return (

编辑获客计划

{steps.map((step) => (
= step.id ? "text-blue-600" : "text-gray-400", )} >
= step.id ? "border-blue-600 bg-blue-600 text-white" : "border-gray-300 bg-white text-gray-400", )} > {step.id}
{step.title}
{step.subtitle}
))}
{renderStepContent()}
{currentStep > 1 && ( )}
) }