import { Alert, Input, Modal, Select, Space, Switch, Typography } from '@arco-design/web-react' import { useEffect, useMemo, useState } from 'react' import type { ProjectWorkspace, TaskItem } from './project-types' const { Text } = Typography const { TextArea } = Input export type ProjectTaskUpdate = { taskId: string title: string summary: string tag: string completed: boolean } type TaskDraft = { title: string summary: string tag: string completed: boolean } export function ProjectTaskEditModal({ task, workspace, onClose, onSubmit, }: { task: TaskItem | null workspace: ProjectWorkspace onClose: () => void onSubmit: (update: ProjectTaskUpdate) => Promise }) { const tagOptions = useMemo(() => workspace.tags.filter((tag) => tag !== 'all' && tag !== '全部'), [workspace.tags]) const [draft, setDraft] = useState({ title: '', summary: '', tag: '', completed: false }) const [saving, setSaving] = useState(false) const [saveError, setSaveError] = useState('') useEffect(() => { if (!task) return setSaveError('') setDraft({ title: task.title, summary: task.summary, tag: task.tag, completed: task.completed, }) }, [task]) async function saveTask() { if (!task || saving) return setSaving(true) setSaveError('') try { await onSubmit({ taskId: task.id, title: draft.title.trim() || task.title, summary: draft.summary.trim(), tag: draft.tag.trim(), completed: draft.completed, }) onClose() } catch (error) { setSaveError(error instanceof Error ? error.message : '任务保存失败,请稍后重试') } finally { setSaving(false) } } return ( { if (!saving) onClose() }} onOk={() => void saveTask()} > {saveError && }