From b3d89f70b2fefd7438eec61f7662da30ff8923c1 Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期五, 15 三月 2024 14:35:46 +0800
Subject: [PATCH] feat:道路数据接口

---
 src/views/daoAnOffice/left-top.vue |  250 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 183 insertions(+), 67 deletions(-)

diff --git a/src/views/daoAnOffice/left-top.vue b/src/views/daoAnOffice/left-top.vue
index fed5c4e..09cb4c5 100644
--- a/src/views/daoAnOffice/left-top.vue
+++ b/src/views/daoAnOffice/left-top.vue
@@ -1,93 +1,172 @@
 <script setup lang="ts">
-import { reactive, ref } from "vue";
+import { ref, onMounted, onUnmounted } from "vue";
 import { currentGET } from "@/api";
 import CountUp from "@/components/count-up";
-const duration = ref(2);
-const state = reactive({
-  alarmNum: 759,
-  offlineNum: 44,
-  onlineNum: 654,
-  totalNum: 698,
-});
+
+
+// const getData = () => {
+//   currentGET("leftTop").then((res) => {
+//     console.log(res);
+//     if (res.success) {
+//       state.alarmNum = res.data.alarmNum;
+//       state.offlineNum = res.data.offlineNum;
+//       state.onlineNum = res.data.onlineNum;
+//       state.totalNum = res.data.totalNum;
+//     }
+//   });
+// };
+interface dataType {
+  // 杩�3骞翠氦閫氫簨鏁呮寚鏁�
+  targetOneName: string,
+  targetOneValue: number | string,
+  targetOneUnit: string,
+  targetOneStatus: number,
+  targetOneCompareValue: number | string,
+  // 绔嬫
+  targetTwoName: string,
+  targetTwoValue: number | string,
+  targetTwoUnit: string,
+  targetTwoStatus: number,
+  targetTwoCompareValue: number | string,
+  // 鍙椾激浜烘暟
+  targetThreeName: string,
+  targetThreeValue: number | string,
+  targetThreeUnit: string,
+  targetThreeStatus: number,
+  targetThreeCompareValue: number | string,
+  // 姝讳骸浜烘暟
+  targetFourName: string,
+  targetFourValue: number | string,
+  targetFourUnit: string,
+  targetFourStatus: number,
+  targetFourCompareValue: number | string,
+
+}
+const dataInfo = ref(<dataType>{});
 
 const getData = () => {
   currentGET("leftTop").then((res) => {
     console.log(res);
-    if (res.success) {
-      state.alarmNum = res.data.alarmNum;
-      state.offlineNum = res.data.offlineNum;
-      state.onlineNum = res.data.onlineNum;
-      state.totalNum = res.data.totalNum;
+    if (res.code === 200) {
+      dataInfo.value = res.data;
     }
   });
-};
-getData();
+}
+const step = 5000;
+let timer: any = null;
+
+const loop = () => {
+  // 绔嬪嵆璇锋眰涓�娆�
+  getData();
+  timer = setInterval(() => {
+    getData();
+  }, step);
+}
+
+const stopLoop = () => {
+  clearInterval(timer);
+}
+
+
+
+onMounted(() => {
+  // loop();
+  getData();
+
+});
+
+onUnmounted(() => {
+  stopLoop();
+})
+
 </script>
 
 <template>
   <ul class="user_Overview flex">
-    <li class="user_Overview-item" >
+    <li class="user_Overview-item">
       <div class="user_Overview_nums allnum">
-        <div class="user_Overview_nums_img" >
+        <div class="user_Overview_nums_img">
           <img src="@/assets/img/sgjb.png" />
         </div>
         <div class="user_Overview_nums_img_p">
-            <p class="user_Overview_nums_img_p_num">{{state.totalNum}}<span class="user_Overview_nums_img_p_num_nan">浠�</span><span class="user_Overview_nums_img_p_num_ss">鈫� 28.1%</span></p>
-           <p>浜ら�氫簨鏁呮帴鎶�</p>
+          <p class="user_Overview_nums_img_p_num"> <span class="info-num">{{ dataInfo.targetOneValue }}</span> <span
+              class="user_Overview_nums_img_p_num_nan">{{ dataInfo.targetOneUnit }}</span><span
+              class="user_Overview_nums_img_p_num_ss"
+              :class="{ 'user_Overview_nums_img_p_num_ss_d': dataInfo.targetOneStatus === 2 }">
+              {{ dataInfo.targetOneStatus === 1 ? '鈫�' : '鈫�' }}
+              {{ dataInfo.targetOneCompareValue }}%</span></p>
+          <p class="info-lable">{{ dataInfo.targetOneName }}</p>
         </div>
-<!--        <CountUp :endVal="state.totalNum" :duration="duration" />-->
+        <!--        <CountUp :endVal="state.totalNum" :duration="duration" />-->
       </div>
