-
预警信息
-
@@ -16,23 +217,56 @@
.bottom-card {
height: 100%;
padding: 16px;
+ box-sizing: border-box;
+ background: rgba(6, 30, 93, 0.5);
+ border-radius: 4px;
- .card-title {
- font-size: 16px;
- font-weight: 500;
- color: #fff;
- margin-bottom: 16px;
- }
-
- .card-content {
- height: calc(100% - 32px);
+ .card-header {
display: flex;
+ justify-content: space-between;
align-items: center;
- justify-content: center;
+ margin-bottom: 20px;
- .placeholder {
- color: rgba(255, 255, 255, 0.6);
+ .title {
+ font-size: 18px;
+ font-weight: bold;
+ background: linear-gradient(to bottom, #ffffff, #3fa7dd);
+ -webkit-background-clip: text;
+ color: transparent;
+ letter-spacing: 2px;
+ }
+
+ .update-time {
+ font-size: 14px;
+ color: #3fa7dd;
+ opacity: 0.8;
+ position: relative;
+ padding-left: 20px;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 8px;
+ height: 8px;
+ background: #67C23A;
+ border-radius: 50%;
+ animation: blink 1s infinite;
+ }
}
}
+
+ .chart-container {
+ height: calc(100% - 60px);
+ width: 100%;
+ }
+}
+
+@keyframes blink {
+ 0% { opacity: 0.2; }
+ 50% { opacity: 1; }
+ 100% { opacity: 0.2; }
}
\ No newline at end of file
diff --git a/src/views/dashboard/screen/components/LeftPanel/MiddleCard.vue b/src/views/dashboard/screen/components/LeftPanel/MiddleCard.vue
index aa2f5d3..58537c6 100644
--- a/src/views/dashboard/screen/components/LeftPanel/MiddleCard.vue
+++ b/src/views/dashboard/screen/components/LeftPanel/MiddleCard.vue
@@ -1,13 +1,304 @@
监测数据
-
-
监测数据内容区域
+
+
+
+
+
+
+
+
@@ -16,6 +307,8 @@
.middle-card {
height: 100%;
padding: 16px;
+ background: rgba(0, 0, 0, 0.2);
+ border-radius: 8px;
.card-title {
font-size: 16px;
@@ -27,11 +320,22 @@
.card-content {
height: calc(100% - 32px);
display: flex;
- align-items: center;
- justify-content: center;
+ flex-direction: column;
+ gap: 16px;
- .placeholder {
- color: rgba(255, 255, 255, 0.6);
+ .indicator-chart {
+ flex: 1;
+ min-height: 180px;
+ }
+
+ .trend-chart {
+ flex: 2;
+ min-height: 200px;
+ }
+
+ .quality-chart {
+ flex: 1;
+ min-height: 180px;
}
}
}
diff --git a/src/views/dashboard/screen/components/LeftPanel/TopCard.vue b/src/views/dashboard/screen/components/LeftPanel/TopCard.vue
index 5c80ac9..c5613ab 100644
--- a/src/views/dashboard/screen/components/LeftPanel/TopCard.vue
+++ b/src/views/dashboard/screen/components/LeftPanel/TopCard.vue
@@ -1,39 +1,56 @@
-
告警信息
-
@@ -16,23 +204,68 @@
.bottom-card {
height: 100%;
padding: 16px;
+ box-sizing: border-box;
+ background: rgba(6, 30, 93, 0.5);
+ border-radius: 4px;
- .card-title {
- font-size: 16px;
- font-weight: 500;
- color: #fff;
- margin-bottom: 16px;
- }
-
- .card-content {
- height: calc(100% - 32px);
+ .card-header {
display: flex;
+ justify-content: space-between;
align-items: center;
- justify-content: center;
+ margin-bottom: 20px;
- .placeholder {
- color: rgba(255, 255, 255, 0.6);
+ .title {
+ font-size: 18px;
+ font-weight: bold;
+ background: linear-gradient(to bottom, #ffffff, #3fa7dd);
+ -webkit-background-clip: text;
+ color: transparent;
+ letter-spacing: 2px;
+ }
+
+ .total-alert {
+ font-size: 14px;
+ color: rgba(255, 255, 255, 0.8);
+
+ .value {
+ color: #36CFFF;
+ font-size: 20px;
+ font-weight: bold;
+ margin-left: 4px;
+ }
+ }
+
+ .update-time {
+ font-size: 14px;
+ color: #3fa7dd;
+ opacity: 0.8;
+ position: relative;
+ padding-left: 20px;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 8px;
+ height: 8px;
+ background: #67C23A;
+ border-radius: 50%;
+ animation: blink 1s infinite;
+ }
}
}
+
+ .chart-container {
+ height: calc(100% - 60px);
+ width: 100%;
+ }
+}
+
+@keyframes blink {
+ 0% { opacity: 0.2; }
+ 50% { opacity: 1; }
+ 100% { opacity: 0.2; }
}
\ No newline at end of file
diff --git a/src/views/dashboard/screen/components/RightPanel/MiddleCard.vue b/src/views/dashboard/screen/components/RightPanel/MiddleCard.vue
index ba06998..b48657b 100644
--- a/src/views/dashboard/screen/components/RightPanel/MiddleCard.vue
+++ b/src/views/dashboard/screen/components/RightPanel/MiddleCard.vue
@@ -1,14 +1,170 @@
-
重点指标
-
@@ -16,23 +172,56 @@
.middle-card {
height: 100%;
padding: 16px;
+ box-sizing: border-box;
+ background: rgba(6, 30, 93, 0.5);
+ border-radius: 4px;
- .card-title {
- font-size: 16px;
- font-weight: 500;
- color: #fff;
- margin-bottom: 16px;
- }
-
- .card-content {
- height: calc(100% - 32px);
+ .card-header {
display: flex;
+ justify-content: space-between;
align-items: center;
- justify-content: center;
+ margin-bottom: 20px;
- .placeholder {
- color: rgba(255, 255, 255, 0.6);
+ .title {
+ font-size: 18px;
+ font-weight: bold;
+ background: linear-gradient(to bottom, #ffffff, #3fa7dd);
+ -webkit-background-clip: text;
+ color: transparent;
+ letter-spacing: 2px;
+ }
+
+ .update-time {
+ font-size: 14px;
+ color: #3fa7dd;
+ opacity: 0.8;
+ position: relative;
+ padding-left: 20px;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 8px;
+ height: 8px;
+ background: #67C23A;
+ border-radius: 50%;
+ animation: blink 1s infinite;
+ }
}
}
+
+ .chart-container {
+ height: calc(100% - 60px);
+ width: 100%;
+ }
+}
+
+@keyframes blink {
+ 0% { opacity: 0.2; }
+ 50% { opacity: 1; }
+ 100% { opacity: 0.2; }
}
\ No newline at end of file
diff --git a/src/views/dashboard/screen/components/RightPanel/TopCard.vue b/src/views/dashboard/screen/components/RightPanel/TopCard.vue
index 850656d..2267822 100644
--- a/src/views/dashboard/screen/components/RightPanel/TopCard.vue
+++ b/src/views/dashboard/screen/components/RightPanel/TopCard.vue
@@ -1,14 +1,163 @@
-
天气信息
-
@@ -16,23 +165,56 @@
.top-card {
height: 100%;
padding: 16px;
+ box-sizing: border-box;
+ background: rgba(6, 30, 93, 0.5);
+ border-radius: 4px;
- .card-title {
- font-size: 16px;
- font-weight: 500;
- color: #fff;
- margin-bottom: 16px;
- }
-
- .card-content {
- height: calc(100% - 32px);
+ .card-header {
display: flex;
+ justify-content: space-between;
align-items: center;
- justify-content: center;
+ margin-bottom: 20px;
- .placeholder {
- color: rgba(255, 255, 255, 0.6);
+ .title {
+ font-size: 18px;
+ font-weight: bold;
+ background: linear-gradient(to bottom, #ffffff, #3fa7dd);
+ -webkit-background-clip: text;
+ color: transparent;
+ letter-spacing: 2px;
+ }
+
+ .update-time {
+ font-size: 14px;
+ color: #3fa7dd;
+ opacity: 0.8;
+ position: relative;
+ padding-left: 20px;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 8px;
+ height: 8px;
+ background: #67C23A;
+ border-radius: 50%;
+ animation: blink 1s infinite;
+ }
}
}
+
+ .chart-container {
+ height: calc(100% - 60px);
+ width: 100%;
+ }
+}
+
+@keyframes blink {
+ 0% { opacity: 0.2; }
+ 50% { opacity: 1; }
+ 100% { opacity: 0.2; }
}
\ No newline at end of file