From fb8960f8c094f4905ee37ceb09dc6e22d276e8b6 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 30 十月 2024 13:59:08 +0800
Subject: [PATCH] ll

---
 screen/src/views/FireFighting.vue |  433 ++++++++++++++++++++++++++++++-----------------------
 1 files changed, 244 insertions(+), 189 deletions(-)

diff --git a/screen/src/views/FireFighting.vue b/screen/src/views/FireFighting.vue
index 2a5d881..25fd46a 100644
--- a/screen/src/views/FireFighting.vue
+++ b/screen/src/views/FireFighting.vue
@@ -31,14 +31,14 @@
                   <span class="item">鏁呴殰</span>
                   <span class="item">绂荤嚎</span>
                 </div>
-                <template v-for="i in 5">
+                <template v-for="(item, i) in dataList1" :key="i">
                   <div class="line">
-                    <span class="item name">鐏伓鎶ヨ绯荤粺</span>
-                    <span class="item">11</span>
-                    <span class="item">11</span>
-                    <span class="item">11</span>
-                    <span class="item">11</span>
-                    <span class="item">11</span>
+                    <span class="item name">{{ item.deviceTypeName }}</span>
+                    <span class="item">{{ item.statusTotal }}</span>
+                    <span class="item">{{ item.alarmNum }}</span>
+                    <span class="item">{{ item.shieldNum }}</span>
+                    <span class="item">{{ item.errNum }}</span>
+                    <span class="item">{{ item.offlineNum }}</span>
                   </div>
                   <div class="separate"></div>
                 </template>
@@ -54,12 +54,12 @@
               <img src="@/assets/images/title@2x.png" class="bg" alt="" />
             </div>
             <div class="police_wrap">
-              <div class="item" v-for="(ind, i) in 4">
+              <div class="item" v-for="(item, i) in dataList2">
                 <div class="head">
-                  <div class="name">鐪熷疄鎶ヨ鏁�</div>
-                  <div class="name">{{ i }}娆�</div>
+                  <div class="name">{{ item.name }}</div>
+                  <div class="name">{{ item.num }}娆�</div>
                 </div>
-                <FirePercent :color="policeColors[i]" :rate="40" />
+                <FirePercent :color="policeColors[i]" :rate="item.rate" />
               </div>
 
             </div>
@@ -84,35 +84,35 @@
                 <img src="@/assets/images/FireFighting/xiaofang_ic_zaixian@2x.png" alt="">
                 <div class="content">
                   <div class="name">鍦ㄧ嚎</div>
-                  <div class="num">1000</div>
+                  <div class="num">{{ dataList4.onlineDeviceNum }}</div>
                 </div>
               </div>
               <div class="item">
                 <img src="@/assets/images/FireFighting/xiaofang_ic_baojing@2x.png" alt="">
                 <div class="content">
                   <div class="name">鎶ヨ</div>
-                  <div class="num num2">12</div>
+                  <div class="num num2">{{ dataList4.alarmDeviceNum }}</div>
                 </div>
               </div>
               <div class="item">
                 <img src="@/assets/images/FireFighting/xiaofang_ic_guzhang@2x.png" alt="">
                 <div class="content">
                   <div class="name">鏁呴殰</div>
-                  <div class="num num3">12</div>
+                  <div class="num num3">{{ dataList4.errDeviceNum }}</div>
                 </div>
               </div>
               <div class="item">
                 <img src="@/assets/images/FireFighting/xiaofang_ic_lixian@2x.png" alt="">
                 <div class="content">
                   <div class="name">绂荤嚎</div>
-                  <div class="num num4">12</div>
+                  <div class="num num4">{{ dataList4.offlineDeviceNum }}</div>
                 </div>
               </div>
               <div class="item">
                 <img src="@/assets/images/FireFighting/xiaofang_ic_pingbi@2x.png" alt="">
                 <div class="content">
                   <div class="name">灞忚斀</div>
-                  <div class="num num5">12</div>
+                  <div class="num num5">{{ dataList4.shieldDeviceNum }}</div>
                 </div>
               </div>
             </div>
@@ -206,20 +206,26 @@
             </div>
             <div class="content_wrap">
               <div class="list">
