From b497f2c7c86223298c5407930da9d1535e8dec9b Mon Sep 17 00:00:00 2001 From: aaron <> Date: Thu, 15 May 2025 15:42:24 +0800 Subject: [PATCH] update --- docker-compose.yml | 2 +- src/views/AStockAnalysisView.vue | 137 +++++++++++++++---------------- src/views/CryptoAnalysisView.vue | 98 +++++++++++++++------- 3 files changed, 133 insertions(+), 104 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 9e0a132..886df01 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: . dockerfile: Dockerfile - image: tradus-web:1.14 + image: tradus-web:1.15 container_name: tradus-web ports: - '6000:80' diff --git a/src/views/AStockAnalysisView.vue b/src/views/AStockAnalysisView.vue index 6a08a2d..01a4a31 100644 --- a/src/views/AStockAnalysisView.vue +++ b/src/views/AStockAnalysisView.vue @@ -223,24 +223,34 @@ const copyAnalysis = async () => { 正在分析股票: {{ stockCode }} - + + 复制结果 + 复制成功 + +
@@ -261,12 +271,6 @@ const copyAnalysis = async () => { :class="{ 'fade-in': analysisContent }" >
-
- -
@@ -567,9 +571,17 @@ const copyAnalysis = async () => { align-items: flex-start; } - .new-analysis-button { + .action-buttons { width: 100%; + flex-direction: row; + gap: 0.75rem; + } + + .action-button { + flex: 1; justify-content: center; + padding: 0.6rem; + font-size: 0.85rem; } .analysis-container { @@ -580,11 +592,6 @@ const copyAnalysis = async () => { padding: 1.25rem 1.5rem; font-size: 0.9rem; } - - .copy-button-container { - bottom: 1.5rem; - right: 1.5rem; - } } @media (max-width: 480px) { @@ -652,14 +659,13 @@ const copyAnalysis = async () => { padding: 0.75rem; } - .copy-button-container { - bottom: 1rem; - right: 1rem; + .action-buttons { + gap: 0.5rem; } - .copy-button { - padding: 0.6rem 1.2rem; - font-size: 0.85rem; + .action-button { + padding: 0.5rem; + font-size: 0.8rem; } } @@ -698,7 +704,13 @@ const copyAnalysis = async () => { font-size: 0.9rem; } -.new-analysis-button { +.action-buttons { + display: flex; + gap: 1rem; + align-items: center; +} + +.action-button { display: flex; align-items: center; gap: 0.5rem; @@ -709,19 +721,30 @@ const copyAnalysis = async () => { color: var(--color-accent); cursor: pointer; transition: all 0.2s ease; + font-size: 0.9rem; + font-weight: 500; } -.new-analysis-button:hover:not(:disabled) { +.action-button:hover { background-color: var(--color-accent); color: white; } -.new-analysis-button:disabled { - opacity: 0.6; - cursor: not-allowed; +.action-button.copy { + background-color: var(--color-accent); + color: white; } -.new-analysis-button .icon { +.action-button.copy:hover { + opacity: 0.9; +} + +.action-button.copy.success { + background-color: #4caf50; + border-color: #4caf50; +} + +.action-button .icon { width: 16px; height: 16px; } @@ -743,36 +766,4 @@ const copyAnalysis = async () => { :deep(*::-webkit-scrollbar-thumb:hover) { background-color: rgba(125, 125, 125, 0.3); } - -.copy-button-container { - position: fixed; - bottom: 2rem; - right: 2rem; - z-index: 10; -} - -.copy-button { - display: flex; - align-items: center; - justify-content: center; - padding: 0.75rem 1.5rem; - border: none; - border-radius: var(--border-radius); - background-color: var(--color-accent); - color: white; - font-size: 0.9rem; - font-weight: 500; - cursor: pointer; - transition: all 0.2s ease; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); -} - -.copy-button:hover { - transform: translateY(-1px); - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); -} - -.copy-button.success { - background-color: #4caf50; -} diff --git a/src/views/CryptoAnalysisView.vue b/src/views/CryptoAnalysisView.vue index 324da2e..cccaf93 100644 --- a/src/views/CryptoAnalysisView.vue +++ b/src/views/CryptoAnalysisView.vue @@ -246,24 +246,34 @@ const copyAnalysis = async () => { timeframes.find((t) => t.value === selectedTimeframe)?.label }} - + + 复制结果 + 复制成功 + +
@@ -283,12 +293,6 @@ const copyAnalysis = async () => { :class="{ 'fade-in': analysisContent }" >
-
- -
@@ -783,9 +787,17 @@ const copyAnalysis = async () => { align-items: flex-start; } - .new-analysis-button { + .action-buttons { width: 100%; + flex-direction: row; + gap: 0.75rem; + } + + .action-button { + flex: 1; justify-content: center; + padding: 0.6rem; + font-size: 0.85rem; } .analysis-content { @@ -880,6 +892,15 @@ const copyAnalysis = async () => { font-size: 0.85rem; padding: 0.6rem; } + + .action-buttons { + gap: 0.5rem; + } + + .action-button { + padding: 0.5rem; + font-size: 0.8rem; + } } .search-container.is-analyzing { @@ -1186,7 +1207,13 @@ const copyAnalysis = async () => { border-radius: var(--border-radius); } -.new-analysis-button { +.action-buttons { + display: flex; + gap: 1rem; + align-items: center; +} + +.action-button { display: flex; align-items: center; gap: 0.5rem; @@ -1197,19 +1224,30 @@ const copyAnalysis = async () => { color: var(--color-accent); cursor: pointer; transition: all 0.2s ease; + font-size: 0.9rem; + font-weight: 500; } -.new-analysis-button:hover:not(:disabled) { +.action-button:hover { background-color: var(--color-accent); color: white; } -.new-analysis-button:disabled { - opacity: 0.6; - cursor: not-allowed; +.action-button.copy { + background-color: var(--color-accent); + color: white; } -.new-analysis-button .icon { +.action-button.copy:hover { + opacity: 0.9; +} + +.action-button.copy.success { + background-color: #4caf50; + border-color: #4caf50; +} + +.action-button .icon { width: 16px; height: 16px; }