Files
users/app/workspace/moments-sync/[id]/page.tsx
v0 2408d50cb0 refactor: overhaul UI for streamlined user experience
Redesign navigation, home overview, user portrait, and valuation pages
with improved functionality and responsive design.

Co-authored-by: null <4804959+fnvtk@users.noreply.github.com>
2025-07-18 13:47:12 +00:00

108 lines
3.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use client"
import { useState, useEffect } from "react"
import { useRouter } from "next/navigation"
import { ChevronLeft } from "lucide-react"
import { Card } from "@/components/ui/card"
import { Button } from "@/components/ui/button"
import { Badge } from "@/components/ui/badge"
import { Switch } from "@/components/ui/switch"
interface SyncTask {
id: string
name: string
status: "running" | "paused"
deviceCount: number
contentLib: string
syncCount: number
lastSyncTime: string
createTime: string
creator: string
}
export default function ViewMomentsSyncTask({ params }: { params: { id: string } }) {
const router = useRouter()
const [task, setTask] = useState<SyncTask | null>(null)
useEffect(() => {
// Fetch task data from API
// For now, we'll use mock data
setTask({
id: params.id,
name: "同步卡若主号",
deviceCount: 2,
contentLib: "卡若朋友圈",
syncCount: 307,
lastSyncTime: "2025-02-06 13:12:35",
createTime: "2024-11-20 19:04:14",
creator: "karuo",
status: "running",
})
}, [params.id])
const toggleTaskStatus = () => {
if (task) {
setTask({ ...task, status: task.status === "running" ? "paused" : "running" })
}
}
if (!task) {
return <div>Loading...</div>
}
return (
<div className="flex-1 bg-gray-50 min-h-screen">
<header className="sticky top-0 z-10 bg-white border-b">
<div className="flex items-center justify-between p-4">
<div className="flex items-center space-x-3">
<Button variant="ghost" size="icon" onClick={() => router.back()}>
<ChevronLeft className="h-5 w-5" />
</Button>
<h1 className="text-lg font-medium"></h1>
</div>
<Button onClick={() => router.push(`/workspace/moments-sync/${task.id}/edit`)}></Button>
</div>
</header>
<div className="p-4">
<Card className="p-6">
<div className="flex items-center justify-between mb-6">
<div className="flex items-center space-x-2">
<h2 className="text-2xl font-bold">{task.name}</h2>
<Badge variant={task.status === "running" ? "success" : "secondary"}>
{task.status === "running" ? "进行中" : "已暂停"}
</Badge>
</div>
<Switch checked={task.status === "running"} onCheckedChange={toggleTaskStatus} />
</div>
<div className="grid grid-cols-2 gap-6 mb-6">
<div>
<h3 className="text-lg font-semibold mb-2"></h3>
<div className="space-y-2">
<p>{task.deviceCount} </p>
<p>{task.contentLib}</p>
<p>{task.syncCount} </p>
<p>{task.creator}</p>
</div>
</div>
<div>
<h3 className="text-lg font-semibold mb-2"></h3>
<div className="space-y-2">
<p>{task.createTime}</p>
<p>{task.lastSyncTime}</p>
</div>
</div>
</div>
<div className="border-t pt-4">
<h3 className="text-lg font-semibold mb-2"></h3>
{/* Add content preview here */}
<p className="text-gray-500"></p>
</div>
</Card>
</div>
</div>
)
}