moki 3 dagar sedan
förälder
incheckning
200a2b5466
1 ändrade filer med 21 tillägg och 10 borttagningar
  1. 21 10
      src/views/Dashboard.vue

+ 21 - 10
src/views/Dashboard.vue

@@ -391,6 +391,16 @@ async function sendCode(code: string) {
         <div class="section-title">今日工作时长</div>
         <div class="work-duration">{{ workDuration }}</div>
       </div>
+      <div class="stats-section">
+        <div class="section-title">今日统计</div>
+        <div v-if="todayStats.length === 0" class="stats-empty">暂无数据</div>
+        <div v-else class="stats-grid">
+          <div v-for="item in todayStats" :key="item.code" class="stats-item">
+            <a-tag :color="item.color" size="small">{{ item.label }}</a-tag>
+            <span class="stats-count">{{ item.count }}</span>
+          </div>
+        </div>
+      </div>
       <div class="device-status-section">
         <div class="section-title">设备状态</div>
         <div v-if="deviceStatus?.mqtt.connected" class="device-connected">
@@ -403,16 +413,6 @@ async function sendCode(code: string) {
           <span class="device-dot disconnected"/> 设备未连接
         </div>
       </div>
-      <div class="stats-section">
-        <div class="section-title">今日统计</div>
-        <div v-if="todayStats.length === 0" class="stats-empty">暂无数据</div>
-        <div v-else class="stats-grid">
-          <div v-for="item in todayStats" :key="item.code" class="stats-item">
-            <a-tag :color="item.color" size="small">{{ item.label }}</a-tag>
-            <span class="stats-count">{{ item.count }}</span>
-          </div>
-        </div>
-      </div>
     </div>
 
     <div class="chart-row">
@@ -640,6 +640,8 @@ async function sendCode(code: string) {
   border: 1px solid var(--border-color);
   border-radius: 8px;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+  display: flex;
+  flex-direction: column;
 }
 
 .work-duration {
@@ -648,6 +650,7 @@ async function sendCode(code: string) {
   color: #1890ff;
   font-variant-numeric: tabular-nums;
   line-height: 1;
+  margin-top: auto;
 }
 
 .device-status-section {
@@ -658,6 +661,8 @@ async function sendCode(code: string) {
   border: 1px solid var(--border-color);
   border-radius: 8px;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+  display: flex;
+  flex-direction: column;
 }
 
 .device-connected {
@@ -667,6 +672,7 @@ async function sendCode(code: string) {
   font-size: 14px;
   font-weight: 600;
   color: #52c41a;
+  margin-top: auto;
 }
 
 .device-disconnected {
@@ -676,6 +682,7 @@ async function sendCode(code: string) {
   font-size: 14px;
   font-weight: 600;
   color: var(--text-secondary);
+  margin-top: auto;
 }
 
 .device-dot {
@@ -702,12 +709,15 @@ async function sendCode(code: string) {
   border: 1px solid var(--border-color);
   border-radius: 8px;
   box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+  display: flex;
+  flex-direction: column;
 }
 
 .stats-grid {
   display: flex;
   flex-wrap: wrap;
   gap: 10px 16px;
+  margin-top: auto;
 }
 
 .stats-item {
@@ -726,6 +736,7 @@ async function sendCode(code: string) {
 .stats-empty {
   color: var(--text-secondary);
   font-size: 13px;
+  margin-top: auto;
 }
 
 .log-section {