diff --git a/src/components/audit/CreateTaskDialog.tsx b/src/components/audit/CreateTaskDialog.tsx index 9199f16..6dee43f 100644 --- a/src/components/audit/CreateTaskDialog.tsx +++ b/src/components/audit/CreateTaskDialog.tsx @@ -26,9 +26,10 @@ interface CreateTaskDialogProps { open: boolean; onOpenChange: (open: boolean) => void; onTaskCreated: () => void; + preselectedProjectId?: string; } -export default function CreateTaskDialog({ open, onOpenChange, onTaskCreated }: CreateTaskDialogProps) { +export default function CreateTaskDialog({ open, onOpenChange, onTaskCreated, preselectedProjectId }: CreateTaskDialogProps) { const [projects, setProjects] = useState([]); const [loading, setLoading] = useState(false); const [creating, setCreating] = useState(false); @@ -61,8 +62,12 @@ export default function CreateTaskDialog({ open, onOpenChange, onTaskCreated }: useEffect(() => { if (open) { loadProjects(); + // 如果有预选择的项目ID,设置到表单中 + if (preselectedProjectId) { + setTaskForm(prev => ({ ...prev, project_id: preselectedProjectId })); + } } - }, [open]); + }, [open, preselectedProjectId]); const loadProjects = async () => { try { diff --git a/src/pages/ProjectDetail.tsx b/src/pages/ProjectDetail.tsx index 367fc8d..1be09cc 100644 --- a/src/pages/ProjectDetail.tsx +++ b/src/pages/ProjectDetail.tsx @@ -7,9 +7,6 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Progress } from "@/components/ui/progress"; import { ArrowLeft, - GitBranch, - Calendar, - Users, Settings, ExternalLink, Code, @@ -23,8 +20,9 @@ import { } from "lucide-react"; import { api } from "@/shared/config/database"; import { runRepositoryAudit } from "@/features/projects/services"; -import type { Project, AuditTask, AuditIssue } from "@/shared/types"; +import type { Project, AuditTask } from "@/shared/types"; import { toast } from "sonner"; +import CreateTaskDialog from "@/components/audit/CreateTaskDialog"; export default function ProjectDetail() { const { id } = useParams<{ id: string }>(); @@ -32,6 +30,7 @@ export default function ProjectDetail() { const [tasks, setTasks] = useState([]); const [loading, setLoading] = useState(true); const [scanning, setScanning] = useState(false); + const [showCreateTaskDialog, setShowCreateTaskDialog] = useState(false); useEffect(() => { if (id) { @@ -112,6 +111,15 @@ export default function ProjectDetail() { }); }; + const handleCreateTask = () => { + setShowCreateTaskDialog(true); + }; + + const handleTaskCreated = () => { + toast.success("审计任务已创建"); + loadProjectData(); // 重新加载项目数据以显示新任务 + }; + if (loading) { return (
@@ -352,7 +360,7 @@ export default function ProjectDetail() {

审计任务列表

- @@ -429,7 +437,7 @@ export default function ProjectDetail() {

暂无审计任务

创建第一个审计任务开始代码质量分析

- @@ -454,6 +462,14 @@ export default function ProjectDetail() {
+ + {/* 创建任务对话框 */} +
); } \ No newline at end of file