Prechádzať zdrojové kódy

优化监控列表卡片

yawuga 8 mesiacov pred
rodič
commit
583e809b0d
1 zmenil súbory, kde vykonal 746 pridanie a 389 odobranie
  1. 746 389
      src/views/base/device/index.vue

+ 746 - 389
src/views/base/device/index.vue

@@ -154,67 +154,93 @@
     <el-dialog :title="title" :visible.sync="openView" width="800px" append-to-body>
       <el-tabs v-model="activeTab" @tab-click="handleClick">
         <el-tab-pane label="基本信息" name="basicInfo">
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <div class="device-info">
-                <h3>设备基础信息</h3>
-
-                <ul>
-                  <li><strong>设备编号:</strong> {{ formView.deviceId }}</li>
-                  <li><strong>设备名称:</strong> {{ formView.deviceName }}</li>
-
-                  <li><strong style="float: left;">设备类型:</strong><dict-tag :options="dict.type.device_type"
-                      :value="formView.deviceTypeId" /></li>
-                  <li><strong>设备型号:</strong> {{ formView.model }}</li>
-                  <li><strong>制造厂商:</strong> {{ formView.manufacturer }}</li>
-                </ul>
-
+          <div class="device-basic-info">
+            <!-- 设备基础信息卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">设备基础信息</span>
               </div>
