import { useTheme } from '@/contexts/ThemeContext'; import { TaskListItem } from '@/pages/TaskManagement'; import { Bot, ChevronRight, Download, Edit, Eye, FileText, Layers, MoreHorizontal, Play, User, Users, Workflow } from 'lucide-react'; import React, { useEffect, useState } from 'react'; import { PageType } from '../Sidebar'; import { format } from 'date-fns'; import { useNavigate } from 'react-router-dom'; import { useChatContext } from '@/contexts/ChatContext'; interface KanbanColumnProps { TaskType?: string; task: TaskListItem; onNavigate: (page: PageType) => void; handleStartAnalysis: (task: TaskListItem) => void } export const TaskCard: React.FC = ({ task, TaskType = 'task', onNavigate, handleStartAnalysis }) => { const { theme } = useTheme(); const { setStartConfig } = useChatContext(); const isDark = theme === 'dark'; const textPrimary = isDark ? 'text-white' : 'text-gray-900'; const textMuted = isDark ? 'text-slate-500' : 'text-gray-400'; const textSecondary = isDark ? 'text-slate-400' : 'text-gray-600'; const navigate = useNavigate(); const handleStartChange = (task: TaskListItem) => { // if (TaskType === 'task') { // handleStartAnalysis(task); // } else { // sceneDataChange(task); // } handleStartAnalysis(task); } const sceneDataChange = (task: TaskListItem) => { const sceneItem = JSON.parse(task.scene); if (sceneItem.taskJson) { sceneItem.taskJson = JSON.parse(sceneItem.taskJson); setStartConfig({ ...sceneItem.taskJson, llm_preset_id: 'BAILING', consistency_mode: 'soft', phase_config: { diverge_rounds: 3 }, task_context: task.overview }); navigate('/qa-center/mope-chat') } console.log('sceneItem', sceneItem); } // 处理卡片点击 const handleTaskClick = (task: TaskListItem) => { if (TaskType === 'sentiment') { console.log('点击了', task) sceneDataChange(task); // window.open(`http://ch1.b.uat.4.cn/taskcop/#/situation-overview/action/sentiment?taskId=${task.id}`) } else { if (task.column === 'completed') { // if (task.type === 'consultation') { // onNavigate('task-consult-result'); // } else { // onNavigate('strategy-result'); // } navigate('/strategy-result') } else if (task.column === 'running') { // navigate('/task-management/task-consult') sceneDataChange(task); // window.open(`http://ch1.b.uat.4.cn/mopeweb/#/mope?taskOverview=${task.overview}`) // if (task.type === 'scene') { // onNavigate('task-scene'); // } else if (task.type === 'consultation') { // onNavigate('task-consult'); // } else { // onNavigate('task-single'); // } } } }; // 获取任务类型配置 const getTypeConfig = (type: string) => { if (isDark) { switch (type) { case 'single': return { label: '单智能体', color: 'bg-cyan-500/20 text-cyan-400', icon: Bot }; case 'scene': return { label: '场景执行', color: 'bg-purple-500/20 text-purple-400', icon: Workflow }; case 'consultation': return { label: '多智能体会商', color: 'bg-orange-500/20 text-orange-400', icon: Users }; case 'multi-agent': return { label: '多智能体协同', color: 'bg-green-500/20 text-green-400', icon: Layers }; } } else { switch (type) { case 'single': return { label: '单智能体', color: 'bg-blue-100 text-blue-600', icon: Bot }; case 'scene': return { label: '场景执行', color: 'bg-purple-100 text-purple-600', icon: Workflow }; case 'consultation': return { label: '多智能体会商', color: 'bg-orange-100 text-orange-600', icon: Users }; case 'multi-agent': return { label: '多智能体协同', color: 'bg-green-100 text-green-600', icon: Layers }; } } }; const typeConfig = getTypeConfig('single'); // 获取任务等级 const getLevel = (type: number) => { if (isDark) { switch (type) { case 1: return { label: '一般', color: 'bg-cyan-500/20 text-cyan-400', icon: Bot }; case 2: return { label: '紧急', color: 'bg-purple-500/20 text-purple-400', icon: Workflow }; case 3: return { label: '加急', color: 'bg-orange-500/20 text-orange-400', icon: Users }; } } else { switch (type) { case 1: return { label: '一般', color: 'bg-blue-100 text-blue-600', icon: Bot }; case 2: return { label: '紧急', color: 'bg-purple-100 text-purple-600', icon: Workflow }; case 3: return { label: '加急', color: 'bg-orange-100 text-orange-600', icon: Users }; } } }; const levelConfig = getLevel(task.taskLevel); const LevelIcon = levelConfig?.icon || Bot; // 获取状态配置 const getStatusConfig = (column: string) => { if (column === 'unanalyzed') { return { label: '待分析', color: isDark ? 'bg-yellow-500/20 text-yellow-400' : 'bg-yellow-100 text-yellow-600' }; } else if (column === 'running') { return { label: '运行中', color: isDark ? 'bg-blue-500/20 text-blue-400' : 'bg-red-100 text-red-600' }; } else { return { label: '已完成', color: isDark ? 'bg-green-500/20 text-green-400' : 'bg-green-100 text-green-600' }; } }; const statusConfig = getStatusConfig(task.column); return (
handleTaskClick(task)} > {/* 卡片头部:模式标签 + 状态标签 */}
{LevelIcon && } {levelConfig.label} {statusConfig.label}
{/* 任务名称 */}

{task.taskName}

{/* 任务编号 */}

TASK-{task.id}

{/* 任务摘要 */}

{task.overview}

{/* 补充信息区 */} {/*
{task.type === 'single' && task.agent && (
执行智能体: {task.agent}
)} {task.type === 'scene' && task.scene && (
关联场景: {task.scene}
)} {task.type === 'consultation' && ( <>
参与智能体: {task.participants?.length || 0}个
{task.currentRound && (
当前轮次: 第{task.currentRound}轮
)} )} {task.column === 'analyzing' && task.currentPhase && (
当前阶段: {task.currentPhase}
)}
*/} {/* 时间信息 */}
{task.taskDirection}
{format(new Date(task.updateTime), 'yyyy-MM-dd HH:mm:ss')}
{/* 操作按钮区 */}
{task.column === 'unanalyzed' && ( <> {/* */} )} {task.column === 'running' && ( <> {/* */} )} {task.column === 'completed' && ( <> {/* */} )} {/* */}
); }