"use client" import { useState, useEffect, use } from "react" import { useRouter } from "next/navigation" import { ChevronLeft, Search } from "lucide-react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { StepIndicator } from "../../components/step-indicator" import { BasicSettings } from "../../components/basic-settings" import { DeviceSelectionDialog } from "../../components/device-selection-dialog" import { TagSelector } from "../../components/tag-selector" import { api, ApiResponse } from "@/lib/api" import { showToast } from "@/lib/toast" interface TaskConfig { id: number workbenchId: number interval: number maxLikes: number startTime: string endTime: string contentTypes: string[] devices: number[] targetGroups: string[] tagOperator: number createTime: string updateTime: string } interface Task { id: number name: string type: number status: number autoStart: number createTime: string updateTime: string config: TaskConfig } export default function EditAutoLikePage({ params }: { params: Promise<{ id: string }> }) { const resolvedParams = use(params) const router = useRouter() const [currentStep, setCurrentStep] = useState(1) const [deviceDialogOpen, setDeviceDialogOpen] = useState(false) const [loading, setLoading] = useState(true) const [formData, setFormData] = useState({ taskName: "", likeInterval: 5, maxLikesPerDay: 200, timeRange: { start: "08:00", end: "22:00" }, contentTypes: ["text", "image", "video"], enabled: true, selectedDevices: [] as number[], selectedTags: [] as string[], tagOperator: "and" as "and" | "or", }) useEffect(() => { fetchTaskDetail() }, []) const fetchTaskDetail = async () => { const loadingToast = showToast("正在加载任务信息...", "loading", true); try { const response = await api.get<{code: number, msg: string, data: Task}>(`/v1/workbench/detail?id=${resolvedParams.id}`) if (response.code === 200 && response.data) { const task = response.data setFormData({ taskName: task.name, likeInterval: task.config.interval, maxLikesPerDay: task.config.maxLikes, timeRange: { start: task.config.startTime, end: task.config.endTime }, contentTypes: task.config.contentTypes, enabled: task.status === 1, selectedDevices: task.config.devices, selectedTags: task.config.targetGroups, tagOperator: task.config.tagOperator === 1 ? "and" : "or" }) } else { showToast(response.msg || "获取任务信息失败", "error") router.back() } } catch (error: any) { console.error("获取任务详情失败:", error) showToast(error?.message || "请检查网络连接", "error") router.back() } finally { loadingToast.remove() setLoading(false) } } const handleUpdateFormData = (data: Partial) => { setFormData((prev) => ({ ...prev, ...data })) } const handleNext = () => { setCurrentStep((prev) => Math.min(prev + 1, 3)) } const handlePrev = () => { setCurrentStep((prev) => Math.max(prev - 1, 1)) } const handleComplete = async () => { const loadingToast = showToast("正在更新任务...", "loading", true); try { const response = await api.post('/v1/workbench/update', { id: resolvedParams.id, type: 1, name: formData.taskName, interval: formData.likeInterval, maxLikes: formData.maxLikesPerDay, startTime: formData.timeRange.start, endTime: formData.timeRange.end, contentTypes: formData.contentTypes, enabled: formData.enabled, devices: formData.selectedDevices, targetGroups: formData.selectedTags, tagOperator: formData.tagOperator === 'and' ? 1 : 2 }); if (response.code === 200) { loadingToast.remove(); showToast(response.msg || "更新成功", "success"); router.push("/workspace/auto-like"); } else { loadingToast.remove(); showToast(response.msg || "请稍后再试", "error"); } } catch (error: any) { console.error("更新自动点赞任务失败:", error); loadingToast.remove(); showToast(error?.message || "请检查网络连接或稍后再试", "error"); } }; if (loading) { return null; } return (

编辑自动点赞

{currentStep === 1 && ( )} {currentStep === 2 && (
setDeviceDialogOpen(true)} readOnly value={formData.selectedDevices.length > 0 ? `已选择 ${formData.selectedDevices.length} 个设备` : ""} />
{formData.selectedDevices.length > 0 && (
已选设备:{formData.selectedDevices.length} 个
)}
{ handleUpdateFormData({ selectedDevices: devices }) setDeviceDialogOpen(false) }} />
)} {currentStep === 3 && (
handleUpdateFormData({ selectedTags: tags })} onOperatorChange={(operator) => handleUpdateFormData({ tagOperator: operator })} onBack={handlePrev} onComplete={handleComplete} />
)}
) }