import { useState } from 'react' import { Button, Card, Descriptions, Input, Modal, Progress, Space, Tag, Typography } from '@arco-design/web-react' import { IconArrowLeft, IconCalendar, IconCheckCircle, IconCheckCircleFill, IconClockCircle, IconPlus } from '@arco-design/web-react/icon' import type { ProjectWorkspace, TaskItem } from './project-types' const { Title, Text, Paragraph } = Typography export function ProjectTasks({ activeWorkspace, activeTaskID, onOpenTask, onCloseTask, onCreateTask, onCreateProjectTag, }: { activeWorkspace: ProjectWorkspace activeTaskID: string | null onOpenTask: (taskID: string) => void onCloseTask: () => void onSelectItem: (title: string) => void onCreateTask: () => void onCreateProjectTag: (name: string) => void }) { const { tasks, project, tags } = activeWorkspace const activeTask = tasks.find((task) => task.id === activeTaskID) const pendingTasks = tasks.filter((task) => !task.completed) const completedTasks = tasks.filter((task) => task.completed) const projectTags = tags.filter((tag) => tag !== 'all' && tag !== '全部') const [tagModalOpen, setTagModalOpen] = useState(false) const [tagName, setTagName] = useState('') if (activeTask) { return } function submitTag() { const nextTag = tagName.trim() if (!nextTag) return onCreateProjectTag(nextTag) setTagName('') setTagModalOpen(false) } return (
工作计划 {project.name} 的标签、未完成计划和完成记录。
标签
全部 {projectTags.map((tag) => ( {tag} ))}
未完成的计划 {pendingTasks.length}
{pendingTasks.map((task) => ( ))} {pendingTasks.length === 0 && 当前没有未完成计划}
完成的计划 {completedTasks.length}
{completedTasks.map((task) => ( ))} {completedTasks.length === 0 && 当前没有完成计划}
{ setTagModalOpen(false) setTagName('') }} onOk={submitTag} >
) } function TaskDetail({ activeWorkspace, task, onBack }: { activeWorkspace: ProjectWorkspace; task: TaskItem; onBack: () => void }) { const percent = Number.parseInt(task.progress, 10) return (
{task.title} {activeWorkspace.project.name} 的任务详情
{task.tag || '未设置标签'}
任务进度
任务说明 {task.summary || '暂无任务说明'}
) }