From 53eab8256b0703f5ab229d06933f3115a744e202 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Wed, 02 Apr 2025 15:39:38 +0800
Subject: [PATCH] feat: 机巢聚合80%

---
 src/views/Home/useUavHome/MapPopUpBox.vue |   75 +++++++++++++++++++++++++++----------
 1 files changed, 55 insertions(+), 20 deletions(-)

diff --git a/src/views/Home/useUavHome/MapPopUpBox.vue b/src/views/Home/useUavHome/MapPopUpBox.vue
index 6af857b..84afddb 100644
--- a/src/views/Home/useUavHome/MapPopUpBox.vue
+++ b/src/views/Home/useUavHome/MapPopUpBox.vue
@@ -3,41 +3,66 @@
     <div class="header">
       <div class="headerLeft">
         <img class="header-image" src="../../../assets/images/home/mapPopUpBox/titleImg.png" alt="" />
-        <div class="header-title">{{props.data.region_name}}</div>
+        <div class="header-title">{{ dataObj.region_name }}</div>
       </div>
       <el-icon class="header-close" @click="props.removeLabel">
         <Close />
       </el-icon>
     </div>
-    <div class="info">
-      <div class="info-item">
-        机巢数:
-        <div class="num">{{props.data.device_num}}</div>
+    <div class="loading" v-if="loading">加载中...</div>
+    <div class="content" v-else>
+      <div class="info">
+        <div class="info-item">
+          机巢数:
+          <div class="num">{{ dataObj.device_num }}</div>
+        </div>
+        <div class="info-item">
+          任务数:
+          <div class="num">{{ dataObj.jobNum }}</div>
+        </div>
       </div>
-      <div class="info-item">
-        任务数:
-        <div class="num">{{props.data.jobNum}}</div>
+      <div class="status-title">机巢状态</div>
+      <div class="status-list">
+        <div v-for="item in list" :key="item.name" class="status-item">
+          <div class="status-value" :style="{ color: item.color }">{{ item.value }}</div>
+          <div class="status-name">{{ item.name }}</div>
+        </div>
       </div>
     </div>
-    <div class="status-title">机巢状态</div>
-    <div class="status-list">
-      <div v-for="item in list" :key="item.name" class="status-item">
-        <div class="status-value" :style="{ color: item.color }">{{ item.value }}</div>
-        <div class="status-name">{{ item.name }}</div>
-      </div>
-    </div>
+
   </div>
 </template>
 <script setup>
 import { Close } from '@element-plus/icons-vue';
+import { getDeviceInfoNum } from '@/api/home/machineNest';
+import { getTotalJobNum } from '@/api/home';
 
 const props = defineProps(['data', 'removeLabel']);
-const list = [
-  { name: '空闲中', value: props.data.ex_num || 0, color: '#FFA768' },
-  { name: '作业', value:props.data.leisure_num || 0, color: '#8EFFAC' },
-  { name: '离线中', value: props.data.offline_num || 0, color: '#FFFFFF' },
-];
+const list = ref([
+  { name: '空闲中', value: 0, color: '#FFA768' },
+  { name: '作业', value: 0, color: '#8EFFAC' },
+  { name: '离线中', value: 0, color: '#FFFFFF' },
+]);
+const loading = ref(true);
 
+const dataObj = ref({
+  device_num: 0,
+  jobNum: 0,
+  region_name: '',
+});
+onMounted(async () => {
+  loading.value = true;
+  const areaCode = props.data.region_code;
+  dataObj.value.region_name = props.data.region_name;
+  const res = await getDeviceInfoNum({ areaCode });
+  const resJob = await getTotalJobNum({ areaCode });
+  dataObj.value.jobNum = resJob.data.data;
+  dataObj.value.device_num = res.data.data.device_num;
+  list.value[0].value = res.data.data.ex_num;
+  list.value[1].value = res.data.data.leisure_num;
+  list.value[2].value = res.data.data.offline_num;
+  loading.value = false;
+});
 </script>
 <style scoped lang="scss">
 .mapPopUpBox {
@@ -46,6 +71,16 @@
   background: url('@/assets/images/home/mapPopUpBox/mapPopUpBg.png') no-repeat center / 100% 100%;
   padding-left: 98px;
 
+  .loading{
+    display: flex;
+    height: calc(100% - 51px);
+    justify-content: center;
+    align-items: center;
+    font-size: 20px;
+    color: #ffffff;
+    background: rgb(24,50,101,.5);
+  }
+
   .header {
     padding: 0 12px;
     width: 320px;

--
Gitblit v1.9.3