Prechádzať zdrojové kódy

perf: 火灾指标接口对接

TwoKe945 1 rok pred
rodič
commit
5a3da13f38

+ 7 - 0
app/src/api/index.js

@@ -225,3 +225,10 @@ export function getJqdtListWithZero(params) {
     params
   })
 }
+export function getHzzbSxzbYoy(params) {
+  return request({
+    url: '/system/zl/hzzb/sxzb/yoy',
+    method: 'get',
+    params
+  })
+}

+ 7 - 8
app/src/components/PieChart3D.vue

@@ -231,17 +231,16 @@ function getPie3D(pieData, internalDiameterRatio) {
   let labelSeries = {
     id: 'labelSeries',
     type: 'bar3D',
-    //zlevel:-9,
     barSize: [0, 0],
     data: [],
     label: {
-        show: true,
-        formatter: function (params) {
-            return `${params.value[3]}`;
-        },
-        color: '#fff',
-        fontSize: '18px'
-    },
+      show: true,
+      formatter: function (params) {
+          return `${params.value[3]}`;
+      },
+      color: '#fff',
+      fontSize: '18px'
+    }
 };
 
   // 为每一个饼图数据,生成一个 series-surface 配置

+ 0 - 1
app/src/views/Home/components/FireIndex/Chart.vue

