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;
}