+              <div class="info-grid">
+                <div class="info-item">
+                  <div class="info-label">设备编号</div>
+                  <div class="info-value">{{ formView.deviceId }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备名称</div>
+                  <div class="info-value">{{ formView.deviceName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备类型</div>
+                  <div class="info-value">
+                    <dict-tag :options="dict.type.device_type" :value="formView.deviceTypeId" />
+                  </div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备型号</div>
+                  <div class="info-value">{{ formView.model }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">制造厂商</div>
+                  <div class="info-value">{{ formView.manufacturer }}</div>
+                </div>
+              </div>
+            </el-card>
 
-
-            </el-col>
-            <el-col :span="12">
-              <div class="device-info">
-                <h3>位置信息</h3>
-
-                <ul>
-                  <li><strong>所属农场:</strong> {{ formView.deptName }}</li>
-                  <li><strong>所属地块:</strong> {{ formView.fieldName }}</li>
-                  <li><strong>安装日期:</strong> {{ formView.installDate }}</li>
-                  <li><strong>GPS坐标:</strong> {{ formView.longitude }} - {{ formView.latitude }}</li>
-                </ul>
-
+            <!-- 位置信息卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">位置信息</span>
               </div>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <h3>运行状态</h3>
-              <el-row :gutter="20">
-                <el-col :span="12">
-                  <div>
-                    <p>当前状态:
-                      <el-tag :type="getTagType(formView.status)">{{ getStatusText(formView.status) }}</el-tag>
-                    </p>
-                  </div>
-                  <div>
-                    <p>最后活动:{{ formView.lastActiveTime }}</p>
+              <div class="info-grid">
+                <div class="info-item">
+                  <div class="info-label">所属农场</div>
+                  <div class="info-value">{{ formView.deptName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">所属地块</div>
+                  <div class="info-value">{{ formView.fieldName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">安装日期</div>
+                  <div class="info-value">{{ formView.installDate }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">GPS坐标</div>
+                  <div class="info-value">{{ formView.longitude }} - {{ formView.latitude }}</div>
+                </div>
+              </div>
+            </el-card>
 
+            <!-- 运行状态卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">运行状态</span>
+              </div>
+              <div class="status-grid">
+                <div class="status-item">
+                  <div class="status-label">当前状态</div>
+                  <div class="status-value">
+                    <el-tag :type="getTagType(formView.status)">{{ getStatusText(formView.status) }}</el-tag>
                   </div>
-                </el-col>
-                <el-col :span="12">
-                  <div>
-                    <p>电量状态:
-                      <el-progress :percentage="deviceStatus.battery" :stroke-width="10"></el-progress>
-                    </p>
-                  </div>
-                  <div>
-                    <p>信号强度:良好</p>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">最后活动</div>
+                  <div class="status-value">{{ formView.lastActiveTime }}</div>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">电量状态</div>
+                  <div class="status-value">
+                    <el-progress :percentage="deviceStatus.battery" :stroke-width="8" class="battery-progress"></el-progress>
+                    <span class="battery-text">{{ deviceStatus.battery }}%</span>
                   </div>
-                </el-col>
-              </el-row>
-            </el-col>
-          </el-row>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">信号强度</div>
+                  <div class="status-value status-good">良好</div>
+                </div>
+              </div>
+            </el-card>
+          </div>
         </el-tab-pane>
         <el-tab-pane label="实时数据" name="realTimeData">
           <el-card class="box-card">
@@ -313,67 +339,93 @@
     <el-dialog :title="title" :visible.sync="cameraView" @close="handleDialogClose" width="800px" append-to-body>
       <el-tabs v-model="activeTab" @tab-click="handleClickCamera">
         <el-tab-pane label="基本信息" name="basicInfo">
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <div class="device-info">
-                <h3>设备基础信息</h3>
-
-                <ul>
-                  <li><strong>设备编号:</strong> {{ formView.deviceId }}</li>
-                  <li><strong>设备名称:</strong> {{ formView.deviceName }}</li>
-
-                  <li><strong style="float: left;">设备类型:</strong><dict-tag :options="dict.type.device_type"
-                      :value="formView.deviceTypeId" /></li>
-                  <li><strong>设备型号:</strong> {{ formView.model }}</li>
-                  <li><strong>制造厂商:</strong> {{ formView.manufacturer }}</li>
-                </ul>
-
+          <div class="device-basic-info">
+            <!-- 设备基础信息卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">设备基础信息</span>
               </div>
+              <div class="info-grid">
+                <div class="info-item">
+                  <div class="info-label">设备编号</div>
+                  <div class="info-value">{{ formView.deviceId }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备名称</div>
+                  <div class="info-value">{{ formView.deviceName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备类型</div>
+                  <div class="info-value">
+                    <dict-tag :options="dict.type.device_type" :value="formView.deviceTypeId" />
+                  </div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备型号</div>
+                  <div class="info-value">{{ formView.model }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">制造厂商</div>
+                  <div class="info-value">{{ formView.manufacturer }}</div>
+                </div>
+              </div>
+            </el-card>
 
-
-            </el-col>
-            <el-col :span="12">
-              <div class="device-info">
-                <h3>位置信息</h3>
-
-                <ul>
-                  <li><strong>所属农场:</strong> {{ formView.deptName }}</li>
-                  <li><strong>所属地块:</strong> {{ formView.fieldName }}</li>
-                  <li><strong>安装日期:</strong> {{ formView.installDate }}</li>
-                  <li><strong>GPS坐标:</strong> {{ formView.longitude }} - {{ formView.latitude }}</li>
-                </ul>
-
+            <!-- 位置信息卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">位置信息</span>
               </div>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <h3>运行状态</h3>
-              <el-row :gutter="20">
-                <el-col :span="12">
-                  <div>
-                    <p>当前状态:
-                      <el-tag :type="getTagType(formView.status)">{{ getStatusText(formView.status) }}</el-tag>
-                    </p>
-                  </div>
-                  <div>
-                    <p>最后活动:{{ formView.lastActiveTime }}</p>
+              <div class="info-grid">
+                <div class="info-item">
+                  <div class="info-label">所属农场</div>
+                  <div class="info-value">{{ formView.deptName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">所属地块</div>
+                  <div class="info-value">{{ formView.fieldName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">安装日期</div>
+                  <div class="info-value">{{ formView.installDate }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">GPS坐标</div>
+                  <div class="info-value">{{ formView.longitude }} - {{ formView.latitude }}</div>
+                </div>
+              </div>
+            </el-card>
 
+            <!-- 运行状态卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">运行状态</span>
+              </div>
+              <div class="status-grid">
+                <div class="status-item">
+                  <div class="status-label">当前状态</div>
+                  <div class="status-value">
+                    <el-tag :type="getTagType(formView.status)">{{ getStatusText(formView.status) }}</el-tag>
                   </div>
-                </el-col>
-                <el-col :span="12">
-                  <div>
-                    <p>电量状态:
-                      <el-progress :percentage="deviceStatus.battery" :stroke-width="10"></el-progress>
-                    </p>
-                  </div>
-                  <div>
-                    <p>信号强度:良好</p>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">最后活动</div>
+                  <div class="status-value">{{ formView.lastActiveTime }}</div>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">电量状态</div>
+                  <div class="status-value">
+                    <el-progress :percentage="deviceStatus.battery" :stroke-width="8" class="battery-progress"></el-progress>
+                    <span class="battery-text">{{ deviceStatus.battery }}%</span>
                   </div>
-                </el-col>
-              </el-row>
-            </el-col>
-          </el-row>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">信号强度</div>
+                  <div class="status-value status-good">良好</div>
+                </div>
+              </div>
+            </el-card>
+          </div>
         </el-tab-pane>
         <el-tab-pane label="实时数据" name="realTimeData">
 
@@ -390,175 +442,162 @@
     <el-dialog :title="title" :visible.sync="openWeatherView" width="800px" append-to-body>
       <el-tabs v-model="activeWeatherTab" @tab-click="handleClickWeather">
         <el-tab-pane label="基本信息" name="basicInfoWeather">
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <div class="device-info">
-                <h3>设备基础信息</h3>
-
-                <ul>
-                  <li><strong>设备编号:</strong> {{ formView.deviceId }}</li>
-                  <li><strong>设备名称:</strong> {{ formView.deviceName }}</li>
-
-                  <li><strong style="float: left;">设备类型:</strong><dict-tag :options="dict.type.device_type"
-                      :value="formView.deviceTypeId" /></li>
-                  <li><strong>设备型号:</strong> {{ formView.model }}</li>
-                  <li><strong>制造厂商:</strong> {{ formView.manufacturer }}</li>
-                </ul>
-
+          <div class="device-basic-info">
+            <!-- 设备基础信息卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">设备基础信息</span>
               </div>
+              <div class="info-grid">
+                <div class="info-item">
+                  <div class="info-label">设备编号</div>
+                  <div class="info-value">{{ formView.deviceId }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备名称</div>
+                  <div class="info-value">{{ formView.deviceName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备类型</div>
+                  <div class="info-value">
+                    <dict-tag :options="dict.type.device_type" :value="formView.deviceTypeId" />
+                  </div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备型号</div>
+                  <div class="info-value">{{ formView.model }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">制造厂商</div>
+                  <div class="info-value">{{ formView.manufacturer }}</div>
+                </div>
+              </div>
+            </el-card>
 
-
-            </el-col>
-            <el-col :span="12">
-              <div class="device-info">
-                <h3>位置信息</h3>
-
-                <ul>
-                  <li><strong>所属农场:</strong> {{ formView.deptName }}</li>
-                  <li><strong>所属地块:</strong> {{ formView.fieldName }}</li>
-                  <li><strong>安装日期:</strong> {{ formView.installDate }}</li>
-                  <li><strong>GPS坐标:</strong> {{ formView.longitude }} - {{ formView.latitude }}</li>
-                </ul>
-
+            <!-- 位置信息卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">位置信息</span>
               </div>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <h3>运行状态</h3>
-              <el-row :gutter="20">
-                <el-col :span="12">
-                  <div>
-                    <p>当前状态:
-                      <el-tag :type="getTagType(formView.status)">{{ getStatusText(formView.status) }}</el-tag>
-                    </p>
-                  </div>
-                  <div>
-                    <p>最后活动:{{ formView.lastActiveTime }}</p>
+              <div class="info-grid">
+                <div class="info-item">
+                  <div class="info-label">所属农场</div>
+                  <div class="info-value">{{ formView.deptName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">所属地块</div>
+                  <div class="info-value">{{ formView.fieldName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">安装日期</div>
+                  <div class="info-value">{{ formView.installDate }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">GPS坐标</div>
+                  <div class="info-value">{{ formView.longitude }} - {{ formView.latitude }}</div>
+                </div>
+              </div>
+            </el-card>
 
+            <!-- 运行状态卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">运行状态</span>
+              </div>
+              <div class="status-grid">
+                <div class="status-item">
+                  <div class="status-label">当前状态</div>
+                  <div class="status-value">
+                    <el-tag :type="getTagType(formView.status)">{{ getStatusText(formView.status) }}</el-tag>
                   </div>
-                </el-col>
-                <el-col :span="12">
-                  <div>
-                    <p>电量状态:
-                      <el-progress :percentage="deviceStatus.battery" :stroke-width="10"></el-progress>
-                    </p>
-                  </div>
-                  <div>
-                    <p>信号强度:良好</p>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">最后活动</div>
+                  <div class="status-value">{{ formView.lastActiveTime }}</div>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">电量状态</div>
+                  <div class="status-value">
+                    <el-progress :percentage="deviceStatus.battery" :stroke-width="8" class="battery-progress"></el-progress>
+                    <span class="battery-text">{{ deviceStatus.battery }}%</span>
                   </div>
-                </el-col>
-              </el-row>
-            </el-col>
-          </el-row>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">信号强度</div>
+                  <div class="status-value status-good">良好</div>
+                </div>
+              </div>
+            </el-card>
+          </div>
         </el-tab-pane>
         <el-tab-pane label="实时数据" name="realTimeData">
-          <el-card class="box-card">
+          <el-card class="weather-data-card">
             <div slot="header" class="clearfix">
               <span>实时气象数据</span>
               <el-badge style="margin-left: 70%;">最后更新: {{ weatherRealTime.collectTime }}</el-badge>
             </div>
-            <el-row :gutter="20">
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-
-                    <div class="item-value" style="color: #059669;">{{ weatherRealTime.temperature }}°C</div>
-                    <div class="item-title">气温 (°C)</div>
-                  </div>
-                </el-card>
-              </el-col>
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-
-                    <div class="item-value" style="color: #2563eb;">{{ weatherRealTime.humidity }}%</div>
-                    <div class="item-title">湿度</div>
-                  </div>
-                </el-card>
-              </el-col>
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-
-                    <div class="item-value">{{ weatherRealTime.rainfall }}mm</div>
-                    <div class="item-title">降雨量 (lux)</div>
-                  </div>
-                </el-card>
-              </el-col>
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-
-                    <div class="item-value" style="color: #7c3aed;">{{ weatherRealTime.windDirection }}</div>
-                    <div class="item-title">风向</div>
-                  </div>
-                </el-card>
-              </el-col>
-            </el-row>
-
-
-            <el-row :gutter="20">
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-
-                    <div class="item-value" style="color: #059669;">{{ weatherRealTime.windSpeed }}m/s</div>
-                    <div class="item-title">风速</div>
-                  </div>
-                </el-card>
-              </el-col>
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-
-                    <div class="item-value" style="color: #2563eb;">{{ weatherRealTime.airPressure }}hPa</div>
-                    <div class="item-title">气压</div>
-                  </div>
-                </el-card>
-              </el-col>
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-
-                    <div class="item-value">{{ weatherRealTime.lightIntensity }}lux</div>
-                    <div class="item-title">光照</div>
-                  </div>
-                </el-card>
-              </el-col>
-
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-
-                    <div class="item-value">{{ weatherRealTime.soilN }}</div>
-                    <div class="item-title">土壤氮</div>
-                  </div>
-                </el-card>
-              </el-col>
-            </el-row>
-
-            <el-row :gutter="20">
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-
-                    <div class="item-value">{{ weatherRealTime.soilP }}</div>
-                    <div class="item-title">土壤磷</div>
-                  </div>
-                </el-card>
-              </el-col>
-
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-
-                    <div class="item-value">{{ weatherRealTime.soilK }}</div>
-                    <div class="item-title">土壤钾</div>
-                  </div>
-                </el-card>
-              </el-col>
-            </el-row>
+            <div class="weather-grid">
+              <div class="weather-item">
+                <div class="weather-item-content">
+                  <div class="weather-item-value temperature">{{ weatherRealTime.temperature }}°C</div>
+                  <div class="weather-item-title">气温</div>
+                </div>
+              </div>
+              <div class="weather-item">
+                <div class="weather-item-content">
+                  <div class="weather-item-value humidity">{{ weatherRealTime.humidity }}%</div>
+                  <div class="weather-item-title">湿度</div>
+                </div>
+              </div>
+              <div class="weather-item">
+                <div class="weather-item-content">
+                  <div class="weather-item-value rainfall">{{ weatherRealTime.rainfall }}mm</div>
+                  <div class="weather-item-title">降雨量</div>
+                </div>
+              </div>
+              <div class="weather-item">
+                <div class="weather-item-content">
+                  <div class="weather-item-value wind-direction">{{ weatherRealTime.windDirection }}</div>
+                  <div class="weather-item-title">风向</div>
+                </div>
+              </div>
+              <div class="weather-item">
+                <div class="weather-item-content">
+                  <div class="weather-item-value wind-speed">{{ weatherRealTime.windSpeed }}m/s</div>
+                  <div class="weather-item-title">风速</div>
+                </div>
+              </div>
+              <div class="weather-item">
+                <div class="weather-item-content">
+                  <div class="weather-item-value pressure">{{ weatherRealTime.airPressure }}hPa</div>
+                  <div class="weather-item-title">气压</div>
+                </div>
+              </div>
+              <div class="weather-item">
+                <div class="weather-item-content">
+                  <div class="weather-item-value light">{{ weatherRealTime.lightIntensity }}lux</div>
+                  <div class="weather-item-title">光照</div>
+                </div>
+              </div>
+              <div class="weather-item">
+                <div class="weather-item-content">
+                  <div class="weather-item-value soil-n">{{ weatherRealTime.soilN }}</div>
+                  <div class="weather-item-title">土壤氮</div>
+                </div>
+              </div>
+              <div class="weather-item">
+                <div class="weather-item-content">
+                  <div class="weather-item-value soil-p">{{ weatherRealTime.soilP }}</div>
+                  <div class="weather-item-title">土壤磷</div>
+                </div>
+              </div>
+              <div class="weather-item">
+                <div class="weather-item-content">
+                  <div class="weather-item-value soil-k">{{ weatherRealTime.soilK }}</div>
+                  <div class="weather-item-title">土壤钾</div>
+                </div>
+              </div>
+            </div>
           </el-card>
           <div>
 
@@ -574,73 +613,54 @@
 
           </div>
 
-          <el-card class="box-card">
-            <el-row :gutter="20">
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-                    <div class="item-title">平均气温</div>
-                    <div class="item-value" style="color: #059669;">{{ AverageweatherRealTime.temperature }}°C</div>
-
-                  </div>
-                </el-card>
-              </el-col>
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-                    <div class="item-title">平均湿度</div>
-                    <div class="item-value" style="color: #2563eb;">{{ AverageweatherRealTime.humidity }}%</div>
-                  </div>
-                </el-card>
-              </el-col>
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-                    <div class="item-title">累计降雨量</div>
-                    <div class="item-value">{{ AverageweatherRealTime.rainfallA }}mm</div>
-
-                  </div>
-                </el-card>
-              </el-col>
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-                    <div class="item-title">平均风速</div>
-                    <div class="item-value" style="color: #7c3aed;">{{ AverageweatherRealTime.windSpeed }}m/s</div>
-
-                  </div>
-                </el-card>
-              </el-col>
-            </el-row>
-
-            <el-row :gutter="20">
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-                    <div class="item-title">土壤氮</div>
-                    <div class="item-value" style="color: #059669;">{{ AverageweatherRealTime.soilN }}</div>
-
-                  </div>
-                </el-card>
-              </el-col>
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-                    <div class="item-title">土壤磷</div>
-                    <div class="item-value" style="color: #2563eb;">{{ AverageweatherRealTime.soilP }}</div>
-                  </div>
-                </el-card>
-              </el-col>
-              <el-col :span="6">
-                <el-card>
-                  <div class="item-content">
-                    <div class="item-title">土壤钾</div>
-                    <div class="item-value">{{ AverageweatherRealTime.soilK }}</div>
-
-                  </div>
-                </el-card>
-              </el-col>
-            </el-row>
+          <el-card class="weather-stats-card">
+            <div slot="header" class="clearfix">
+              <span>统计数据</span>
+            </div>
+            <div class="weather-stats-grid">
+              <div class="weather-stats-item">
+                <div class="weather-stats-content">
+                  <div class="weather-stats-title">平均气温</div>
+                  <div class="weather-stats-value temperature">{{ AverageweatherRealTime.temperature }}°C</div>
+                </div>
+              </div>
+              <div class="weather-stats-item">
+                <div class="weather-stats-content">
+                  <div class="weather-stats-title">平均湿度</div>
+                  <div class="weather-stats-value humidity">{{ AverageweatherRealTime.humidity }}%</div>
+                </div>
+              </div>
+              <div class="weather-stats-item">
+                <div class="weather-stats-content">
+                  <div class="weather-stats-title">累计降雨量</div>
+                  <div class="weather-stats-value rainfall">{{ AverageweatherRealTime.rainfallA }}mm</div>
+                </div>
+              </div>
+              <div class="weather-stats-item">
+                <div class="weather-stats-content">
+                  <div class="weather-stats-title">平均风速</div>
+                  <div class="weather-stats-value wind-speed">{{ AverageweatherRealTime.windSpeed }}m/s</div>
+                </div>
+              </div>
+              <div class="weather-stats-item">
+                <div class="weather-stats-content">
+                  <div class="weather-stats-title">土壤氮</div>
+                  <div class="weather-stats-value soil-n">{{ AverageweatherRealTime.soilN }}</div>
+                </div>
+              </div>
+              <div class="weather-stats-item">
+                <div class="weather-stats-content">
+                  <div class="weather-stats-title">土壤磷</div>
+                  <div class="weather-stats-value soil-p">{{ AverageweatherRealTime.soilP }}</div>
+                </div>
+              </div>
+              <div class="weather-stats-item">
+                <div class="weather-stats-content">
+                  <div class="weather-stats-title">土壤钾</div>
+                  <div class="weather-stats-value soil-k">{{ AverageweatherRealTime.soilK }}</div>
+                </div>
+              </div>
+            </div>
           </el-card>
 
         </el-tab-pane>
@@ -653,67 +673,93 @@
     <el-dialog :title="title" :visible.sync="openControllerView" width="800px" append-to-body>
       <el-tabs v-model="activeControllerTab" @tab-click="handleClickController">
         <el-tab-pane label="基本信息" name="basicInfoController">
-          <el-row :gutter="20">
-            <el-col :span="12">
-              <div class="device-info">
-                <h3>设备基础信息</h3>
-
-                <ul>
-                  <li><strong>设备编号:</strong> {{ formView.deviceId }}</li>
-                  <li><strong>设备名称:</strong> {{ formView.deviceName }}</li>
-
-                  <li><strong style="float: left;">设备类型:</strong><dict-tag :options="dict.type.device_type"
-                      :value="formView.deviceTypeId" /></li>
-                  <li><strong>设备型号:</strong> {{ formView.model }}</li>
-                  <li><strong>制造厂商:</strong> {{ formView.manufacturer }}</li>
-                </ul>
-
+          <div class="device-basic-info">
+            <!-- 设备基础信息卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">设备基础信息</span>
               </div>
+              <div class="info-grid">
+                <div class="info-item">
+                  <div class="info-label">设备编号</div>
+                  <div class="info-value">{{ formView.deviceId }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备名称</div>
+                  <div class="info-value">{{ formView.deviceName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备类型</div>
+                  <div class="info-value">
+                    <dict-tag :options="dict.type.device_type" :value="formView.deviceTypeId" />
+                  </div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">设备型号</div>
+                  <div class="info-value">{{ formView.model }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">制造厂商</div>
+                  <div class="info-value">{{ formView.manufacturer }}</div>
+                </div>
+              </div>
+            </el-card>
 
-
-            </el-col>
-            <el-col :span="12">
-              <div class="device-info">
-                <h3>位置信息</h3>
-
-                <ul>
-                  <li><strong>所属农场:</strong> {{ formView.deptName }}</li>
-                  <li><strong>所属地块:</strong> {{ formView.fieldName }}</li>
-                  <li><strong>安装日期:</strong> {{ formView.installDate }}</li>
-                  <li><strong>GPS坐标:</strong> {{ formView.longitude }} - {{ formView.latitude }}</li>
-                </ul>
-
+            <!-- 位置信息卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">位置信息</span>
               </div>
-            </el-col>
-          </el-row>
-          <el-row>
-            <el-col :span="24">
-              <h3>运行状态</h3>
-              <el-row :gutter="20">
-                <el-col :span="12">
-                  <div>
-                    <p>当前状态:
-                      <el-tag :type="getTagType(formView.status)">{{ getStatusText(formView.status) }}</el-tag>
-                    </p>
-                  </div>
-                  <div>
-                    <p>最后活动:{{ formView.lastActiveTime }}</p>
+              <div class="info-grid">
+                <div class="info-item">
+                  <div class="info-label">所属农场</div>
+                  <div class="info-value">{{ formView.deptName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">所属地块</div>
+                  <div class="info-value">{{ formView.fieldName }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">安装日期</div>
+                  <div class="info-value">{{ formView.installDate }}</div>
+                </div>
+                <div class="info-item">
+                  <div class="info-label">GPS坐标</div>
+                  <div class="info-value">{{ formView.longitude }} - {{ formView.latitude }}</div>
+                </div>
+              </div>
+            </el-card>
 
+            <!-- 运行状态卡片 -->
+            <el-card class="info-card" shadow="never">
+              <div slot="header" class="card-header">
+                <span class="card-title">运行状态</span>
+              </div>
+              <div class="status-grid">
+                <div class="status-item">
+                  <div class="status-label">当前状态</div>
+                  <div class="status-value">
+                    <el-tag :type="getTagType(formView.status)">{{ getStatusText(formView.status) }}</el-tag>
                   </div>
-                </el-col>
-                <el-col :span="12">
-                  <div>
-                    <p>电量状态:
-                      <el-progress :percentage="deviceStatus.battery" :stroke-width="10"></el-progress>
-                    </p>
-                  </div>
-                  <div>
-                    <p>信号强度:良好</p>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">最后活动</div>
+                  <div class="status-value">{{ formView.lastActiveTime }}</div>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">电量状态</div>
+                  <div class="status-value">
+                    <el-progress :percentage="deviceStatus.battery" :stroke-width="8" class="battery-progress"></el-progress>
+                    <span class="battery-text">{{ deviceStatus.battery }}%</span>
                   </div>
-                </el-col>
-              </el-row>
-            </el-col>
-          </el-row>
+                </div>
+                <div class="status-item">
+                  <div class="status-label">信号强度</div>
+                  <div class="status-value status-good">良好</div>
+                </div>
+              </div>
+            </el-card>
+          </div>
         </el-tab-pane>
         <el-tab-pane label="实时数据" name="realTimeData">
           <div>
@@ -1610,6 +1656,317 @@ ul {
   font-size: 24px;
 }
 
+/* 气象数据卡片样式 */
+.weather-data-card {
+  margin-bottom: 20px;
+}
+
+.weather-grid {
+  display: grid;
+  grid-template-columns: repeat(5, 1fr);
+  gap: 16px;
+  padding: 16px 0;
+  grid-auto-rows: minmax(80px, auto);
+}
+
+.weather-item {
+  background: #ffffff;
+  border: 1px solid #e5e7eb;
+  border-radius: 8px;
+  padding: 20px 16px;
+  text-align: center;
+  transition: all 0.3s ease;
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
+  height: 100px;
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  box-sizing: border-box;
+}
+
+.weather-item:hover {
+  transform: translateY(-2px);
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
+  border-color: #10b981;
+}
+
+.weather-item-content {
+  width: 100%;
+}
+
+.weather-item-title {
+  font-size: 14px;
+  color: #6b7280;
+  margin-bottom: 8px;
+  font-weight: 500;
+}
+
+.weather-item-value {
+  font-size: 20px;
+  font-weight: 600;
+  line-height: 1.2;
+}
+
+/* 不同数据类型的颜色 */
+.weather-item-value.temperature { color: #059669; }
+.weather-item-value.humidity { color: #2563eb; }
+.weather-item-value.rainfall { color: #0891b2; }
+.weather-item-value.wind-direction { color: #7c3aed; }
+.weather-item-value.wind-speed { color: #059669; }
+.weather-item-value.pressure { color: #2563eb; }
+.weather-item-value.light { color: #f59e0b; }
+.weather-item-value.soil-n { color: #dc2626; }
+.weather-item-value.soil-p { color: #7c2d12; }
+.weather-item-value.soil-k { color: #365314; }
+
+/* 统计数据卡片样式 */
+.weather-stats-card {
+  margin-top: 20px;
+}
+
+.weather-stats-grid {
+  display: grid;
+  grid-template-columns: repeat(4, 1fr);
+  gap: 16px;
+  padding: 16px 0;
+  grid-auto-rows: minmax(80px, auto);
+}
+
+.weather-stats-item {
+  background: #ffffff;
+  border: 1px solid #e5e7eb;
+  border-radius: 8px;
+  padding: 20px 16px;
+  text-align: center;
+  transition: all 0.3s ease;
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
+  height: 100px;
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  box-sizing: border-box;
+}
+
+.weather-stats-item:hover {
+  transform: translateY(-2px);
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
+  border-color: #10b981;
+}
+
+.weather-stats-content {
+  width: 100%;
+}
+
+.weather-stats-title {
+  font-size: 14px;
+  color: #6b7280;
+  margin-bottom: 8px;
+  font-weight: 500;
+}
+
+.weather-stats-value {
+  font-size: 18px;
+  font-weight: 600;
+  line-height: 1.2;
+}
+
+/* 统计数据颜色 */
+.weather-stats-value.temperature { color: #059669; }
+.weather-stats-value.humidity { color: #2563eb; }
+.weather-stats-value.rainfall { color: #0891b2; }
+.weather-stats-value.wind-speed { color: #7c3aed; }
+.weather-stats-value.soil-n { color: #dc2626; }
+.weather-stats-value.soil-p { color: #7c2d12; }
+.weather-stats-value.soil-k { color: #365314; }
+
+/* 响应式设计 */
+@media (max-width: 1200px) {
+  .weather-grid {
+    grid-template-columns: repeat(4, 1fr);
+  }
+  
+  .weather-stats-grid {
+    grid-template-columns: repeat(3, 1fr);
+  }
+}
+
+@media (max-width: 768px) {
+  .weather-grid {
+    grid-template-columns: repeat(2, 1fr);
+    gap: 12px;
+  }
+  
+  .weather-stats-grid {
+    grid-template-columns: repeat(2, 1fr);
+    gap: 12px;
+  }
+  
+  .weather-item,
+  .weather-stats-item {
+    padding: 16px 12px;
+    height: 90px;
+  }
+  
+  .weather-item-value,
+  .weather-stats-value {
+    font-size: 18px;
+  }
+  
+  .weather-item-title,
+  .weather-stats-title {
+    font-size: 13px;
+  }
+}
+
+@media (max-width: 480px) {
+  .weather-grid,
+  .weather-stats-grid {
+    grid-template-columns: 1fr;
+  }
+}
+
+/* 设备基本信息样式 */
+.device-basic-info {
+  padding: 0;
+}
+
+.info-card {
+  margin-bottom: 20px;
+  border: 1px solid #e5e7eb;
+  border-radius: 8px;
+}
+
+.info-card:last-child {
+  margin-bottom: 0;
+}
+
+.card-header {
+  padding: 0;
+  border-bottom: none;
+}
+
+.card-title {
+  font-size: 16px;
+  font-weight: 600;
+  color: #1f2937;
+}
+
+.info-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 20px;
+  padding: 20px 0;
+}
+
+.info-item {
+  display: flex;
+  flex-direction: column;
+  gap: 8px;
+}
+
+.info-label {
+  font-size: 14px;
+  color: #6b7280;
+  font-weight: 500;
+}
+
+.info-value {
+  font-size: 15px;
+  color: #1f2937;
+  font-weight: 400;
+  word-break: break-all;
+}
+
+/* 运行状态特殊布局 */
+.status-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 20px;
+  padding: 20px 0;
+}
+
+.status-item {
+  display: flex;
+  flex-direction: column;
+  gap: 12px;
+}
+
+.status-label {
+  font-size: 14px;
+  color: #6b7280;
+  font-weight: 500;
+}
+
+.status-value {
+  font-size: 15px;
+  color: #1f2937;
+  font-weight: 400;
+  display: flex;
+  align-items: center;
+  gap: 8px;
+}
+
+.status-good {
+  color: #059669;
+  font-weight: 500;
+}
+
+.battery-progress {
+  flex: 1;
+  max-width: 120px;
+}
+
+.battery-text {
+  font-size: 14px;
+  color: #6b7280;
+  min-width: 35px;
+}
+
+/* 响应式设计 */
+@media (max-width: 768px) {
+  .info-grid,
+  .status-grid {
+    grid-template-columns: 1fr;
+    gap: 16px;
+    padding: 16px 0;
+  }
+  
+  .info-item,
+  .status-item {
+    gap: 6px;
+  }
+  
+  .info-label,
+  .status-label {
+    font-size: 13px;
+  }
+  
+  .info-value,
+  .status-value {
+    font-size: 14px;
+  }
+  
+  .battery-progress {
+    max-width: 100px;
+  }
+}
+
+@media (max-width: 480px) {
+  .device-basic-info {
+    padding: 0 10px;
+  }
+  
+  .info-card {
+    margin-bottom: 16px;
+  }
+  
+  .card-title {
+    font-size: 15px;
+  }
+}
+
 .weather-chart-header {
   display: flex;
   /* 关键:让子元素横向排列 */