"use client" import { useState, useEffect, use } from "react" import { useRouter } from "next/navigation" import { ChevronLeft, Search, Users } 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 { WechatGroupMemberSelector } from "@/components/WechatGroupMemberSelector" import { WechatFriendSelector } from "@/components/WechatFriendSelector" import { api, ApiResponse } from "@/lib/api" import { showToast } from "@/lib/toast" import { WechatGroupMember } from "@/types/wechat" import { WechatFriend } from "@/components/WechatFriendSelector" 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 [isGroupMemberSelectorOpen, setIsGroupMemberSelectorOpen] = useState(false) const [currentGroupId, setCurrentGroupId] = useState("") const [selectedGroupMembers, setSelectedGroupMembers] = useState([]) const [isFriendSelectorOpen, setIsFriendSelectorOpen] = useState(false) const [selectedFriends, setSelectedFriends] = useState([]) 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[], friends: [] as string[], }) 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, friends: Array.isArray(task.config.friends) ? task.config.friends : [], }) } 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, friends: formData.friends, }); 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"); } }; const handleSelectFriends = () => { setIsFriendSelectorOpen(true) } const handleSaveSelectedFriends = (friends: WechatFriend[]) => { const ids = friends.map(f => f.id) setSelectedFriends(friends) handleUpdateFormData({ friends: ids }) setIsFriendSelectorOpen(false) } 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 && (
0 ? `已选择 ${formData.friends.length} 个好友` : ""} />
{formData.friends.length > 0 && (
已选好友:{formData.friends.length} 个
)}
)}
) }