From 116e363e83d254c8e245181047c5f873d4232e73 Mon Sep 17 00:00:00 2001 From: shenaowei <450702724@qq.com> Date: Wed, 25 Feb 2026 23:44:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/GradientButton.vue | 40 +-- .../src/components/agents/ChatDrawer.vue | 169 +++++---- .../src/components/agents/HistoryPanel.vue | 104 +++--- .../src/layouts/components/BasicLayout.vue | 10 +- .../src/layouts/components/CardLayout.vue | 22 +- .../src/layouts/components/FormLayout.vue | 24 +- .../layouts/components/FullWidthLayout.vue | 2 +- .../src/layouts/components/LayoutHeader.vue | 32 +- .../src/layouts/components/TabLayout.vue | 32 +- frontend/app/web-gold/src/style.less | 26 +- .../app/web-gold/src/views/agents/Agents.vue | 184 ++++------ .../src/views/content-style/Benchmark.vue | 18 +- .../components/BenchmarkForm.vue | 39 +-- .../components/BenchmarkTable.vue | 52 +-- .../src/views/material/MaterialListNew.vue | 297 ++++++++-------- .../web-gold/src/views/trends/Forecast.vue | 329 +++++++++--------- 16 files changed, 660 insertions(+), 720 deletions(-) diff --git a/frontend/app/web-gold/src/components/GradientButton.vue b/frontend/app/web-gold/src/components/GradientButton.vue index a3cbbf4205..e17c6aa897 100644 --- a/frontend/app/web-gold/src/components/GradientButton.vue +++ b/frontend/app/web-gold/src/components/GradientButton.vue @@ -93,27 +93,27 @@ const buttonClass = computed(() => { display: inline-flex; align-items: center; justify-content: center; - gap: 8px; - padding: 8px 24px; + gap: var(--space-2); + padding: var(--space-2) var(--space-6); border: none; - border-radius: 12px; - font-size: 16px; + border-radius: var(--radius-lg); + font-size: var(--font-size-base); font-weight: 500; color: #ffffff; cursor: pointer; - transition: all 0.2s ease; - background: var(--color-slate-900); + transition: all var(--duration-fast); + background: var(--color-gray-900); user-select: none; } .gradient-button:hover { - background: var(--color-slate-800); + background: var(--color-gray-800); } .gradient-button:active { - background: var(--color-slate-800); + background: var(--color-gray-800); transform: translateY(0); - box-shadow: 0 4px 6px -2px rgba(59, 130, 246, 0.15); + box-shadow: var(--shadow-primary); } .gradient-button__content, @@ -123,7 +123,7 @@ const buttonClass = computed(() => { display: inline-flex; align-items: center; justify-content: center; - gap: 6px; + gap: var(--space-1); } .gradient-button__icon { @@ -136,25 +136,25 @@ const buttonClass = computed(() => { } .gradient-button__loading-text { - margin-left: 4px; + margin-left: var(--space-1); } /* 尺寸变体 */ .gradient-button--large { padding: 10px 20px; - font-size: 15px; + font-size: var(--font-size-sm); min-height: 36px; } .gradient-button--middle { - padding: 8px 16px; - font-size: 14px; + padding: var(--space-2) var(--space-4); + font-size: var(--font-size-sm); min-height: 32px; } .gradient-button--small { - padding: 4px 12px; - font-size: 13px; + padding: var(--space-1) var(--space-3); + font-size: var(--font-size-xs); min-height: 24px; } @@ -169,13 +169,13 @@ const buttonClass = computed(() => { .gradient-button:disabled { opacity: 0.4; cursor: not-allowed; - background: var(--color-slate-700); + background: var(--color-gray-700); box-shadow: none; } .gradient-button--disabled:hover, .gradient-button:disabled:hover { - background: var(--color-slate-700); + background: var(--color-gray-700); transform: none; box-shadow: none; } @@ -192,8 +192,8 @@ const buttonClass = computed(() => { /* 响应式调整 */ @media (max-width: 768px) { .gradient-button--large { - padding: 8px 16px; - font-size: 14px; + padding: var(--space-2) var(--space-4); + font-size: var(--font-size-sm); min-height: 32px; } } diff --git a/frontend/app/web-gold/src/components/agents/ChatDrawer.vue b/frontend/app/web-gold/src/components/agents/ChatDrawer.vue index 8d9b6ceef9..6b95af29bc 100644 --- a/frontend/app/web-gold/src/components/agents/ChatDrawer.vue +++ b/frontend/app/web-gold/src/components/agents/ChatDrawer.vue @@ -354,14 +354,7 @@ watch(() => props.visible, (val) => { diff --git a/frontend/app/web-gold/src/components/agents/HistoryPanel.vue b/frontend/app/web-gold/src/components/agents/HistoryPanel.vue index 6d46d7545e..d62210de52 100644 --- a/frontend/app/web-gold/src/components/agents/HistoryPanel.vue +++ b/frontend/app/web-gold/src/components/agents/HistoryPanel.vue @@ -239,20 +239,12 @@ watch(() => props.visible, (val) => { diff --git a/frontend/app/web-gold/src/layouts/components/CardLayout.vue b/frontend/app/web-gold/src/layouts/components/CardLayout.vue index 0077f8314f..0cd49809ad 100644 --- a/frontend/app/web-gold/src/layouts/components/CardLayout.vue +++ b/frontend/app/web-gold/src/layouts/components/CardLayout.vue @@ -59,9 +59,9 @@ const handleBack = () => { height: 100%; display: flex; flex-direction: column; - background: var(--bg-primary); - border: 1px solid var(--border-light); - border-radius: var(--radius-md); + background: var(--color-bg-card); + border: 1px solid var(--color-gray-200); + border-radius: var(--radius-lg); overflow: hidden; } @@ -70,7 +70,7 @@ const handleBack = () => { display: flex; flex-direction: column; overflow: hidden; - background: var(--bg-primary); + background: var(--color-bg-card); &.no-padding { .card-layout__content { @@ -80,20 +80,20 @@ const handleBack = () => { } .card-header { - padding: var(--space-md) var(--space-lg); - background: var(--bg-secondary); - border-bottom: 1px solid var(--border-light); - font-size: 14px; + padding: var(--space-4) var(--space-6); + background: var(--color-gray-50); + border-bottom: 1px solid var(--color-gray-200); + font-size: var(--font-size-base); font-weight: 500; - color: var(--text-secondary); + color: var(--color-gray-600); text-transform: uppercase; letter-spacing: 0.08em; } .card-layout__content { flex: 1; - padding: var(--space-md); + padding: var(--space-4); overflow: auto; - background: var(--bg-primary); + background: var(--color-bg-card); } diff --git a/frontend/app/web-gold/src/layouts/components/FormLayout.vue b/frontend/app/web-gold/src/layouts/components/FormLayout.vue index 0192e91317..7ade18a33a 100644 --- a/frontend/app/web-gold/src/layouts/components/FormLayout.vue +++ b/frontend/app/web-gold/src/layouts/components/FormLayout.vue @@ -98,16 +98,16 @@ const handleBack = () => { display: flex; flex-direction: column; overflow: hidden; - background: var(--bg-primary); - border: 1px solid var(--border-light); - border-radius: var(--radius-md); + background: var(--color-bg-card); + border: 1px solid var(--color-gray-200); + border-radius: var(--radius-lg); } .form-layout__content { flex: 1; overflow: auto; - padding: var(--space-md); - background: var(--bg-secondary); + padding: var(--space-4); + background: var(--color-gray-50); display: flex; align-items: center; justify-content: center; @@ -116,16 +116,16 @@ const handleBack = () => { .form-container { width: 100%; max-width: 600px; - background: var(--bg-primary); - border: 1px solid var(--border-light); - border-radius: var(--radius-md); - padding: var(--space-2xl); + background: var(--color-bg-card); + border: 1px solid var(--color-gray-200); + border-radius: var(--radius-lg); + padding: var(--space-10); } .form-layout__footer { - padding: var(--space-md) var(--space-lg); - border-top: 1px solid var(--border-light); - background: var(--bg-primary); + padding: var(--space-4) var(--space-6); + border-top: 1px solid var(--color-gray-200); + background: var(--color-bg-card); flex-shrink: 0; } diff --git a/frontend/app/web-gold/src/layouts/components/FullWidthLayout.vue b/frontend/app/web-gold/src/layouts/components/FullWidthLayout.vue index af71f70ea3..1b7bb273cd 100644 --- a/frontend/app/web-gold/src/layouts/components/FullWidthLayout.vue +++ b/frontend/app/web-gold/src/layouts/components/FullWidthLayout.vue @@ -67,7 +67,7 @@ const handleBack = () => { display: flex; flex-direction: column; overflow: hidden; - background: var(--bg-primary); + background: var(--color-bg-card); } .full-width-layout__header-wrapper { diff --git a/frontend/app/web-gold/src/layouts/components/LayoutHeader.vue b/frontend/app/web-gold/src/layouts/components/LayoutHeader.vue index e1569844f6..e317f6e4a5 100644 --- a/frontend/app/web-gold/src/layouts/components/LayoutHeader.vue +++ b/frontend/app/web-gold/src/layouts/components/LayoutHeader.vue @@ -58,13 +58,13 @@ const handleBack = () => { display: flex; justify-content: space-between; align-items: center; - gap: var(--space-md); - padding: var(--space-md) var(--space-lg); - border-bottom: 1px solid var(--border-light); - background: var(--bg-primary); + gap: var(--space-4); + padding: var(--space-4) var(--space-6); + border-bottom: 1px solid var(--color-gray-200); + background: var(--color-bg-card); flex-shrink: 0; - min-height: 64px; - transition: all 0.3s; + min-height: 56px; + transition: all var(--duration-base); &--ghost { background: transparent; @@ -75,7 +75,7 @@ const handleBack = () => { .header-left { display: flex; align-items: center; - gap: var(--space-md); + gap: var(--space-4); flex: 1; min-width: 0; } @@ -88,13 +88,13 @@ const handleBack = () => { } .back-btn { - padding: var(--space-xs); + padding: var(--space-1); border: none; background: transparent; - color: var(--text-secondary); - border-radius: var(--radius-sm); + color: var(--color-gray-600); + border-radius: var(--radius-base); cursor: pointer; - transition: all 0.2s ease; + transition: all var(--duration-fast); font-size: 16px; line-height: 1; width: 32px; @@ -104,15 +104,15 @@ const handleBack = () => { justify-content: center; &:hover { - background: var(--bg-hover); - color: var(--text-primary); + background: var(--color-gray-100); + color: var(--color-gray-900); } } .header-title { - font-size: 18px; + font-size: var(--font-size-lg); font-weight: 600; - color: var(--text-primary); + color: var(--color-gray-900); margin: 0; line-height: 1.4; letter-spacing: -0.01em; @@ -121,7 +121,7 @@ const handleBack = () => { .header-right { display: flex; align-items: center; - gap: var(--space-sm); + gap: var(--space-2); flex-shrink: 0; } diff --git a/frontend/app/web-gold/src/layouts/components/TabLayout.vue b/frontend/app/web-gold/src/layouts/components/TabLayout.vue index 55966d4374..b9aee4fb8d 100644 --- a/frontend/app/web-gold/src/layouts/components/TabLayout.vue +++ b/frontend/app/web-gold/src/layouts/components/TabLayout.vue @@ -88,9 +88,9 @@ const handleBack = () => { height: 100%; display: flex; flex-direction: column; - background: var(--bg-primary); - border: 1px solid var(--border-light); - border-radius: var(--radius-md); + background: var(--color-bg-card); + border: 1px solid var(--color-gray-200); + border-radius: var(--radius-lg); overflow: hidden; } @@ -100,39 +100,39 @@ const handleBack = () => { .tab-nav { display: flex; - border-bottom: 1px solid var(--border-light); - background: var(--bg-secondary); + border-bottom: 1px solid var(--color-gray-200); + background: var(--color-gray-50); flex-shrink: 0; } .tab-item { - padding: var(--space-sm) var(--space-lg); - font-size: 14px; + padding: var(--space-2) var(--space-6); + font-size: var(--font-size-base); font-weight: 500; - color: var(--text-secondary); + color: var(--color-gray-600); border: none; background: transparent; cursor: pointer; border-bottom: 2px solid transparent; - transition: all 0.15s ease; + transition: all var(--duration-fast); white-space: nowrap; &:hover { - background: var(--bg-hover); - color: var(--text-primary); + background: var(--color-gray-100); + color: var(--color-gray-900); } &.active { - color: var(--text-primary); - border-bottom-color: var(--text-primary); - background: var(--bg-primary); + color: var(--color-primary-500); + border-bottom-color: var(--color-primary-500); + background: var(--color-bg-card); } } .tab-content { flex: 1; overflow: auto; - background: var(--bg-primary); - padding: var(--space-md); + background: var(--color-bg-card); + padding: var(--space-4); } diff --git a/frontend/app/web-gold/src/style.less b/frontend/app/web-gold/src/style.less index 711cce114f..1e575217a1 100644 --- a/frontend/app/web-gold/src/style.less +++ b/frontend/app/web-gold/src/style.less @@ -136,9 +136,12 @@ // 阴影系统 // ======================================== --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1); --shadow-blue: 0 0 0 3px rgba(59, 130, 246, 0.15); + --shadow-inset-card: inset 0 1px 0 0 rgba(255, 255, 255, 0.05); + --glow-primary: 0 0 0 3px rgba(59, 130, 246, 0.15); // ======================================== // 布局系统 @@ -159,21 +162,40 @@ // ======================================== [data-theme="dark"], .dark { + // 背景层级 --color-bg: #0F172A; --color-bg-page: #0F172A; --color-bg-card: #1E293B; --color-surface: #1E293B; + // 中性灰 - 深色模式调整 + --color-gray-50: #1E293B; + --color-gray-100: #334155; + --color-gray-200: #475569; + --color-gray-300: #64748B; + --color-gray-400: #94A3B8; + --color-gray-500: #CBD5E1; + --color-gray-600: #E2E8F0; + --color-gray-700: #F1F5F9; + --color-gray-800: #F8FAFC; + --color-gray-900: #FFFFFF; + + // 文字 --color-text: #F1F5F9; --color-text-primary: #F1F5F9; --color-text-secondary: #94A3B8; --color-text-muted: #64748B; --color-text-disabled: #475569; + // 边框 --color-border: #334155; - --color-primary: #60A5FA; - --color-primary-hover: #93C5FD; + // 主色 - 深色模式提亮 + --color-primary: #60A5FA; + --color-primary-hover: #93C5FD; + --color-primary-500: #60A5FA; + --color-primary-400: #93C5FD; + --color-primary-50: rgba(96, 165, 250, 0.1); } /* ================================ diff --git a/frontend/app/web-gold/src/views/agents/Agents.vue b/frontend/app/web-gold/src/views/agents/Agents.vue index b81ad421f3..b7a93a0a06 100644 --- a/frontend/app/web-gold/src/views/agents/Agents.vue +++ b/frontend/app/web-gold/src/views/agents/Agents.vue @@ -335,47 +335,11 @@ onMounted(() => { diff --git a/frontend/app/web-gold/src/views/content-style/components/BenchmarkTable.vue b/frontend/app/web-gold/src/views/content-style/components/BenchmarkTable.vue index e216a64bef..c9c292f985 100644 --- a/frontend/app/web-gold/src/views/content-style/components/BenchmarkTable.vue +++ b/frontend/app/web-gold/src/views/content-style/components/BenchmarkTable.vue @@ -127,11 +127,11 @@ function formatNumber(value) { diff --git a/frontend/app/web-gold/src/views/material/MaterialListNew.vue b/frontend/app/web-gold/src/views/material/MaterialListNew.vue index f400024869..4e6a67104f 100644 --- a/frontend/app/web-gold/src/views/material/MaterialListNew.vue +++ b/frontend/app/web-gold/src/views/material/MaterialListNew.vue @@ -743,25 +743,8 @@ onMounted(async () => { diff --git a/frontend/app/web-gold/src/views/trends/Forecast.vue b/frontend/app/web-gold/src/views/trends/Forecast.vue index 44bc73056b..d515932d81 100644 --- a/frontend/app/web-gold/src/views/trends/Forecast.vue +++ b/frontend/app/web-gold/src/views/trends/Forecast.vue @@ -631,52 +631,39 @@ onMounted(() => {