-                <template v-for="i in 3">
-                  <div class="item">
-                    <div>宸茬淮淇�</div>
-                    <div class="num active">500</div>
-                  </div>
-                  <div v-if="i < 3" class="separate"></div>
-                </template>
-
+                <div class="item">
+                  <div>宸茬淮淇�</div>
+                  <div class="num active">{{ dataList5.protectNum }}</div>
+                </div>
+                <div class="separate"></div>
+                <div class="item">
+                  <div>璁″垝缁翠繚</div>
+                  <div class="num active">{{ dataList5.planProtectTotal }}</div>
+                </div>
+                <div class="separate"></div>
+                <div class="item">
+                  <div>缁翠繚鐜�</div>
+                  <div v-if="dataList5.protectNum && dataList5.planProtectTotal" class="num active">{{ ((dataList5.protectNum / dataList5.planProtectTotal) * 100).toFixed(0) }}%</div>
+                </div>
               </div>
               <div class="footer">
                 <img src="@/assets/images/FireFighting/ic_weixiu@2x.png" class="icon" alt="">
                 <div class="content">
                   <div>鏈湀鏂板缁翠繚</div>
-                  <div class="num">40 <span>涓�</span></div>
+                  <div class="num">{{ dataList5.monthAddNum }} <span>涓�</span></div>
                 </div>
               </div>
             </div>
@@ -241,14 +247,14 @@
                 <img src="@/assets/images/FireFighting/ic_tibao@2x.png" alt="">
                 <div class="content">
                   <div class="name">鎻愭姤闅愭偅鏁�</div>
-                  <div class="num"><span>10</span>涓�</div>
+                  <div class="num"><span>{{ dataList4.todayDangerNum }}</span>涓�</div>
                 </div>
               </div>
               <div class="item">
                 <img src="@/assets/images/FireFighting/ic_chuli@2x.png" alt="">
                 <div class="content">
                   <div class="name">澶勭悊闅愭偅鏁�</div>
-                  <div class="num"><span class="today">3</span>涓�</div>
+                  <div class="num"><span class="today">{{ dataList4.dealDangerNum }}</span>涓�</div>
                 </div>
               </div>
             </div>
@@ -277,7 +283,7 @@
                     </div>
                     <div class="title">
                       <img class="addr" src="@/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png" alt="">
-                      <span>address</span>
+                      <span>A鍘傛埧3杞﹂棿闂ㄥ彛</span>
                     </div>
                   </div>
                 </div>
@@ -295,8 +301,15 @@
 import VScaleScreen from 'v-scale-screen'
 import FirePercent from '@/components/FirePercent.vue'
 import dayjs from 'dayjs'
-
 import * as echarts from 'echarts'
+import {
+  getFightingalarmData,
+  getFightingHandle,
+  getFightingcenterData,
+  getFightingDeAlarm,
+  getFightingDeviceY,
+} from '@/api'
+
 const colors = ['#FEAF01', '#01ABFE', '#51F9E4']
 const weekMap = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�',]
 const date = ref(dayjs().format('YYYY.MM.DD'))
@@ -309,166 +322,7 @@
 
 }, 1000)
 
