diff --git a/frontend/src/pages/AdminDashboard.tsx b/frontend/src/pages/AdminDashboard.tsx index 3a90d4f..d75e8d9 100644 --- a/frontend/src/pages/AdminDashboard.tsx +++ b/frontend/src/pages/AdminDashboard.tsx @@ -105,7 +105,7 @@ export default function AdminDashboard() { } return ( -
+
{/* Decorative Background */}
@@ -137,12 +137,12 @@ export default function AdminDashboard() { {/* 系统配置 */} - + {/* 数据概览 */} - +
{/* 任务完成率 */}
@@ -269,7 +269,7 @@ export default function AdminDashboard() { {/* 存储管理 */} - +

@@ -280,7 +280,7 @@ export default function AdminDashboard() { 浏览器 IndexedDB 存储空间的使用详情

-
+
{storageDetails ? ( <>
@@ -375,12 +375,12 @@ export default function AdminDashboard() { {/* 数据操作 */} - + {/* 设置 */} - +

数据库设置

diff --git a/frontend/src/pages/AuditTasks.tsx b/frontend/src/pages/AuditTasks.tsx index e65281e..e5aec1a 100644 --- a/frontend/src/pages/AuditTasks.tsx +++ b/frontend/src/pages/AuditTasks.tsx @@ -128,7 +128,7 @@ export default function AuditTasks() { } return ( -
+
{/* Decorative Background */}
diff --git a/frontend/src/pages/InstantAnalysis.tsx b/frontend/src/pages/InstantAnalysis.tsx index eb20836..5153762 100644 --- a/frontend/src/pages/InstantAnalysis.tsx +++ b/frontend/src/pages/InstantAnalysis.tsx @@ -535,7 +535,7 @@ class UserManager { ); return ( -
+
{/* Decorative Background */}
@@ -685,7 +685,7 @@ class UserManager { {/* 分析结果区域 */} {result && ( -
+
{/* 结果概览 */}
diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx index b7fcd4c..50c2b6c 100644 --- a/frontend/src/pages/Login.tsx +++ b/frontend/src/pages/Login.tsx @@ -85,7 +85,7 @@ export default function Login() {
-
+
diff --git a/frontend/src/pages/ProjectDetail.tsx b/frontend/src/pages/ProjectDetail.tsx index d0307a7..a5713bc 100644 --- a/frontend/src/pages/ProjectDetail.tsx +++ b/frontend/src/pages/ProjectDetail.tsx @@ -313,7 +313,7 @@ export default function ProjectDetail() { return ( -
+
{/* Decorative Background */}
@@ -420,7 +420,7 @@ export default function ProjectDetail() { 项目设置 - + {/* ... (overview content remains same) ... */}
{/* 项目信息 */} @@ -531,7 +531,7 @@ export default function ProjectDetail() {
- + {/* ... (tasks content remains same) ... */}

审计任务列表

@@ -619,7 +619,7 @@ export default function ProjectDetail() { )} - +

最新发现的问题

{tasks.length > 0 && ( @@ -680,7 +680,7 @@ export default function ProjectDetail() { )} - +

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

-
+
{/* 基本信息 */}
diff --git a/frontend/src/pages/Projects.tsx b/frontend/src/pages/Projects.tsx index 131daa4..1344180 100644 --- a/frontend/src/pages/Projects.tsx +++ b/frontend/src/pages/Projects.tsx @@ -68,6 +68,8 @@ export default function Projects() { programming_languages: [] }); + const [selectedFile, setSelectedFile] = useState(null); + // 将小写语言名转换为显示格式 const formatLanguageName = (lang: string): string => { const nameMap: Record = { @@ -153,9 +155,13 @@ export default function Projects() { default_branch: "main", programming_languages: [] }); + setSelectedFile(null); + if (fileInputRef.current) { + fileInputRef.current.value = ''; + } }; - const handleFileUpload = async (event: React.ChangeEvent) => { + const handleFileSelect = (event: React.ChangeEvent) => { const file = event.target.files?.[0]; if (!file) return; @@ -166,6 +172,17 @@ export default function Projects() { return; } + setSelectedFile(file); + // 清空 input value 以便可以再次选择同一个文件(虽然状态已经处理了) + event.target.value = ''; + }; + + const handleUploadAndCreate = async () => { + if (!selectedFile) { + toast.error("请先选择ZIP文件"); + return; + } + // 检查是否有项目名称 if (!createForm.name.trim()) { toast.error("请先输入项目名称"); @@ -195,7 +212,7 @@ export default function Projects() { // 保存ZIP文件到IndexedDB(使用项目ID作为key) try { - await saveZipFile(project.id, file); + await saveZipFile(project.id, selectedFile); } catch (error) { console.error('保存ZIP文件失败:', error); } @@ -207,8 +224,8 @@ export default function Projects() { import('@/shared/utils/logger').then(({ logger }) => { logger.logUserAction('上传ZIP文件创建项目', { projectName: project.name, - fileName: file.name, - fileSize: file.size, + fileName: selectedFile.name, + fileSize: selectedFile.size, }); }); @@ -235,9 +252,6 @@ export default function Projects() { } finally { setUploading(false); setUploadProgress(0); - if (fileInputRef.current) { - fileInputRef.current.value = ''; - } } }; @@ -361,20 +375,17 @@ export default function Projects() { } return ( -
+
{/* Decorative Background */}
{/* Header Section */} -
+
-

+

项目_管理

-

- - // 管理仓库 // 配置审计 -

+

管理代码仓库和配置审计任务

@@ -384,7 +395,7 @@ export default function Projects() { 初始化项目 - + @@ -394,24 +405,24 @@ export default function Projects() {
- + Git 仓库 上传源码 - -
-
+ +
+
-
+