-<!--      <p>鎬昏澶囨暟1</p>-->
+      <!--      <p>鎬昏澶囨暟1</p>-->
     </li>
-    <li class="user_Overview-item" >
+    <li class="user_Overview-item">
       <div class="user_Overview_nums online">
-        <div class="user_Overview_nums_img" >
+        <div class="user_Overview_nums_img">
           <img src="@/assets/img/la.png" />
         </div>
         <div class="user_Overview_nums_img_p">
-          <p class="user_Overview_nums_img_p_numt">{{state.onlineNum}}<span class="user_Overview_nums_img_p_num_nan">浠�</span><span class="user_Overview_nums_img_p_num_ss">鈫� 28.1%</span></p>
-          <p>绔嬫</p>
+          <p class="user_Overview_nums_img_p_num"> <span class="info-num">{{ dataInfo.targetTwoValue }}</span> <span
+              class="user_Overview_nums_img_p_num_nan">{{ dataInfo.targetTwoUnit }}</span><span
+              class="user_Overview_nums_img_p_num_ss"
+              :class="{ 'user_Overview_nums_img_p_num_ss_d': dataInfo.targetTwoStatus === 2 }">
+              {{ dataInfo.targetTwoStatus === 1 ? '鈫�' : '鈫�' }}
+              {{ dataInfo.targetTwoCompareValue }}%</span></p>
+          <p class="info-lable">{{ dataInfo.targetTwoName }}</p>
         </div>
 
-<!--        <CountUp :endVal="state.onlineNum" :duration="duration" />-->
+        <!--        <CountUp :endVal="state.onlineNum" :duration="duration" />-->
       </div>
-<!--      <p>鍦ㄧ嚎鏁�</p>-->
+      <!--      <p>鍦ㄧ嚎鏁�</p>-->
     </li>
-    <li class="user_Overview-item" >
+    <li class="user_Overview-item">
       <div class="user_Overview_nums offline">
-        <div class="user_Overview_nums_img" >
+        <div class="user_Overview_nums_img">
           <img src="@/assets/img/ssrs.png" />
         </div>
         <div class="user_Overview_nums_img_p">
-          <p class="user_Overview_nums_img_p_nums">{{state.offlineNum}}<span class="user_Overview_nums_img_p_num_nan">浠�</span><span class="user_Overview_nums_img_p_num_ss">鈫� 28.1%</span></p>
-          <p>鍙椾激浜烘暟</p>
+          <p class="user_Overview_nums_img_p_num"> <span class="info-num">{{ dataInfo.targetThreeValue }}</span> <span
+              class="user_Overview_nums_img_p_num_nan">{{ dataInfo.targetThreeUnit }}</span><span
+              class="user_Overview_nums_img_p_num_ss"
+              :class="{ 'user_Overview_nums_img_p_num_ss_d': dataInfo.targetThreeStatus === 2 }">
+              {{ dataInfo.targetThreeStatus === 1 ? '鈫�' : '鈫�' }}
+              {{ dataInfo.targetThreeCompareValue }}%</span></p>
+          <p class="info-lable">{{ dataInfo.targetThreeName }}</p>
         </div>
 
-<!--        <CountUp :endVal="state.offlineNum" :duration="duration" />-->
+        <!--        <CountUp :endVal="state.offlineNum" :duration="duration" />-->
       </div>
-<!--      <p>鎺夌嚎鏁�</p>-->
+      <!--      <p>鎺夌嚎鏁�</p>-->
     </li>
-    <li class="user_Overview-item" >
+    <li class="user_Overview-item">
       <div class="user_Overview_nums laramnum">
-        <div class="user_Overview_nums_img" >
+        <div class="user_Overview_nums_img">
           <img src="@/assets/img/swrs.png" />
         </div>
         <div class="user_Overview_nums_img_p">
-          <p class="user_Overview_nums_img_p_numf">{{state.alarmNum}}<span class="user_Overview_nums_img_p_num_nan">浠�</span><span class="user_Overview_nums_img_p_num_ss">鈫� 28.1%</span></p>
-          <p>姝讳骸浜烘暟</p>
+          <p class="user_Overview_nums_img_p_num"> <span class="info-num">{{ dataInfo.targetFourValue }}</span> <span
+              class="user_Overview_nums_img_p_num_nan">{{ dataInfo.targetFourUnit }}</span><span
+              class="user_Overview_nums_img_p_num_ss"
+              :class="{ 'user_Overview_nums_img_p_num_ss_d': dataInfo.targetFourStatus === 2 }">
+              {{ dataInfo.targetFourStatus === 1 ? '鈫�' : '鈫�' }}
+              {{ dataInfo.targetFourCompareValue }}%</span></p>
+          <p class="info-lable">{{ dataInfo.targetFourName }}</p>
         </div>
 
