From 3e2d07a502c15e4694c0efb039b5429e50008e97 Mon Sep 17 00:00:00 2001 From: Developer Date: Wed, 18 Mar 2026 16:08:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor(frontend):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=A7=86=E5=9B=BE=E5=92=8C=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E5=88=86=E5=89=B2=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - App.vue: 更新样式和路由配置 - ProjectView.vue: 布局调整 - TextSplit.vue: 分割功能完善 Co-Authored-By: Claude Opus 4.6 --- frontend/src/App.vue | 72 +- frontend/src/views/ProjectView.vue | 2 +- frontend/src/views/project/TextSplit.vue | 1010 ++++++++++++++++------ 3 files changed, 802 insertions(+), 282 deletions(-) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 3cdd8ac..87cda5d 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -33,12 +33,12 @@ const locale = ref(zhCn) @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap'); :root { - /* Core Colors - Deep Space */ - --bg-primary: #030407; - --bg-secondary: #0a0a0f; - --bg-tertiary: #12121a; - --bg-elevated: #1a1a24; - --bg-hover: #22222e; + /* Core Colors - Deep Space with Gradient */ + --bg-primary: #0a0a14; + --bg-secondary: #12121f; + --bg-tertiary: #1a1a2a; + --bg-elevated: #222233; + --bg-hover: #2a2a3d; /* Accent - Cyan Violet */ --accent-primary: #00d4ff; @@ -69,8 +69,8 @@ const locale = ref(zhCn) /* Effects */ --glow-primary: 0 0 30px rgba(0, 212, 255, 0.25); --glow-secondary: 0 0 30px rgba(124, 58, 237, 0.25); - --glass-bg: rgba(18, 18, 26, 0.6); - --glass-border: rgba(255, 255, 255, 0.06); + --glass-bg: rgba(26, 26, 42, 0.65); + --glass-border: rgba(255, 255, 255, 0.08); /* Spacing */ --radius-sm: 6px; @@ -110,6 +110,12 @@ html, body, #app { min-height: 100vh; position: relative; overflow: hidden; + background: + radial-gradient(ellipse 100% 80% at 50% 120%, rgba(99, 102, 241, 0.15), transparent 50%), + radial-gradient(ellipse 80% 60% at 80% 10%, rgba(0, 212, 255, 0.12), transparent 40%), + radial-gradient(ellipse 70% 50% at 10% 80%, rgba(124, 58, 237, 0.1), transparent 40%), + radial-gradient(ellipse 60% 40% at 90% 90%, rgba(236, 72, 153, 0.08), transparent 40%), + linear-gradient(180deg, var(--bg-primary) 0%, #0f0f1a 100%); } .bg-mesh { @@ -123,50 +129,50 @@ html, body, #app { .mesh-gradient { position: absolute; border-radius: 50%; - filter: blur(120px); - opacity: 0.5; - animation: float 25s ease-in-out infinite; + filter: blur(80px); + opacity: 0.6; + animation: float 20s ease-in-out infinite; } .mesh-1 { - width: 700px; - height: 700px; - background: radial-gradient(circle, rgba(0, 212, 255, 0.35) 0%, transparent 70%); - top: -250px; - right: -150px; + width: 800px; + height: 800px; + background: radial-gradient(circle, rgba(0, 212, 255, 0.4) 0%, rgba(6, 182, 212, 0.2) 40%, transparent 70%); + top: -300px; + right: -200px; animation-delay: 0s; } .mesh-2 { - width: 600px; - height: 600px; - background: radial-gradient(circle, rgba(124, 58, 237, 0.3) 0%, transparent 70%); - bottom: -200px; - left: -150px; - animation-delay: -8s; + width: 700px; + height: 700px; + background: radial-gradient(circle, rgba(124, 58, 237, 0.4) 0%, rgba(139, 92, 246, 0.2) 40%, transparent 70%); + bottom: -250px; + left: -200px; + animation-delay: -7s; } .mesh-3 { - width: 500px; - height: 500px; - background: radial-gradient(circle, rgba(6, 182, 212, 0.2) 0%, transparent 70%); - top: 40%; - left: 30%; - animation-delay: -16s; + width: 600px; + height: 600px; + background: radial-gradient(circle, rgba(236, 72, 153, 0.3) 0%, rgba(168, 85, 247, 0.15) 40%, transparent 70%); + top: 30%; + left: 25%; + animation-delay: -14s; } @keyframes float { 0%, 100% { transform: translate(0, 0) scale(1); } - 25% { transform: translate(40px, -40px) scale(1.08); } - 50% { transform: translate(-30px, 30px) scale(0.95); } - 75% { transform: translate(-40px, -25px) scale(1.03); } + 25% { transform: translate(60px, -50px) scale(1.1); } + 50% { transform: translate(-40px, 40px) scale(0.95); } + 75% { transform: translate(-50px, -30px) scale(1.05); } } .noise-overlay { position: absolute; inset: 0; - background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E"); - opacity: 0.025; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E"); + opacity: 0.035; } .app-content { diff --git a/frontend/src/views/ProjectView.vue b/frontend/src/views/ProjectView.vue index de45a7b..c8a06cd 100644 --- a/frontend/src/views/ProjectView.vue +++ b/frontend/src/views/ProjectView.vue @@ -64,7 +64,7 @@ const project = ref({ name: '加载中...', description: '' }) const navItems = [ { path: 'files', label: '文件管理', icon: 'Folder' }, - { path: 'split', label: '文本分割', icon: 'Operation' }, + { path: 'split', label: '分割生成', icon: 'Operation' }, { path: 'questions', label: '问答管理', icon: 'ChatDotSquare' }, { path: 'datasets', label: '数据集', icon: 'Collection' }, { path: 'eval', label: '评估系统', icon: 'DataAnalysis' }, diff --git a/frontend/src/views/project/TextSplit.vue b/frontend/src/views/project/TextSplit.vue index dabaedb..8e16f85 100644 --- a/frontend/src/views/project/TextSplit.vue +++ b/frontend/src/views/project/TextSplit.vue @@ -1,150 +1,258 @@