"use client" import { useState, useEffect, use } 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 { 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: "消息设置" }, ] export default function EditAcquisitionPlan({ params }: { params: Promise<{ 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: "", posters: [], device: [], remarkType: "default", greeting: "", addInterval: 60, startTime: "09:00", endTime: "18:00", enabled: true, sceneId: "", scenario: "", planNameEdited: false }) const [planNameEdited, setPlanNameEdited] = useState(false); const resolvedParams = use(params); const { id, channel } = resolvedParams; useEffect(() => { const fetchPlanData = async () => { try { const [planRes, scenesRes] = await Promise.all([ api.get(`/v1/plan/detail?planId=${id}`), api.get("/v1/plan/scenes") ]) if (planRes.code === 200 && planRes.data) { setFormData({ ...planRes.data, device: planRes.data.device || [], selectedDevices: planRes.data.device || [], planNameEdited: false }) } if (scenesRes.code === 200 && Array.isArray(scenesRes.data)) { setScenes(scenesRes.data) } setLoading(false) } catch (error) { toast({ title: "加载失败", description: "获取计划数据失败,请重试", variant: "destructive", }) setLoading(false) } } fetchPlanData() }, [id]) const handleSave = async () => { try { const submitData = { ...formData, device: formData.selectedDevices || formData.device, posters: formData.materials || formData.posters, }; const { selectedDevices, materials, ...finalData } = submitData; const res = await api.put(`/v1/plan/update?planId=${id}`, finalData); if (res.code === 200) { toast({ title: "保存成功", description: "获客计划已更新", }) router.push(`/scenarios/${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.posters.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 || !formData.messageContent.trim()) { toast({ title: "请完善信息", description: "请填写消息内容", variant: "destructive", }) return false } return true default: return true } } const onChange = (data: any) => { if ('planName' in data) setPlanNameEdited(true); setFormData(prev => ({ ...prev, ...data })) } if (loading) { return (

加载中...

) } const renderStepContent = () => { switch (currentStep) { case 1: return case 2: return case 3: 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()}
) }