|
@@ -2,36 +2,44 @@
|
|
|
:host {
|
|
|
display: block;
|
|
|
width: 100%;
|
|
|
- padding: 15px;
|
|
|
+ padding: 20px;
|
|
|
+ background-color: #f5f7fa;
|
|
|
+ min-height: 100vh;
|
|
|
}
|
|
|
|
|
|
.history-container {
|
|
|
max-width: 1400px;
|
|
|
margin: 0 auto;
|
|
|
- padding: 20px;
|
|
|
+ padding: 25px;
|
|
|
background: white;
|
|
|
- border-radius: 8px;
|
|
|
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
|
|
+ border-radius: 10px;
|
|
|
+ box-shadow: 0 6px 18px rgba(0, 0, 0, 0.05);
|
|
|
}
|
|
|
|
|
|
.history-header {
|
|
|
- margin-bottom: 24px;
|
|
|
- padding-bottom: 16px;
|
|
|
- border-bottom: 1px solid #eee;
|
|
|
+ margin-bottom: 30px;
|
|
|
+ padding-bottom: 20px;
|
|
|
+ border-bottom: 1px solid #eaeef2;
|
|
|
}
|
|
|
|
|
|
.history-header h2 {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- gap: 10px;
|
|
|
- font-size: 24px;
|
|
|
+ gap: 12px;
|
|
|
+ font-size: 26px;
|
|
|
color: #2c3e50;
|
|
|
+ font-weight: 600;
|
|
|
+ margin: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.history-header h2 i {
|
|
|
+ color: #3498db;
|
|
|
}
|
|
|
|
|
|
.filter-row {
|
|
|
display: flex;
|
|
|
gap: 20px;
|
|
|
- margin-bottom: 20px;
|
|
|
+ margin-bottom: 25px;
|
|
|
}
|
|
|
|
|
|
.filter-card,
|
|
@@ -40,7 +48,8 @@
|
|
|
background: white;
|
|
|
border-radius: 8px;
|
|
|
padding: 20px;
|
|
|
- box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
|
|
+ box-shadow: 0 3px 10px rgba(0,0,0,0.08);
|
|
|
+ border: 1px solid #eaeef2;
|
|
|
}
|
|
|
|
|
|
.date-controls {
|
|
@@ -52,17 +61,25 @@
|
|
|
|
|
|
.date-input label {
|
|
|
display: block;
|
|
|
- margin-bottom: 6px;
|
|
|
+ margin-bottom: 8px;
|
|
|
font-size: 14px;
|
|
|
- color: #2c3e50;
|
|
|
+ color: #4a5568;
|
|
|
+ font-weight: 500;
|
|
|
}
|
|
|
|
|
|
.date-input input {
|
|
|
width: 100%;
|
|
|
- padding: 8px 12px;
|
|
|
- border-radius: 4px;
|
|
|
- border: 1px solid #ddd;
|
|
|
+ padding: 10px 12px;
|
|
|
+ border-radius: 6px;
|
|
|
+ border: 1px solid #e2e8f0;
|
|
|
font-size: 14px;
|
|
|
+ transition: border-color 0.3s;
|
|
|
+}
|
|
|
+
|
|
|
+.date-input input:focus {
|
|
|
+ outline: none;
|
|
|
+ border-color: #3498db;
|
|
|
+ box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2);
|
|
|
}
|
|
|
|
|
|
.device-controls {
|
|
@@ -73,10 +90,18 @@
|
|
|
|
|
|
.device-controls select {
|
|
|
flex: 1;
|
|
|
- padding: 8px 12px;
|
|
|
- border-radius: 4px;
|
|
|
- border: 1px solid #ddd;
|
|
|
+ padding: 10px 12px;
|
|
|
+ border-radius: 6px;
|
|
|
+ border: 1px solid #e2e8f0;
|
|
|
font-size: 14px;
|
|
|
+ background-color: white;
|
|
|
+ transition: border-color 0.3s;
|
|
|
+}
|
|
|
+
|
|
|
+.device-controls select:focus {
|
|
|
+ outline: none;
|
|
|
+ border-color: #3498db;
|
|
|
+ box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2);
|
|
|
}
|
|
|
|
|
|
.checkbox-container {
|
|
@@ -85,6 +110,7 @@
|
|
|
cursor: pointer;
|
|
|
font-size: 14px;
|
|
|
user-select: none;
|
|
|
+ color: #4a5568;
|
|
|
}
|
|
|
|
|
|
.checkbox-container input {
|
|
@@ -96,12 +122,17 @@
|
|
|
.checkmark {
|
|
|
height: 20px;
|
|
|
width: 20px;
|
|
|
- background-color: #eee;
|
|
|
+ background-color: #edf2f7;
|
|
|
border-radius: 4px;
|
|
|
margin-left: 10px;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
+ transition: background-color 0.2s;
|
|
|
+}
|
|
|
+
|
|
|
+.checkbox-container:hover .checkmark {
|
|
|
+ background-color: #e2e8f0;
|
|
|
}
|
|
|
|
|
|
.checkbox-container input:checked ~ .checkmark {
|
|
@@ -122,28 +153,114 @@
|
|
|
display: block;
|
|
|
}
|
|
|
|
|
|
+.data-table-card {
|
|
|
+ margin-top: 30px;
|
|
|
+ background: white;
|
|
|
+ border-radius: 8px;
|
|
|
+ box-shadow: 0 3px 10px rgba(0,0,0,0.08);
|
|
|
+ border: 1px solid #eaeef2;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table-card h3 {
|
|
|
+ padding: 18px 20px;
|
|
|
+ margin: 0;
|
|
|
+ font-size: 18px;
|
|
|
+ color: #2c3e50;
|
|
|
+ background-color: #f8fafc;
|
|
|
+ border-bottom: 1px solid #eaeef2;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table-card h3 i {
|
|
|
+ color: #718096;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table {
|
|
|
+ width: 100%;
|
|
|
+ border-collapse: collapse;
|
|
|
+ font-size: 14px;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table th {
|
|
|
+ background-color: #f8fafc;
|
|
|
+ color: #4a5568;
|
|
|
+ font-weight: 600;
|
|
|
+ padding: 12px 15px;
|
|
|
+ text-align: left;
|
|
|
+ border-bottom: 1px solid #eaeef2;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table td {
|
|
|
+ padding: 12px 15px;
|
|
|
+ border-bottom: 1px solid #eaeef2;
|
|
|
+ color: #4a5568;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table tr:last-child td {
|
|
|
+ border-bottom: none;
|
|
|
+}
|
|
|
+
|
|
|
+.data-table tr:hover td {
|
|
|
+ background-color: #f8fafc;
|
|
|
+}
|
|
|
+
|
|
|
+.status-badge {
|
|
|
+ display: inline-block;
|
|
|
+ padding: 4px 10px;
|
|
|
+ border-radius: 12px;
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: 500;
|
|
|
+}
|
|
|
+
|
|
|
+.status-badge.normal {
|
|
|
+ background-color: #e6fffa;
|
|
|
+ color: #38b2ac;
|
|
|
+}
|
|
|
+
|
|
|
+.status-badge.warning {
|
|
|
+ background-color: #fffaf0;
|
|
|
+ color: #dd6b20;
|
|
|
+}
|
|
|
+
|
|
|
+.status-badge.critical {
|
|
|
+ background-color: #fff5f5;
|
|
|
+ color: #e53e3e;
|
|
|
+}
|
|
|
+
|
|
|
.chart-container {
|
|
|
- margin-bottom: 20px;
|
|
|
+ margin-bottom: 25px;
|
|
|
}
|
|
|
|
|
|
.chart-card {
|
|
|
background: white;
|
|
|
border-radius: 8px;
|
|
|
padding: 20px;
|
|
|
- box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
|
|
+ box-shadow: 0 3px 10px rgba(0,0,0,0.08);
|
|
|
+ border: 1px solid #eaeef2;
|
|
|
}
|
|
|
|
|
|
.chart-header {
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
- margin-bottom: 15px;
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-header h4 {
|
|
|
+ margin: 0;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #2c3e50;
|
|
|
+ font-weight: 600;
|
|
|
}
|
|
|
|
|
|
.chart-legend {
|
|
|
display: flex;
|
|
|
gap: 20px;
|
|
|
font-size: 14px;
|
|
|
+ color: #4a5568;
|
|
|
}
|
|
|
|
|
|
.color-dot {
|
|
@@ -152,6 +269,7 @@
|
|
|
height: 12px;
|
|
|
border-radius: 50%;
|
|
|
margin-right: 8px;
|
|
|
+ vertical-align: middle;
|
|
|
}
|
|
|
|
|
|
.color-dot.primary { background: #3498db; }
|
|
@@ -163,59 +281,245 @@
|
|
|
border-radius: 6px;
|
|
|
position: relative;
|
|
|
padding: 30px 40px;
|
|
|
+ border: 1px solid #eaeef2;
|
|
|
+}
|
|
|
+
|
|
|
+/* 响应式设计 */
|
|
|
+@media (max-width: 768px) {
|
|
|
+ .filter-row {
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 15px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .date-controls {
|
|
|
+ grid-template-columns: 1fr;
|
|
|
+ }
|
|
|
+
|
|
|
+ .device-controls {
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: flex-start;
|
|
|
+ }
|
|
|
+
|
|
|
+ .data-table {
|
|
|
+ display: block;
|
|
|
+ overflow-x: auto;
|
|
|
+ }
|
|
|
+}
|
|
|
+.chart-container {
|
|
|
+ margin-bottom: 25px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-card {
|
|
|
+ background: white;
|
|
|
+ border-radius: 8px;
|
|
|
+ padding: 20px;
|
|
|
+ box-shadow: 0 3px 10px rgba(0,0,0,0.08);
|
|
|
+ border: 1px solid #eaeef2;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-header h3 {
|
|
|
+ margin: 0;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #2c3e50;
|
|
|
+ font-weight: 600;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-header h3 i {
|
|
|
+ color: #3498db;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-legend {
|
|
|
+ display: flex;
|
|
|
+ gap: 20px;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #4a5568;
|
|
|
+}
|
|
|
+
|
|
|
+.color-dot {
|
|
|
+ display: inline-block;
|
|
|
+ width: 12px;
|
|
|
+ height: 12px;
|
|
|
+ border-radius: 50%;
|
|
|
+ margin-right: 8px;
|
|
|
+ vertical-align: middle;
|
|
|
+}
|
|
|
+
|
|
|
+.color-dot.primary { background: #3498db; }
|
|
|
+.color-dot.secondary { background: #9b59b6; }
|
|
|
+
|
|
|
+#vibrationChart {
|
|
|
+ width: 100%;
|
|
|
+ border-radius: 6px;
|
|
|
+ background: #f8fafc;
|
|
|
+ border: 1px solid #eaeef2;
|
|
|
+}
|
|
|
+/* 振动图表专用样式 */
|
|
|
+.chart-container {
|
|
|
+ margin-bottom: 25px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-card {
|
|
|
+ background: white;
|
|
|
+ border-radius: 8px;
|
|
|
+ padding: 20px;
|
|
|
+ box-shadow: 0 3px 10px rgba(0,0,0,0.08);
|
|
|
+ border: 1px solid #eaeef2;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-header h3 {
|
|
|
+ margin: 0;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #2c3e50;
|
|
|
+ font-weight: 600;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-header h3 i {
|
|
|
+ color: #3498db;
|
|
|
+}
|
|
|
+
|
|
|
+.chart-legend {
|
|
|
+ display: flex;
|
|
|
+ gap: 20px;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #4a5568;
|
|
|
+}
|
|
|
+
|
|
|
+.color-dot {
|
|
|
+ display: inline-block;
|
|
|
+ width: 12px;
|
|
|
+ height: 12px;
|
|
|
+ border-radius: 50%;
|
|
|
+ margin-right: 8px;
|
|
|
+ vertical-align: middle;
|
|
|
+}
|
|
|
+
|
|
|
+.color-dot.primary { background: #3498db; }
|
|
|
+.color-dot.secondary { background: #9b59b6; }
|
|
|
+
|
|
|
+.chart-content {
|
|
|
+ height: 400px;
|
|
|
+ background: #f8fafc;
|
|
|
+ border-radius: 6px;
|
|
|
+ position: relative;
|
|
|
+ border: 1px solid #eaeef2;
|
|
|
+ overflow: hidden;
|
|
|
}
|
|
|
|
|
|
.trend-chart {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
position: relative;
|
|
|
+ padding: 20px 30px 40px 40px;
|
|
|
}
|
|
|
|
|
|
.grid-lines {
|
|
|
position: absolute;
|
|
|
top: 0;
|
|
|
left: 0;
|
|
|
- right: 0;
|
|
|
- bottom: 0;
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100% - 30px);
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 20px 30px 0 40px;
|
|
|
}
|
|
|
|
|
|
.grid-line {
|
|
|
- position: absolute;
|
|
|
- width: 100%;
|
|
|
height: 1px;
|
|
|
- background: rgba(0, 0, 0, 0.05);
|
|
|
+ background-color: #eaeef2;
|
|
|
+ width: 100%;
|
|
|
}
|
|
|
|
|
|
-.grid-line:nth-child(1) { top: 0%; }
|
|
|
-.grid-line:nth-child(2) { top: 25%; }
|
|
|
-.grid-line:nth-child(3) { top: 50%; }
|
|
|
-.grid-line:nth-child(4) { top: 75%; }
|
|
|
-.grid-line:nth-child(5) { top: 100%; }
|
|
|
-
|
|
|
.data-line {
|
|
|
position: absolute;
|
|
|
- height: 3px;
|
|
|
- border-radius: 3px;
|
|
|
- bottom: 0;
|
|
|
+ height: 2px;
|
|
|
+ border-radius: 2px;
|
|
|
+ left: 40px;
|
|
|
+ right: 30px;
|
|
|
}
|
|
|
|
|
|
.data-line.primary {
|
|
|
- background: #3498db;
|
|
|
- width: 70%;
|
|
|
+ background-color: #3498db;
|
|
|
+ top: 30%;
|
|
|
}
|
|
|
|
|
|
.data-line.secondary {
|
|
|
- background: #9b59b6;
|
|
|
- width: 60%;
|
|
|
+ background-color: #9b59b6;
|
|
|
+ top: 60%;
|
|
|
}
|
|
|
|
|
|
.x-axis {
|
|
|
position: absolute;
|
|
|
- bottom: -30px;
|
|
|
- left: 0;
|
|
|
- right: 0;
|
|
|
+ bottom: 10px;
|
|
|
+ left: 40px;
|
|
|
+ right: 30px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ font-size: 12px;
|
|
|
+ color: #718096;
|
|
|
+}
|
|
|
+
|
|
|
+.y-axis {
|
|
|
+ position: absolute;
|
|
|
+ left: 10px;
|
|
|
+ top: 20px;
|
|
|
+ bottom: 40px;
|
|
|
display: flex;
|
|
|
+ flex-direction: column;
|
|
|
justify-content: space-between;
|
|
|
font-size: 12px;
|
|
|
- color: white;
|
|
|
-}
|
|
|
+ color: #718096;
|
|
|
+}
|
|
|
+
|
|
|
+/* 响应式设计 */
|
|
|
+@media (max-width: 768px) {
|
|
|
+ .chart-header {
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: flex-start;
|
|
|
+ gap: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .chart-legend {
|
|
|
+ width: 100%;
|
|
|
+ justify-content: space-between;
|
|
|
+ gap: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .trend-chart {
|
|
|
+ padding: 15px 20px 30px 30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .grid-lines {
|
|
|
+ padding: 15px 20px 0 30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .data-line {
|
|
|
+ left: 30px;
|
|
|
+ right: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .x-axis {
|
|
|
+ left: 30px;
|
|
|
+ right: 20px;
|
|
|
+ }
|
|
|
+}
|