代码提交

This commit is contained in:
wong
2025-07-06 00:17:24 +08:00
parent e808ee1a90
commit 15b899b0e8
9 changed files with 606 additions and 230 deletions

View File

@@ -26,16 +26,7 @@ interface TaskDetail {
startTime: string
endTime: string
enabled: boolean
devices: {
id: string
name: string
avatar: string
}[]
contentLibraries: {
id: string
name: string
count: number
}[]
config: any
lastSyncTime: string
createTime: string
creator: string
@@ -79,7 +70,7 @@ export default function MomentsSyncDetailPage({ params }: { params: { id: string
const fetchTaskDetail = async () => {
setIsLoading(true)
try {
const response = await api.get<ApiResponse>(`/v1/workbench/moments-records?workbenchId=${params.id}`)
const response = await api.get<ApiResponse>(`/v1/workbench/detail?id=${params.id}`)
if (response.code === 200 && response.data) {
setTaskDetail(response.data)
@@ -260,33 +251,6 @@ export default function MomentsSyncDetailPage({ params }: { params: { id: string
</Button>
<h1 className="text-lg font-medium"></h1>
</div>
<div className="flex items-center space-x-2">
<Switch
checked={taskDetail.status === "running"}
onCheckedChange={toggleTaskStatus}
/>
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="ghost" size="icon">
<MoreVertical className="h-5 w-5" />
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem onClick={handleEdit}>
<Edit className="h-4 w-4 mr-2" />
</DropdownMenuItem>
<DropdownMenuItem onClick={handleCopy}>
<Copy className="h-4 w-4 mr-2" />
</DropdownMenuItem>
<DropdownMenuItem onClick={confirmDelete} className="text-red-500 hover:text-red-600">
<Trash2 className="h-4 w-4 mr-2" />
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div>
</div>
</header>
@@ -296,8 +260,8 @@ export default function MomentsSyncDetailPage({ params }: { params: { id: string
<div className="flex items-center justify-between mb-4">
<div className="flex items-center space-x-2">
<h2 className="text-xl font-semibold">{taskDetail.name}</h2>
<Badge variant={taskDetail.status === "running" ? "success" : "secondary"}>
{taskDetail.status === "running" ? "进行中" : "已暂停"}
<Badge variant={taskDetail.status == 1 ? "success" : "secondary"}>
{taskDetail.status == 1 ? "进行中" : "已暂停"}
</Badge>
</div>
</div>
@@ -323,28 +287,24 @@ export default function MomentsSyncDetailPage({ params }: { params: { id: string
<div className="space-y-4">
<div>
<div className="font-medium mb-1"></div>
<div className="text-gray-600">{taskDetail.accountType === 1 ? "业务号" : "人设号"}</div>
</div>
<div>
<div className="font-medium mb-1"></div>
<div className="text-gray-600">{taskDetail.syncType === 1 ? "循环同步" : "实时更新"}</div>
<div className="text-gray-600">{taskDetail.config.accountType === 1 ? "业务号" : "人设号"}</div>
</div>
<div>
<div className="font-medium mb-1"></div>
<div className="text-gray-600">{taskDetail.syncInterval} </div>
<div className="text-gray-600">{taskDetail.config.syncInterval} </div>
</div>
<div>
<div className="font-medium mb-1"></div>
<div className="text-gray-600">{taskDetail.syncCount} </div>
<div className="text-gray-600">{taskDetail.config.syncCount} </div>
</div>
<div>
<div className="font-medium mb-1"></div>
<div className="text-gray-600">{taskDetail.startTime} - {taskDetail.endTime}</div>
<div className="text-gray-600">{taskDetail.config.startTime} - {taskDetail.config.endTime}</div>
</div>
<div>
<div className="font-medium mb-1"></div>
<div className="flex flex-wrap gap-2 mt-1">
{taskDetail.contentLibraries.map((lib) => (
{taskDetail.config.contentLibraries.map((lib) => (
<Badge key={lib.id} variant="outline" className="bg-blue-50">
{lib.name}
</Badge>
@@ -357,24 +317,24 @@ export default function MomentsSyncDetailPage({ params }: { params: { id: string
<TabsContent value="devices" className="mt-4">
<Card className="p-4">
{taskDetail.devices.length === 0 ? (
{taskDetail.config.deviceList.length === 0 ? (
<div className="text-center py-8 text-gray-500"></div>
) : (
<div className="divide-y">
{taskDetail.devices.map((device) => (
{taskDetail.config.deviceList.map((device) => (
<div key={device.id} className="flex items-center py-3 first:pt-0 last:pb-0">
<Avatar className="h-10 w-10 mr-3">
{device.avatar ? (
<img src={device.avatar} alt={device.name} />
<img src={device.avatar} alt={device.nickname} />
) : (
<div className="bg-blue-100 text-blue-600 h-full w-full flex items-center justify-center">
{device.name.charAt(0)}
{device.nickname}
</div>
)}
</Avatar>
<div>
<div className="font-medium">{device.name}</div>
<div className="text-xs text-gray-500">ID: {device.id}</div>
<div className="font-medium">{device.nickname}</div>
<div className="text-xs text-gray-500">{device.alias || device.wechatId}</div>
</div>
</div>
))}