-const arr = ['#68e2e3', '#50afd3', '#377cdb', '#d5ae3a']
-const initEchart2 = () => {
-  var myChart = echarts.init(document.querySelector('.echart2'))
-  // 鐢熸垚鏁版嵁鍜屾棩鏈�
-  function getLastSevenDays() {
-    const days = []
-    const today = new Date()
-    for (let i = 10; i >= 0; i--) {
-      days.push(`${i + 1}鏈坄) // 鏍煎紡鍖栨棩鏈熶负 "X鏈圶鏃�"
-    }
-    return days
-  }
 
-  // 绀轰緥鏁版嵁
-  const data1 = [13, 14, 14, 14, 14, 12, 11, 23, 12, 1] // 鍑嗘椂
-  const data2 = [1, 1, 2, 1, 1, 2, 2, 3, 2, 1, 5] // 杩熷埌
-  const data3 = [1, 0, 0, 0, 0, 0, 2, 2, 3, 1, 2] // 璇峰亣
-  const data4 = [8, 5, 4, 7, 4, 5, 7, 4, 2, 1, 3] // 鍔犵彮
-  const option = {
-    legend: {
-      x: "center",
-      textStyle: {
-        color: "#FFFFFF", // 鍥句緥鏂囧瓧璁句负鐧借壊
-        fontSize: 12
-      },
-      icon: 'circle',
-      top: '6%',
-      itemWidth: 8,
-      itemHeight: 8,
-      itemGap: 20,
-      data: ['鍛婅鏁�', '杩涜涓�', '宸插鐞�', '璇姤鏁�'] // 鏇存柊鍥句緥鍚嶇О
-    },
-    grid: {
-      left: '2%',
-      right: '0%',
-      top: '18%',
-      bottom: '10%',
-      containLabel: true,
-    },
-    tooltip: {
-      trigger: "axis",
-      axisPointer: {
-        type: "shadow"
-      },
-      textStyle: {
-        color: "rgba(255, 255, 255, 1)"
-      },
-      backgroundColor: "rgba(0,0,0,0.8)",
-      borderColor: "rgba(219, 230, 255, 0.8)",
-    },
-    xAxis: {
-      data: getLastSevenDays(), // 浣跨敤杩戜竷澶╂棩鏈�
-      axisLabel: {
-        color: "#FFFFFF", // X 杞存枃瀛楄涓虹櫧鑹�
-        fontSize: 14,
-      },
-      axisLine: {
-        lineStyle: {
-          color: '#1E294C'
-        }
-      },
-      axisTick: {
-        show: false
-      }
-    },
-    yAxis: {
-      show: true,
-      axisLabel: {
-        color: "#FFFFFF", // Y 杞存枃瀛楄涓虹櫧鑹�
-        fontSize: 12,
-      },
-      axisLine: {
-        lineStyle: {
-          color: '#A9AEB2'
-        }
-      },
-      axisTick: {
-        lineStyle: {
-          color: '#A9AEB2'
-        }
-      },
-      splitLine: {
-        show: true,
-        lineStyle: {
-          color: ["#0f1d27"],
-          width: 1
-        },
-      },
-    },
-    series: [
-      {
-        name: "鍛婅鏁�",
-        type: "bar",
-        stack: "attendance",
-        data: data1,
-        itemStyle: {
-          color: '#FEAF01',
-        },
-        label: {
-          show: false,
-          color: "#FFFFFF",
-        },
-        emphasis: {
-          focus: "series",
-        },
-        barWidth: 6,
-      },
-      {
-        name: "杩涜涓�", // 杩熷埌鏁版嵁
-        type: "bar",
-        stack: "attendance",
-        data: data2,
-        itemStyle: {
-          color: '#28F0C4', // 杩熷埌鐨勯鑹�
-        },
-        label: {
-          show: false,
-          color: "#FFFFFF",
-        },
-        emphasis: {
-          focus: "series",
-        },
-      },
-      {
-        name: "宸插鐞�", // 璇峰亣鏁版嵁
-        type: "bar",
-        stack: "attendance",
-        data: data3,
-        itemStyle: {
-          color: '#0193FE', // 璇峰亣鐨勯鑹�
-        },
-        label: {
-          show: false,
-          color: "#FFFFFF",
-        },
-        emphasis: {
-          focus: "series",
-        },
-      },
-      {
-        name: "璇姤鏁�", // 鍗曠嫭鐨勫姞鐝煴瀛�
-        type: "bar",
-        data: data4,
-        barWidth: 6,
-        itemStyle: {
-          color: '#FEED01', // 楂樹寒鐨勭传鑹�
-        },
-        emphasis: {
-          focus: "series",
-        },
-      },
-    ],
-  }
-  myChart.setOption(option)
-  window.addEventListener('resize', function () {//鎵ц
-    myChart.resize()
-  })
-}
-
-const policeColors = ['#01D9FE', '#FE5501', '#0193FE', '#28F0C4']
 const initWatergage = () => {
   const myChart = echarts.init(document.getElementById('watergage'))
   var data_value = 2
@@ -834,8 +688,209 @@
   })
 }
 
+const dataList1 = ref([])
+const getData1 = () => {
+  getFightingDeAlarm().then(res => {
+    dataList1.value = res.data
+  })
+}
+const policeColors = ['#01D9FE', '#FE5501', '#0193FE', '#28F0C4']
+const dataList2 = ref([])
+const getData2 = () => {
+  getFightingalarmData().then(res => {
+    const result = res.data || {}
+    let temp = []
+    temp.push({ name: '鐪熷疄鎶ヨ鏁�', num: result.realNum, rate: (result.realNum / result.totalNum) * 100 })
+    temp.push({ name: '璇姤璀︽暟', num: result.errNum, rate: (result.errNum / result.totalNum) * 100 })
+    temp.push({ name: '宸茶В闄�', num: result.liftNum, rate: (result.liftNum / result.totalNum) * 100 })
+    temp.push({ name: '澶勭悊涓�', num: result.processingNum, rate: (result.processingNum / result.totalNum) * 100 })
+    dataList2.value = temp
+  })
+}
+
+const dataList3 = ref([])
+const getData3 = () => {
+  getFightingHandle({ type: 0 }).then(res => {
+    dataList3.value = res.data || []
+    initEchart2()
+  })
+}
+const initEchart2 = () => {
+  var myChart = echarts.init(document.querySelector('.echart2'))
+  // 鐢熸垚鏁版嵁鍜屾棩鏈�
+  // 绀轰緥鏁版嵁
+  const data1 = dataList3.value.map(i => i.alarmNum)
+  const data2 = dataList3.value.map(i => i.processingNum)
+  const data3 = dataList3.value.map(i => i.liftNum)
+  const data4 = dataList3.value.map(i => i.errNum)
+  const option = {
+    legend: {
+      x: "center",
+      textStyle: {
+        color: "#FFFFFF", // 鍥句緥鏂囧瓧璁句负鐧借壊
+        fontSize: 12
+      },
+      icon: 'circle',
+      top: '6%',
+      itemWidth: 8,
+      itemHeight: 8,
+      itemGap: 20,
+      data: ['鍛婅鏁�', '杩涜涓�', '宸插鐞�', '璇姤鏁�'] // 鏇存柊鍥句緥鍚嶇О
+    },
+    grid: {
+      left: '2%',
+      right: '0%',
+      top: '20%',
+      bottom: '10%',
+      containLabel: true,
+    },
+    tooltip: {
+      trigger: "axis",
+      axisPointer: {
+        type: "shadow"
+      },
+      textStyle: {
+        color: "rgba(255, 255, 255, 1)"
+      },
+      backgroundColor: "rgba(0,0,0,0.8)",
+      borderColor: "rgba(219, 230, 255, 0.8)",
+    },
+    xAxis: {
+      data: dataList3.value.map(i => i.monthStr),
+      axisLabel: {
+        color: "#FFFFFF", // X 杞存枃瀛楄涓虹櫧鑹�
+        fontSize: 14,
+      },
+      axisLine: {
+        lineStyle: {
+          color: '#1E294C'
+        }
+      },
+      axisTick: {
+        show: false
+      }
+    },
+    yAxis: {
+      show: true,
+      axisLabel: {
+        color: "#FFFFFF", // Y 杞存枃瀛楄涓虹櫧鑹�
+        fontSize: 12,
+      },
+      axisLine: {
+        lineStyle: {
+          color: '#A9AEB2'
+        }
+      },
+      axisTick: {
+        lineStyle: {
+          color: '#A9AEB2'
+        }
+      },
+      splitLine: {
+        show: true,
+        lineStyle: {
+          color: ["#0f1d27"],
+          width: 1
+        },
+      },
+    },
+    series: [
+      {
+        name: "鍛婅鏁�",
+        type: "bar",
+        stack: "attendance",
+        data: data1,
+        itemStyle: {
+          color: '#FEAF01',
+        },
+        label: {
+          show: false,
+          color: "#FFFFFF",
+        },
+        emphasis: {
+          focus: "series",
+        },
+        barWidth: 6,
+      },
+      {
+        name: "杩涜涓�", // 杩熷埌鏁版嵁
+        type: "bar",
+        stack: "attendance",
+        data: data2,
+        itemStyle: {
+          color: '#28F0C4', // 杩熷埌鐨勯鑹�
+        },
+        label: {
+          show: false,
+          color: "#FFFFFF",
+        },
+        emphasis: {
+          focus: "series",
+        },
+      },
+      {
+        name: "宸插鐞�", // 璇峰亣鏁版嵁
+        type: "bar",
+        stack: "attendance",
+        data: data3,
+        itemStyle: {
+          color: '#0193FE', // 璇峰亣鐨勯鑹�
+        },
+        label: {
+          show: false,
+          color: "#FFFFFF",
+        },
+        emphasis: {
+          focus: "series",
+        },
+      },
+      {
+        name: "璇姤鏁�", // 鍗曠嫭鐨勫姞鐝煴瀛�
+        type: "bar",
+        data: data4,
+        barWidth: 6,
+        itemStyle: {
+          color: '#FEED01', // 楂樹寒鐨勭传鑹�
+        },
+        emphasis: {
+          focus: "series",
+        },
+      },
+    ],
+  }
+  myChart.setOption(option)
+  window.addEventListener('resize', function () {//鎵ц
+    myChart.resize()
+  })
+}
+
+const dataList4 = ref({})
+const getData4 = () => {
+  getFightingcenterData().then(res => {
+    dataList4.value = res.data || {}
+  })
+}
+const dataList5 = ref({}) // 缁翠繚
+const getData5 = () => {
+  getFightingDeviceY().then(res => {
+    dataList5.value = res.data || {}
+  })
+}
+const dataList6 = ref([])
+const getData6 = () => {
+  getFightingHandle({type: 1}).then(res => {
+    dataList6.value = res.data
+  })
+}
+
 onMounted(() => {
-  initEchart2()
+  getData1()
+  getData2()
+  getData3()
+  getData4()
+  getData5()
+  getData6()
+
   initWatergage()
   initLiquidlevel()
 })

--
Gitblit v1.9.3