-<!--        <CountUp :endVal="state.alarmNum" :duration="duration" />-->
+        <!--        <CountUp :endVal="state.alarmNum" :duration="duration" />-->
       </div>
-<!--      <p>鍛婅娆℃暟</p>-->
+      <!--      <p>鍛婅娆℃暟</p>-->
     </li>
   </ul>
 </template>
 
 <style scoped lang="scss">
-.user_Overview-item{
-  background-color: #11223A;
+.user_Overview-item {
+  background-color: rgba(17, 34, 58, 0.6);
+
 }
+
 .left-top {
   width: 100%;
   height: 100%;
@@ -99,10 +178,19 @@
     margin: 0 20px;
     padding: 15px 0;
     border: 1px solid #29466A;
+
     p {
       text-align: left;
       //height: 16px;
       font-size: 16px;
+    }
+
+    &:first-of-type {
+      margin-left: 0;
+    }
+
+    &:last-of-type {
+      margin-right: 0;
     }
 
     .user_Overview_nums {
@@ -120,26 +208,28 @@
       background-position: center center;
       position: relative;
 
-      &::before {
-        content: "";
-        position: absolute;
-        width: 100%;
-        height: 100%;
-        top: 0;
-        left: 0;
-      }
+      // &::before {
+      //   content: "";
+      //   position: absolute;
+      //   width: 100%;
+      //   height: 100%;
+      //   top: 0;
+      //   left: 0;
+      // }
 
       &.bgdonghua::before {
         animation: rotating 14s linear infinite;
       }
     }
-    .user_Overview_nums_img{
+
+    .user_Overview_nums_img {
       //background-color: floralwhite;
       //padding: 6px;
       border-radius: 8px;
       width: 72px;
     }
-    .user_Overview_nums_img_p{
+
+    .user_Overview_nums_img_p {
       //display: flex;
       flex-direction: column;
       justify-content: space-around;
@@ -147,59 +237,77 @@
       //height: 90px;
       //line-height: 40px;
       margin-left: 10px;
-      .user_Overview_nums_img_p_numt{
+
+      .user_Overview_nums_img_p_numt {
         color: #0071F8;
         font-size: 25px;
-        font-weight: 400;
-        .user_Overview_nums_img_p_num_nan{
+        font-weight: 800;
+
+        .user_Overview_nums_img_p_num_nan {
           font-size: 14px;
           color: #fff;
         }
-        .user_Overview_nums_img_p_num_ss{
+
+        .user_Overview_nums_img_p_num_ss {
           font-size: 14px;
           color: #D44233;
         }
       }
-      .user_Overview_nums_img_p_num{
+
+      .user_Overview_nums_img_p_num {
         color: #F96FF8;
         font-size: 25px;
-        font-weight: 400;
-        .user_Overview_nums_img_p_num_nan{
+        font-weight: 800;
+
+        .user_Overview_nums_img_p_num_nan {
           font-size: 14px;
           color: #fff;
         }
-        .user_Overview_nums_img_p_num_ss{
+
+        .user_Overview_nums_img_p_num_ss {
           font-size: 14px;
           color: #D44233;
         }
       }
-      .user_Overview_nums_img_p_nums{
+
+      .user_Overview_nums_img_p_nums {
         color: #FE3146;
         font-size: 25px;
-        font-weight: 400;
-        .user_Overview_nums_img_p_num_nan{
+        font-weight: 800;
+
+        .user_Overview_nums_img_p_num_nan {
           font-size: 14px;
           color: #fff;
         }
-        .user_Overview_nums_img_p_num_ss{
+
+        .user_Overview_nums_img_p_num_ss {
           font-size: 14px;
           color: #D44233;
         }
+
+        .user_Overview_nums_img_p_num_ss_d {
+          font-size: 14px;
+          color: #22db69;
+        }
       }
-      .user_Overview_nums_img_p_numf{
+
+      .user_Overview_nums_img_p_numf {
         color: #EA7039;
         font-size: 25px;
-        font-weight: 400;
-        .user_Overview_nums_img_p_num_nan{
+        font-weight: 800;
+
+        .user_Overview_nums_img_p_num_nan {
           font-size: 14px;
           color: #fff;
         }
-        .user_Overview_nums_img_p_num_ss{
+
+        .user_Overview_nums_img_p_num_ss {
           font-size: 14px;
           color: #D44233;
         }
       }
     }
+
     .allnum {
       //background-image: url("@/assets/img/bbiao.png");
       //&::before {
@@ -226,4 +334,12 @@
     }
   }
 }
+
+.info-num {
+  font-family: 'PangMenZhengDao';
+}
+
+.info-lable {
+  font-family: 'PingFang SC';
+}
 </style>

--
Gitblit v1.8.0