|
@@ -2,73 +2,45 @@
|
|
:host {
|
|
:host {
|
|
display: block;
|
|
display: block;
|
|
width: 100%;
|
|
width: 100%;
|
|
- padding: 20px;
|
|
|
|
- background: #0a192f;
|
|
|
|
- min-height: 100vh;
|
|
|
|
|
|
+ padding: 15px;
|
|
}
|
|
}
|
|
|
|
|
|
.history-container {
|
|
.history-container {
|
|
max-width: 1400px;
|
|
max-width: 1400px;
|
|
margin: 0 auto;
|
|
margin: 0 auto;
|
|
- padding: 25px;
|
|
|
|
- background: #172a45;
|
|
|
|
- border-radius: 12px;
|
|
|
|
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
|
|
|
|
- color: #e6f1ff;
|
|
|
|
|
|
+ padding: 20px;
|
|
|
|
+ background: white;
|
|
|
|
+ border-radius: 8px;
|
|
|
|
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
|
}
|
|
}
|
|
|
|
|
|
.history-header {
|
|
.history-header {
|
|
- margin-bottom: 30px;
|
|
|
|
- padding-bottom: 20px;
|
|
|
|
- border-bottom: 1px solid rgba(100, 148, 237, 0.3);
|
|
|
|
|
|
+ margin-bottom: 24px;
|
|
|
|
+ padding-bottom: 16px;
|
|
|
|
+ border-bottom: 1px solid #eee;
|
|
}
|
|
}
|
|
|
|
|
|
.history-header h2 {
|
|
.history-header h2 {
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
- gap: 12px;
|
|
|
|
- font-size: 26px;
|
|
|
|
- color: #64ffda;
|
|
|
|
- margin: 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.history-header i {
|
|
|
|
- color: #64ffda;
|
|
|
|
|
|
+ gap: 10px;
|
|
|
|
+ font-size: 24px;
|
|
|
|
+ color: #2c3e50;
|
|
}
|
|
}
|
|
|
|
|
|
.filter-row {
|
|
.filter-row {
|
|
display: flex;
|
|
display: flex;
|
|
- gap: 25px;
|
|
|
|
- margin-bottom: 25px;
|
|
|
|
|
|
+ gap: 20px;
|
|
|
|
+ margin-bottom: 20px;
|
|
}
|
|
}
|
|
|
|
|
|
.filter-card,
|
|
.filter-card,
|
|
.device-selector {
|
|
.device-selector {
|
|
flex: 1;
|
|
flex: 1;
|
|
- background: rgba(23, 42, 69, 0.8);
|
|
|
|
- border-radius: 10px;
|
|
|
|
|
|
+ background: white;
|
|
|
|
+ border-radius: 8px;
|
|
padding: 20px;
|
|
padding: 20px;
|
|
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
|
|
- border: 1px solid rgba(100, 148, 237, 0.1);
|
|
|
|
- transition: all 0.3s ease;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.filter-card:hover,
|
|
|
|
-.device-selector:hover {
|
|
|
|
- transform: translateY(-2px);
|
|
|
|
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
|
|
|
|
- border-color: rgba(100, 148, 237, 0.3);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.filter-card h3,
|
|
|
|
-.device-selector h3 {
|
|
|
|
- color: #64ffda;
|
|
|
|
- margin-top: 0;
|
|
|
|
- margin-bottom: 15px;
|
|
|
|
- font-size: 18px;
|
|
|
|
- display: flex;
|
|
|
|
- align-items: center;
|
|
|
|
- gap: 10px;
|
|
|
|
|
|
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
|
}
|
|
}
|
|
|
|
|
|
.date-controls {
|
|
.date-controls {
|
|
@@ -80,60 +52,19 @@
|
|
|
|
|
|
.date-input label {
|
|
.date-input label {
|
|
display: block;
|
|
display: block;
|
|
- margin-bottom: 8px;
|
|
|
|
|
|
+ margin-bottom: 6px;
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
- color: #ccd6f6;
|
|
|
|
|
|
+ color: #2c3e50;
|
|
}
|
|
}
|
|
|
|
|
|
.date-input input {
|
|
.date-input input {
|
|
width: 100%;
|
|
width: 100%;
|
|
- padding: 10px 15px;
|
|
|
|
- border-radius: 6px;
|
|
|
|
- border: 1px solid #1e2a3a;
|
|
|
|
- font-size: 14px;
|
|
|
|
- background: #0a192f;
|
|
|
|
- color: #e6f1ff;
|
|
|
|
- transition: all 0.3s ease;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.date-input input:focus {
|
|
|
|
- outline: none;
|
|
|
|
- border-color: #64ffda;
|
|
|
|
- box-shadow: 0 0 0 2px rgba(100, 255, 218, 0.2);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.btn {
|
|
|
|
- padding: 10px 20px;
|
|
|
|
- border-radius: 6px;
|
|
|
|
- border: none;
|
|
|
|
- background: #1e2a3a;
|
|
|
|
- color: #e6f1ff;
|
|
|
|
- cursor: pointer;
|
|
|
|
- font-size: 14px;
|
|
|
|
- transition: all 0.3s ease;
|
|
|
|
- display: flex;
|
|
|
|
- align-items: center;
|
|
|
|
- gap: 8px;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.btn:hover {
|
|
|
|
- background: #233554;
|
|
|
|
- transform: translateY(-1px);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.btn i {
|
|
|
|
|
|
+ padding: 8px 12px;
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ border: 1px solid #ddd;
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
}
|
|
}
|
|
|
|
|
|
-.btn.primary {
|
|
|
|
- background: #0d6efd;
|
|
|
|
- color: white;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.btn.primary:hover {
|
|
|
|
- background: #0b5ed7;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
.device-controls {
|
|
.device-controls {
|
|
display: flex;
|
|
display: flex;
|
|
gap: 15px;
|
|
gap: 15px;
|
|
@@ -142,19 +73,10 @@
|
|
|
|
|
|
.device-controls select {
|
|
.device-controls select {
|
|
flex: 1;
|
|
flex: 1;
|
|
- padding: 10px 15px;
|
|
|
|
- border-radius: 6px;
|
|
|
|
- border: 1px solid #1e2a3a;
|
|
|
|
|
|
+ padding: 8px 12px;
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ border: 1px solid #ddd;
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
- background: #0a192f;
|
|
|
|
- color: #e6f1ff;
|
|
|
|
- transition: all 0.3s ease;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.device-controls select:focus {
|
|
|
|
- outline: none;
|
|
|
|
- border-color: #64ffda;
|
|
|
|
- box-shadow: 0 0 0 2px rgba(100, 255, 218, 0.2);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
.checkbox-container {
|
|
.checkbox-container {
|
|
@@ -163,7 +85,6 @@
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
user-select: none;
|
|
user-select: none;
|
|
- color: #ccd6f6;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
.checkbox-container input {
|
|
.checkbox-container input {
|
|
@@ -175,23 +96,16 @@
|
|
.checkmark {
|
|
.checkmark {
|
|
height: 20px;
|
|
height: 20px;
|
|
width: 20px;
|
|
width: 20px;
|
|
- background-color: #0a192f;
|
|
|
|
|
|
+ background-color: #eee;
|
|
border-radius: 4px;
|
|
border-radius: 4px;
|
|
margin-left: 10px;
|
|
margin-left: 10px;
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
justify-content: center;
|
|
justify-content: center;
|
|
- border: 1px solid #1e2a3a;
|
|
|
|
- transition: all 0.3s ease;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.checkbox-container:hover .checkmark {
|
|
|
|
- background-color: #112240;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
.checkbox-container input:checked ~ .checkmark {
|
|
.checkbox-container input:checked ~ .checkmark {
|
|
- background-color: #0d6efd;
|
|
|
|
- border-color: #0d6efd;
|
|
|
|
|
|
+ background-color: #3498db;
|
|
}
|
|
}
|
|
|
|
|
|
.checkmark:after {
|
|
.checkmark:after {
|
|
@@ -209,45 +123,27 @@
|
|
}
|
|
}
|
|
|
|
|
|
.chart-container {
|
|
.chart-container {
|
|
- margin-bottom: 25px;
|
|
|
|
|
|
+ margin-bottom: 20px;
|
|
}
|
|
}
|
|
|
|
|
|
.chart-card {
|
|
.chart-card {
|
|
- background: rgba(23, 42, 69, 0.8);
|
|
|
|
- border-radius: 10px;
|
|
|
|
|
|
+ background: white;
|
|
|
|
+ border-radius: 8px;
|
|
padding: 20px;
|
|
padding: 20px;
|
|
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
|
|
- border: 1px solid rgba(100, 148, 237, 0.1);
|
|
|
|
- transition: all 0.3s ease;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.chart-card:hover {
|
|
|
|
- transform: translateY(-2px);
|
|
|
|
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
|
|
|
|
- border-color: rgba(100, 148, 237, 0.3);
|
|
|
|
|
|
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
|
}
|
|
}
|
|
|
|
|
|
.chart-header {
|
|
.chart-header {
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
align-items: center;
|
|
- margin-bottom: 20px;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.chart-header h3 {
|
|
|
|
- color: #64ffda;
|
|
|
|
- margin: 0;
|
|
|
|
- font-size: 18px;
|
|
|
|
- display: flex;
|
|
|
|
- align-items: center;
|
|
|
|
- gap: 10px;
|
|
|
|
|
|
+ margin-bottom: 15px;
|
|
}
|
|
}
|
|
|
|
|
|
.chart-legend {
|
|
.chart-legend {
|
|
display: flex;
|
|
display: flex;
|
|
gap: 20px;
|
|
gap: 20px;
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
- color: #ccd6f6;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
.color-dot {
|
|
.color-dot {
|
|
@@ -256,19 +152,17 @@
|
|
height: 12px;
|
|
height: 12px;
|
|
border-radius: 50%;
|
|
border-radius: 50%;
|
|
margin-right: 8px;
|
|
margin-right: 8px;
|
|
- vertical-align: middle;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-.color-dot.primary { background: #0d6efd; }
|
|
|
|
|
|
+.color-dot.primary { background: #3498db; }
|
|
.color-dot.secondary { background: #9b59b6; }
|
|
.color-dot.secondary { background: #9b59b6; }
|
|
|
|
|
|
.chart-content {
|
|
.chart-content {
|
|
height: 400px;
|
|
height: 400px;
|
|
- background: #0a192f;
|
|
|
|
- border-radius: 8px;
|
|
|
|
|
|
+ background: #f8fafc;
|
|
|
|
+ border-radius: 6px;
|
|
position: relative;
|
|
position: relative;
|
|
padding: 30px 40px;
|
|
padding: 30px 40px;
|
|
- border: 1px solid rgba(100, 148, 237, 0.1);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
.trend-chart {
|
|
.trend-chart {
|
|
@@ -289,7 +183,7 @@
|
|
position: absolute;
|
|
position: absolute;
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 1px;
|
|
height: 1px;
|
|
- background: rgba(100, 148, 237, 0.1);
|
|
|
|
|
|
+ background: rgba(0, 0, 0, 0.05);
|
|
}
|
|
}
|
|
|
|
|
|
.grid-line:nth-child(1) { top: 0%; }
|
|
.grid-line:nth-child(1) { top: 0%; }
|
|
@@ -303,19 +197,16 @@
|
|
height: 3px;
|
|
height: 3px;
|
|
border-radius: 3px;
|
|
border-radius: 3px;
|
|
bottom: 0;
|
|
bottom: 0;
|
|
- transition: all 0.5s ease;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
.data-line.primary {
|
|
.data-line.primary {
|
|
- background: linear-gradient(90deg, #0d6efd, #64ffda);
|
|
|
|
|
|
+ background: #3498db;
|
|
width: 70%;
|
|
width: 70%;
|
|
- box-shadow: 0 0 10px rgba(13, 110, 253, 0.5);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
.data-line.secondary {
|
|
.data-line.secondary {
|
|
- background: linear-gradient(90deg, #9b59b6, #e91e63);
|
|
|
|
|
|
+ background: #9b59b6;
|
|
width: 60%;
|
|
width: 60%;
|
|
- box-shadow: 0 0 10px rgba(155, 89, 182, 0.5);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
.x-axis {
|
|
.x-axis {
|
|
@@ -326,137 +217,5 @@
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
font-size: 12px;
|
|
font-size: 12px;
|
|
- color: #8892b0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.y-axis {
|
|
|
|
- position: absolute;
|
|
|
|
- left: -30px;
|
|
|
|
- top: 0;
|
|
|
|
- bottom: 0;
|
|
|
|
- display: flex;
|
|
|
|
- flex-direction: column;
|
|
|
|
- justify-content: space-between;
|
|
|
|
- font-size: 12px;
|
|
|
|
- color: #8892b0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.data-table-card {
|
|
|
|
- background: rgba(23, 42, 69, 0.8);
|
|
|
|
- border-radius: 10px;
|
|
|
|
- padding: 20px;
|
|
|
|
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
|
|
- border: 1px solid rgba(100, 148, 237, 0.1);
|
|
|
|
- margin-bottom: 25px;
|
|
|
|
- transition: all 0.3s ease;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.data-table-card:hover {
|
|
|
|
- transform: translateY(-2px);
|
|
|
|
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
|
|
|
|
- border-color: rgba(100, 148, 237, 0.3);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.data-table-card h3 {
|
|
|
|
- color: #64ffda;
|
|
|
|
- margin-top: 0;
|
|
|
|
- margin-bottom: 15px;
|
|
|
|
- font-size: 18px;
|
|
|
|
- display: flex;
|
|
|
|
- align-items: center;
|
|
|
|
- gap: 10px;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.data-table {
|
|
|
|
- width: 100%;
|
|
|
|
- border-collapse: collapse;
|
|
|
|
- color: #ccd6f6;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.data-table th {
|
|
|
|
- background: #112240;
|
|
|
|
- color: #64ffda;
|
|
|
|
- padding: 12px 15px;
|
|
|
|
- text-align: left;
|
|
|
|
- font-weight: 500;
|
|
|
|
- border-bottom: 2px solid rgba(100, 148, 237, 0.3);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.data-table td {
|
|
|
|
- padding: 12px 15px;
|
|
|
|
- border-bottom: 1px solid rgba(100, 148, 237, 0.1);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.data-table tr:hover td {
|
|
|
|
- background: rgba(16, 36, 70, 0.5);
|
|
|
|
- color: #e6f1ff;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.status-badge {
|
|
|
|
- display: inline-block;
|
|
|
|
- padding: 4px 10px;
|
|
|
|
- border-radius: 12px;
|
|
|
|
- font-size: 12px;
|
|
|
|
- font-weight: 500;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.status-badge.normal {
|
|
|
|
- background: rgba(40, 167, 69, 0.2);
|
|
|
|
- color: #28a745;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.status-badge.warning {
|
|
|
|
- background: rgba(255, 193, 7, 0.2);
|
|
|
|
- color: #ffc107;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.status-badge.critical {
|
|
|
|
- background: rgba(220, 53, 69, 0.2);
|
|
|
|
- color: #dc3545;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.report-section {
|
|
|
|
- background: rgba(23, 42, 69, 0.8);
|
|
|
|
- border-radius: 10px;
|
|
|
|
- padding: 20px;
|
|
|
|
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
|
|
- border: 1px solid rgba(100, 148, 237, 0.1);
|
|
|
|
- transition: all 0.3s ease;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.report-section:hover {
|
|
|
|
- transform: translateY(-2px);
|
|
|
|
- box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
|
|
|
|
- border-color: rgba(100, 148, 237, 0.3);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.report-section h3 {
|
|
|
|
- color: #64ffda;
|
|
|
|
- margin-top: 0;
|
|
|
|
- margin-bottom: 15px;
|
|
|
|
- font-size: 18px;
|
|
|
|
- display: flex;
|
|
|
|
- align-items: center;
|
|
|
|
- gap: 10px;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.report-options {
|
|
|
|
- display: flex;
|
|
|
|
- gap: 15px;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/* 添加一些动画效果 */
|
|
|
|
-@keyframes fadeIn {
|
|
|
|
- from { opacity: 0; transform: translateY(10px); }
|
|
|
|
- to { opacity: 1; transform: translateY(0); }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.history-container > * {
|
|
|
|
- animation: fadeIn 0.5s ease forwards;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.history-header { animation-delay: 0.1s; }
|
|
|
|
-.filter-row { animation-delay: 0.2s; }
|
|
|
|
-.chart-container { animation-delay: 0.3s; }
|
|
|
|
-.data-table-card { animation-delay: 0.4s; }
|
|
|
|
-.report-section { animation-delay: 0.5s; }
|
|
|
|
|
|
+ color: white;
|
|
|
|
+}
|