@@ -32,7 +32,6 @@ export default {
     },
     label: {
       handler() {
-        console.log('-------',this.label)
         this.chart.setOption({
           xAxis: {
             data: this.label

+ 106 - 13
app/src/views/Home/components/FireIndex/index.vue

@@ -5,52 +5,68 @@
     <div class="fire">
       <div>
         <div>
-          <span class="fire-num">456</span>
+          <span class="fire-num">{{ tbData.hzqs }}</span>
           <span>起</span>
         </div>
         <div>火灾总数</div>
       </div>
       <div>
-        <img src="../../../../assets/images/Vector (1).png" alt="" />
-        <span class="num up">15%</span>
+        <img v-if="tbData.hzqstb > 0" src="../../../../assets/images/Vector (1).png" alt="" />
+        <img v-if="tbData.hzqstb < 0"  src="../../../../assets/images/Vector (2).png" alt="" />
+        <span class="num" :class="{
+          up: tbData.hzqstb > 0,
+          down: tbData.hzqstb < 0,
+        }" >{{ tbData.hzqsp }}</span>
       </div>
     </div>
     <!--亡人  -->
     <div class="fire">
       <div>
         <div>
-          <span class="fire-num">8</span>
+          <span class="fire-num">{{ tbData.wrs  }}</span>
           <span>人</span>
         </div>
         <div>亡人</div>
       </div>
       <div>
-        <img src="../../../../assets/images/Vector (2).png" alt="" />
-        <span class="num down">15%</span>
+        <img v-if="tbData.wrstb > 0" src="../../../../assets/images/Vector (1).png" alt="" />
+        <img v-if="tbData.wrstb < 0"  src="../../../../assets/images/Vector (2).png" alt="" />
+        <span class="num" :class="{
+           up: tbData.wrstb > 0,
+          down: tbData.wrstb < 0,
+        }">{{ tbData.wrsp }}</span>
       </div>
     </div>
     <!-- 伤人 -->
     <div class="fire">
       <div>
         <div>
-          <span class="fire-num">46</span>
+          <span class="fire-num">{{ tbData.srs  }}</span>
           <span>人</span>
         </div>
         <div>伤人</div>
       </div>
       <div>
-        <img src="../../../../assets/images/Vector (1).png" alt="" />
-        <span class="num up">10%</span>
+        <img v-if="tbData.srstb > 0" src="../../../../assets/images/Vector (1).png" alt="" />
+        <img v-if="tbData.srstb < 0"  src="../../../../assets/images/Vector (2).png" alt="" />
+        <span class="num " :class="{
+           up: tbData.srstb > 0,
+          down: tbData.srstb < 0,
+        }"  >{{ tbData.srsp }}</span>
       </div>
     </div>
     <!-- 直接经济损失 -->
     <div class="fire">
       <div>
         <div>
-          <span class="fire-num">6</span>
+          <span class="fire-num">{{ tbData.zzjjss }}</span>
           <span class="money">万元</span>
-          <img src="../../../../assets/images/Vector (1).png" alt="" />
-          <span class="num up">15%</span>
+          <img v-if="tbData.zzjjsstb > 0" src="../../../../assets/images/Vector (1).png" alt="" />
+          <img v-if="tbData.zzjjsstb < 0"  src="../../../../assets/images/Vector (2).png" alt="" />
+          <span class="num" :class="{
+           up: tbData.zzjjsstb > 0,
+          down: tbData.zzjjsstb < 0,
+        }" >{{ tbData.zzjjssp }}</span>
         </div>
         <div class="manoue">直接经济损失</div>
       </div>
@@ -79,7 +95,7 @@
 
 <script>
 import Chart from './Chart.vue'
-import { getSxzbListToatl, getQhyyListToatl } from "@/api/index.js";
+import { getSxzbListToatl, getQhyyListToatl, getHzzbSxzbYoy } from "@/api/index.js";
 export default {
   name: 'FireIndex',
   components: {
@@ -125,6 +141,8 @@ export default {
       modeType: 0,
       fireIndexLabel: [],
       fireIndexData: [],
+      monthTbData: {},
+      yearTbData: {}
     }
   },
   watch: {
@@ -161,6 +179,9 @@ export default {
       } else {
         return this.yearData[this.activeIndex];
       }
+    },
+    tbData() {
+      return [this.yearTbData , this.monthTbData][this.modeType]
     }
   },
   methods: {
@@ -170,6 +191,7 @@ export default {
     getFrieList(){
       this.loadQhyyListToatl()
       this.loadSxzbChartData()
+      this.loadHzzbSxzbYoy()
     },
     loadQhyyListToatl() {
       getQhyyListToatl({
@@ -214,6 +236,77 @@ export default {
           []
         ]
       })
+    },
+    loadHzzbSxzbYoy() {
+      getHzzbSxzbYoy({
+        qy: this.qx === '重庆市' ? "" : this.qx
+      }).then(res => {
+        const temp = res.data.data
+        if (temp['年同比'].length === 1) {
+          let tempData = temp['年同比'][0]
+          this.monthTbData = {
+            wrs: tempData.wrs,
+            srs: tempData.srs,
+            zzjjss: parseInt(tempData.zzjjss / 10000),
+            hzqs: tempData.hzqs,
+            wrstb: tempData.wrstb,
+            srstb: tempData.srstb,
+            zzjjsstb: tempData.zzjjsstb,
+            hzqstb: tempData.hzqstb,
+            wrsp: `${parseInt(Math.abs(tempData.wrstb) * 100)}%`,
+            srsp:  `${parseInt(Math.abs(tempData.srstb) * 100)}%`,
+            zzjjssp: `${parseInt(Math.abs(tempData.zzjjsstb) * 100)}%`,
+            hzqsp: `${parseInt( Math.abs(tempData.hzqstb) * 100)}%`
+          }
+        } else {
+          this.monthTbData = {
+            wrs: 0,
+            srs: 0,
+            zzjjss: 0,
+            hzqs: 0,
+            wrstb: 0,
+            srstb: 0,
+            zzjjsstb: 0,
+            hzqstb: 0,
+            wrsp: `-`,
+            srsp:  `-`,
+            zzjjssp: `-`,
+            hzqsp: `-`
+          }
+        }
+        if (temp['月同比'].length === 1) {
+          let tempData = temp['月同比'][0]
+          this.yearTbData = {
+            wrs: tempData.wrs,
+            srs: tempData.srs,
+            zzjjss: parseInt(tempData.zzjjss / 10000),
+            hzqs: tempData.hzqs,
+            wrstb: tempData.wrstb,
+            srstb: tempData.srstb,
+            zzjjsstb: tempData.zzjjsstb,
+            hzqstb: tempData.hzqstb,
+            wrsp: `${parseInt(Math.abs(tempData.wrstb) * 100)}%`,
+            srsp:  `${parseInt(Math.abs(tempData.srstb) * 100)}%`,
+            zzjjssp: `${parseInt(Math.abs(tempData.zzjjsstb) * 100)}%`,
+            hzqsp: `${parseInt( Math.abs(tempData.hzqstb) * 100)}%`
+          }
+        } else {
+          this.yearTbData = {
+            wrs: 0,
+            srs: 0,
+            zzjjss: 0,
+            hzqs: 0,
+            wrstb: 0,
+            srstb: 0,
+            zzjjsstb: 0,
+            hzqstb: 0,
+            wrsp: `-`,
+            srsp:  `-`,
+            zzjjssp: `-`,
+            hzqsp: `-`
+          }
+        }
+      })
     }
   },
   created() {

+ 58 - 88
app/src/views/Iot/components/TotalityInfo.vue

@@ -46,12 +46,12 @@
             <div class="on-line">
               <div>
                 <span class="online lines"></span>
-                <span style="font-size: 20px">{{ item.line }}</span
+                <span style="font-size: 16px">{{ item.line }}/{{ item.linelds }}</span
                 >(个/栋)
               </div>
               <div>
                 <span class="offline lines"></span>
-                <span style="font-size: 20px">{{ item.offNum }}</span
+                <span style="font-size: 16px">{{ item.offNum }}/{{ item.offNumlds }}</span
                 >(个/栋)
               </div>
             </div>
@@ -63,15 +63,15 @@
         <div style="width: 86%">
           <div class="inline-bor">
             <span style="font-size: 14px">消防控制室人员离岗</span>
-            <span> <span class="calc-percent">{{dwData.xfkzszs}}/{{dwData.xfkzsds}}</span>个/栋</span>
+            <span> <span class="calc-percent">{{dwData.xfkzszs || 0}}/{{dwData.xfkzsds || 0}}</span>个/栋</span>
           </div>
           <div class="on-line">
             <div>
-              <span class="online lines" style="font-size: 18px">{{dwData.xfkzszxs}}</span
+              <span class="online lines" style="font-size: 18px">{{dwData.xfkzszxs || 0}}/{{dwData.xfkzszxlds || 0}}</span
               >(个/栋)
             </div>
             <div>
-              <span class="lines offline" style="font-size: 18px">{{dwData.xfkzsgjs}}</span
+              <span class="lines offline" style="font-size: 18px">{{dwData.xfkzsgjs || 0}}/{{dwData.xfkzsgjlds || 0}}</span
               >(个/栋)
             </div>
           </div>
@@ -86,60 +86,8 @@ import imgs from "../../../assets/images/Group 1321314604.png";
 export default {
   data() {
     return {
-      list: [
-        // {
-        //   num: 1542,
-        //   title: "已完成物联网建筑数(栋)",
-        //   text: "设备总数",
-        //   allNum: 1276,
-        // },
-        // {
-        //   num: 1542,
-        //   title: "在线建筑数(栋)",
-        //   text: "在线",
-        //   allNum: 1200,
-        // },
-        // {
-        //   num: 542,
-        //   title: "告警建筑数(栋)",
-        //   text: "报警",
-        //   allNum: 768,
-        // },
-      ],
-      lineList: [
-        // {
-        //   imgs: imgs,
-        //   text: "火灾报警主机",
-        //   allnum: 10731,
-        //   average: 676,
-        //   line: 2613,
-        //   offNum: 613,
-        // },
-        // {
-        //   imgs: imgs,
-        //   text: "水压",
-        //   allnum: 10731,
-        //   average: 676,
-        //   line: 2613,
-        //   offNum: 613,
-        // },
-        // {
-        //   imgs: imgs,
-        //   text: "点起火灾",
-        //   allnum: 10731,
-        //   average: 676,
-        //   line: 2613,
-        //   offNum: 613,
-        // },
-        // {
-        //   imgs: imgs,
-        //   text: "生命通道",
-        //   allnum: 10731,
-        //   average: 676,
-        //   line: 2613,
-        //   offNum: 613,
-        // },
-      ],
+      list: [],
+      lineList: [],
     };
   },
   props: ["data", "dwData"],
@@ -151,62 +99,87 @@ export default {
         报警: "#FF4B23",
       }[text];
     },
-  },
-  created() {
-    this.list = [
+    dealData() {
+      this.list = [
       {
-        num: this.data.wlwlds,
+        num: this.data.wlwlds || 0,
         title: "已完成物联网建筑数(栋)",
         text: "设备总数",
-        allNum: this.data.jrsbzs,
+        allNum: this.data.jrsbzs || 0,
       },
       {
-        num: this.data.zxjzs,
+        num: this.data.zxjzs || 0,
         title: "在线建筑数(栋)",
         text: "在线",
-        allNum: this.data.jrsbzxs,
+        allNum: this.data.jrsbzxs || 0,
       },
       {
-        num: this.data.gjlds,
+        num: this.data.gjlds || 0,
         title: "告警建筑数(栋)",
         text: "报警",
-        allNum: this.data.jrsbgjgs,
+        allNum: this.data.jrsbgjgs || 0,
       },
     ];
     this.lineList = [
       {
         imgs: imgs,
         text: "火灾报警主机",
-        allnum: this.dwData.hzbjzjzs,
-        average: this.dwData.hzbjzjds,
-        line: this.dwData.hzbjzjzxs,
-        offNum: this.dwData.hzbjzjgjs,
+        allnum: this.dwData.hzbjzjzs || 0,
+        average: this.dwData.hzbjzjds || 0,
+        line: this.dwData.hzbjzjzxs || 0,
+        linelds: this.dwData.hzbjzjzxlds || 0,
+        offNum: this.dwData.hzbjzjgjs || 0,
+        offNumlds: this.dwData.hzbjzjgjlds || 0,
       },
       {
         imgs: imgs,
         text: "水压",
-        allnum: this.dwData.syds,
-        average: this.dwData.syzs,
-        line: this.dwData.syzxs,
-        offNum: this.dwData.sygjs,
+        allnum: this.dwData.syds || 0,
+        average: this.dwData.syzs || 0,
+        line: this.dwData.syzxs || 0,
+        linelds: this.dwData.syzxlds || 0,
+        offNum: this.dwData.sygjs || 0,
+        offNumlds: this.dwData.sygjlds || 0,
       },
       {
         imgs: imgs,
         text: "电器火灾",
-        allnum: this.dwData.dqhzds,
-        average: this.dwData.dqhzzs,
-        line: this.dwData.dqhzzxs,
-        offNum: this.dwData.dqhzgjs,
+        allnum: this.dwData.dqhzds || 0,
+        average: this.dwData.dqhzzs || 0,
+        line: this.dwData.dqhzzxs || 0,
+        linelds: this.dwData.dqhzzxlds || 0,
+        offNum: this.dwData.dqhzgjs || 0,
+        offNumlds: this.dwData.dqhzgjlds || 0,
       },
       {
         imgs: imgs,
         text: "生命通道",
-        allnum: this.dwData.smtdlds,
-        average: this.dwData.smtdzs,
-        line: this.dwData.smtdzxs,
-        offNum: this.dwData.smtdgjs,
+        allnum: this.dwData.smtdlds || 0,
+        average: this.dwData.smtdzs || 0,
+        line: this.dwData.smtdzxs  || 0,
+        linelds: this.dwData.smtdzxlds || 0,
+        offNum: this.dwData.smtdgjs || 0,
+        offNumlds: this.dwData.smtdgjlds || 0
       },
     ];
+    }
+  },
+  watch: {
+    data: {
+      handler() {
+        this.dealData()
+      },
+      deep: true
+    },
+    dwData: {
+      handler() {
+        this.dealData()
+      },
+      deep: true
+    }
+  },
+  created() {
+    this.dealData()
   },
 };
 </script>
@@ -295,13 +268,10 @@ export default {
   letter-spacing: 1px;
   .alarm-host {
     display: inline-block;
-    // width: 124px;
     display: flex;
     align-items: center;
     justify-content: space-around;
     text-align: center;
-    // background: url('../../../assets/images/Group 1321314604.png') no-repeat;
-    // background-size: 100% 100%;
   }
   img {
     display: inline-block;
@@ -313,7 +283,7 @@ export default {
     border-bottom: 1px dotted #7789cd;
     .calc-percent {
       color: #44f1ff;
-      font-size: 18px;
+      font-size: 16px;
     }
   }
 }

+ 24 - 1
app/src/views/Iot/index.vue

@@ -68,6 +68,29 @@
 				caremaList: [],
 			};
 		},
+		watch: {
+			qx() {
+				// 获取总体情况
+				const ztqkParam = {
+					pageNum: 1,
+					pageSize: 100,
+					name: this.qx === "重庆市" ? "" : this.qx,
+				};
+				getZtqk(ztqkParam).then((res) => {
+					this.ztqkData = res.data.rows[0];
+				});
+
+				// 检测点位统计
+				const ztqkDwtjParam = {
+					pageNum: 1,
+					pageSize: 100,
+					name: this.qx === "重庆市" ? "" : this.qx,
+				};
+				getZtqkDwtj(ztqkDwtjParam).then((res) => {
+					this.ztqkDwtjData = res.data.rows[0];
+				});
+			}
+		},
 		methods: {
 			openBasicModal() {
 				this.showModal("basicInfoModal");
@@ -169,4 +192,4 @@
 		align-items: center;
 		width: 920px;
 	}
-</style>
+</style>