Browse Source

Merge branch 'liuxing'

liuxing 1 year ago
parent
commit
d663a0d9ce

+ 19 - 0
app/src/api/detail.js

@@ -43,3 +43,22 @@ export function getYh(params) {
     params
   });
 }
+
+
+// 获取接入数
+export function getXfjrs(params) {
+  return request({
+    url: "/system/zxgjtj/list",
+    methods: "get",
+    params
+  });
+}
+
+// 获取风险等级
+export function getFxdj(params) {
+  return request({
+    url: "/system/zl/jcxxList/zyfxd",
+    methods: "get",
+    params
+  });
+}

+ 8 - 1
app/src/components/Camera.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="camera-continer">
+  <div class="camera-continer" v-loading="loading">
     <video :src="url" v-if="url" width="100%" height="100%" autoplay muted>
       您的浏览器不支持 video 标签。
     </video>
@@ -14,6 +14,7 @@ export default {
   data() {
     return {
       url: null,
+      loading: false,
     };
   },
   props: {
@@ -31,16 +32,22 @@ export default {
   },
   methods: {
     getData() {
+      this.loading = true;
       // TO-DO
       getCameraUrl(this.id).then((res) => {
+        this.loading = false;
         this.url = res.data.data[0].mp4;
         if (!this.url && this.byList && this.byList.length > 0) {
+          this.loading = true;
           getCameraUrl(this.byList[this.byList.length - 1].sbbm).then(
             (res2) => {
+              this.loading = false;
               this.url = res2.data.data[0].mp4;
               if (!this.url) {
+                this.loading = true;
                 getCameraUrl(this.byList[this.byList.length - 2].sbbm).then(
                   (res3) => {
+                    this.loading = false;
                     this.url = res3.mp4;
                   }
                 );

+ 113 - 19
app/src/views/Detail/components/BuildingInfo.vue

@@ -2,7 +2,80 @@
   <div class="building">
     <div>
       <div class="building-info" v-if="detail">
-        <ul>
+        <el-row class="row">
+          <el-col :span="24">
+            <div class="title" :title="detail.gcjzmc">{{ detail.gcjzmc }}</div>
+          </el-col>
+        </el-row>
+        <el-row class="row">
+          <el-col :span="24">
+            <span>详细地址:</span>
+            <p :title="detail.xxdz">{{ detail.xxdz }}</p>
+          </el-col>
+        </el-row>
+        <el-row class="row">
+          <el-col :span="8">
+            <span>区县:</span>
+            <p :title="detail.qx">{{ detail.qx }}</p>
+          </el-col>
+          <el-col :span="8">
+            <span>镇街:</span>
+            <p :title="detail.xzjd">{{ detail.xzjd }}</p>
+          </el-col>
+          <el-col :span="8">
+            <span>社区:</span>
+            <p :title="detail.xq">{{ detail.xq }}</p>
+          </el-col>
+        </el-row>
+        <el-row class="row">
+          <el-col :span="8">
+            <span>使用功能:</span>
+            <p :title="''"></p>
+          </el-col>
+          <el-col :span="8">
+            <span>建成年代:</span>
+            <p :title="detail.jcnd">{{ detail.jcnd }}年</p>
+          </el-col>
+          <el-col :span="8">
+            <span>建筑面积:</span>
+            <p :title="detail.jzmj">{{ detail.jzmj }}㎡</p>
+          </el-col>
+        </el-row>
+        <el-row class="row">
+          <el-col :span="8">
+            <span>高度:</span>
+            <p :title="detail.gd">{{ detail.gd }}m</p>
+          </el-col>
+          <el-col :span="16">
+            <span>建筑楼层:</span>
+            <p :title="'地上' + detail.dslc + '层,地下' + detail.dxlc + '层'">
+              地上{{ detail.dslc }}层,地下{{ detail.dxlc }}层
+            </p>
+          </el-col>
+        </el-row>
+        <el-row class="row">
+          <el-col :span="8">
+            <span>建筑分类:</span>
+            <p :title="detail.jzdx">{{ detail.jzdx }}</p>
+          </el-col>
+          <el-col :span="16">
+            <span>建筑内使用功能:</span>
+            <p :title="detail.jznsygn">{{ detail.jznsygn }}</p>
+          </el-col>
+        </el-row>
+        <el-row class="row">
+          <el-col :span="24">
+            <span>重点治理标签:</span>
+            <p :title="detail.jzlb">{{ detail.jzlb }}</p>
+          </el-col>
+        </el-row>
+        <el-row class="row">
+          <el-col :span="24">
+            <span>消防设施:</span>
+            <p :title="detail.xffssList">{{ detail.xfssList }}</p>
+          </el-col>
+        </el-row>
+        <!-- <ul>
           <li>
             <span>建筑名称:</span>
             <p>{{ detail.gcjzmc }}</p>
@@ -61,7 +134,7 @@
             <span>消防设施:</span>
             <p>{{ xfssList }}</p>
           </li>
-        </ul>
+        </ul> -->
       </div>
       <!-- <div class="maintenance" v-if="detail">
         <span class="unit-info">维保单位:</span>
@@ -69,7 +142,7 @@
       </div> -->
     </div>
     <div class="unit-img" v-if="detail">
-      <div>建筑附件:</div>
+      <div style="margin-bottom: 5px">建筑附件:</div>
       <div class="accessory-img">
         <!-- <img src="../../../assets/images/Rectangle 3726.png" alt="" />
         <img src="../../../assets/images/Rectangle 3728.png" alt="" />
@@ -77,13 +150,6 @@
         <img src="../../../assets/images/Rectangle 3728.png" alt="" />
         <img src="../../../assets/images/Rectangle 3728.png" alt="" /> -->
 
-        <el-image
-          style="width: 75px; height: 51px; margin-right: 29px"
-          :src="detail.jzzp"
-          :preview-src-list="srcList"
-          v-if="detail.jzzp"
-        >
-        </el-image>
         <el-image
           style="width: 75px; height: 51px; margin-right: 29px"
           :src="detail.jzzp1"
@@ -112,6 +178,13 @@
           v-if="detail.jzzp4"
         >
         </el-image>
+        <el-image
+          style="width: 75px; height: 51px; margin-right: 29px"
+          :src="detail.jzzp5"
+          :preview-src-list="srcList"
+          v-if="detail.jzzp5"
+        >
+        </el-image>
       </div>
     </div>
   </div>
@@ -124,7 +197,7 @@ export default {
   data() {
     return {
       srcList: [],
-      xfssList: []
+      xfssList: null,
     };
   },
   props: ["detail"],
@@ -133,13 +206,13 @@ export default {
       getXfss({
         id: this.detail.id,
         pageNum: 1,
-        pageSize: 10
-      }).then(res => {
+        pageSize: 10,
+      }).then((res) => {
         if (res.data.rows) {
-          this.xfssList = res.data.rows.map(p => p.yhxm).join(',');
+          this.xfssList = res.data.rows.map((p) => p.yhxm).join(",");
         }
-      })
-    }
+      });
+    },
   },
   created() {
     this.srcList = [
@@ -160,9 +233,9 @@ export default {
   font-size: 14px;
 }
 .building-info {
-  display: flex;
+  // display: flex;
   // letter-spacing: 1px;
-  line-height: 31px;
+  line-height: 25px;
 
   ul:first-child {
     flex: 1;
@@ -196,7 +269,7 @@ export default {
 .unit-img {
   display: flex;
   flex-direction: column;
-  margin-top: 10px;
+  margin-top: 5px;
   font-size: 12px;
   color: #78c3cd;
   img {
@@ -209,4 +282,25 @@ export default {
     display: flex;
   }
 }
+.title {
+  font-family: "Abel";
+  font-style: normal;
+  font-weight: 400;
+  font-size: 16px;
+  line-height: 24px;
+  color: #ffffff;
+}
+.row {
+  .el-col {
+    height: 25px;
+    overflow: hidden;
+    display: flex;
+    span {
+      min-width: 40px;
+    }
+    p {
+      padding-right: 5px;
+    }
+  }
+}
 </style>

+ 1 - 0
app/src/views/Detail/components/HistoricalFire.vue

@@ -65,6 +65,7 @@ export default {
     },
   },
   created() {
+    console.log(this.detail);
     this.getList();
   }
 };

+ 30 - 5
app/src/views/Detail/components/Risklevel.vue

@@ -3,8 +3,7 @@
     <!-- 风险等级 -->
     <div style="font-size: 18px">主要风险点</div>
     <div class="level-btn">
-      <span>疏通管道拥堵</span>
-      <span>火灾隐患</span>
+      <span v-for="(item, i) in fxd" :key="i">{{ item }}</span>
     </div>
     <div class="level_bottom">
       <div class="code">
@@ -16,12 +15,13 @@
           <li>
             <span>1</span>
             <span>{{ detail.glzthztjzd }}</span>
-            <span class="error">未提示 <span class="action">提示</span></span>
+            <span class="error" v-if="detail.sfts === '未提示'">未提示</span>
+            <span class="action" v-else>提示</span>
           </li>
           <li>
             <span>2</span>
             <span>{{ detail.xzjd }}</span>
-            <span>已提示</span>
+            <span></span>
           </li>
         </ul>
       </div>
@@ -30,13 +30,35 @@
 </template>
 
 <script>
+import { getFxdj } from "@/api/detail.js";
+
 export default {
   name: "Risklevel",
   data() {
-    return {};
+    return {
+      fxd: [],
+    };
   },
   props: ["detail"],
   components: {},
+  methods: {
+    getList() {
+      const param = {
+        pageNum: 1,
+        pageSize: 1000,
+        jzid: this.detail.id,
+      };
+      getFxdj(param).then((res) => {
+        // console.log(res);
+        if (res.data.rows) {
+          this.fxd = res.data.rows.map((p) => p.yhxmmc);
+        }
+      });
+    },
+  },
+  created() {
+    this.getList();
+  },
 };
 </script>
 
@@ -45,6 +67,9 @@ export default {
   padding: 12px 10px;
   .level-btn {
     margin-top: 12px;
+    width: 100%;
+    height: 25px;
+    overflow: hidden;
     span {
       display: inline-block;
       width: 90px;

+ 28 - 25
app/src/views/Detail/components/VideoInfo.vue

@@ -151,6 +151,7 @@
 <script>
 import Monitor3D from "@/components/Monitor3D.vue";
 import { getDeviceList, getJrs } from "@/api/iot.js";
+import { getXfjrs } from "@/api/detail.js";
 import Camera from "@/components/Camera.vue";
 
 export default {
@@ -190,7 +191,7 @@ export default {
       });
     },
     getJrsList() {
-      getJrs({
+      getXfjrs({
         pageNum: 1,
         pageSize: 100,
         jzid: this.detail.id,
@@ -224,30 +225,32 @@ export default {
         };
         if (res.data.rows) {
           res.data.rows.forEach((p) => {
-            // 电器火灾
-            pieData.dqhz.zs += p.dqhzzs || 0;
-            pieData.dqhz.zx += p.dqhzzxs || 0;
-            pieData.dqhz.bj += p.dqhzgjs || 0;
-
-            // 火灾报警主机
-            pieData.hzbjzj.zs += p.hzbjzjzs || 0;
-            pieData.hzbjzj.zx += p.hzbjzjzxs || 0;
-            pieData.hzbjzj.bj += p.hzbjzjgjs || 0;
-
-            // 生命通道
-            pieData.smtd.zs += p.smtdzs || 0;
-            pieData.smtd.zx += p.smtdzxs || 0;
-            pieData.smtd.bj += p.smtdgjs || 0;
-
-            // 水压
-            pieData.sy.zs += p.syzxs || 0;
-            pieData.sy.zx += p.syzs || 0;
-            pieData.sy.bj += p.sygjs || 0;
-
-            // 消防控制室
-            pieData.xfkzs.zs += p.xfkzszs || 0;
-            pieData.xfkzs.zx += p.xfkzszxs || 0;
-            pieData.xfkzs.bj += p.xfkzsgjs || 0;
+            if (p.sblx === "水压监测终端") {
+              // 水压
+              pieData.sy.zs += p.zxs || 0;
+              pieData.sy.zx += p.sbzs || 0;
+              pieData.sy.bj += p.gjs || 0;
+            } else if (p.sblx === "生命通道监测") {
+              // 生命通道
+              pieData.smtd.zs += p.sbzs || 0;
+              pieData.smtd.zx += p.zxs || 0;
+              pieData.smtd.bj += p.gjs || 0;
+            } else if (p.sblx === "消防控制室监控") {
+              // 消防控制室
+              pieData.xfkzs.zs += p.sbzs || 0;
+              pieData.xfkzs.zx += p.zxs || 0;
+              pieData.xfkzs.bj += p.gjs || 0;
+            } else if (p.sblx === "电气火灾终端") {
+              // 电器火灾
+              pieData.dqhz.zs += p.sbzs || 0;
+              pieData.dqhz.zx += p.zxs || 0;
+              pieData.dqhz.bj += p.gjs || 0;
+            } else if (p.sblx === "火灾报警主机监测") {
+              // 火灾报警主机
+              pieData.hzbjzj.zs += p.sbzs || 0;
+              pieData.hzbjzj.zx += p.zxs || 0;
+              pieData.hzbjzj.bj += p.gjs || 0;
+            }
           });
         }
 

+ 1 - 1
app/src/views/Detail/index.vue

@@ -7,7 +7,7 @@
       <border-panel height="310px" style="margin-bottom: 6px" title="管理单位">
         <GementUnit :detail="detail" v-if="detail" />
       </border-panel>
-      <border-panel height="270px" title="风险等级">
+      <border-panel height="270px" title="一楼一码">
         <!-- 风险等级 -->
         <Risklevel :detail="detail" v-if="detail" />
       </border-panel>

+ 3 - 3
app/src/views/Iot/components/IotVideo.vue

@@ -3,11 +3,11 @@
     <el-carousel trigger="click" height="450px" :interval="20000">
       <el-carousel-item v-for="i in count" :key="i">
         <div class="v-one" v-if="getVideo(i)">
-          <Camera :id="getVideo(i).sbbm" />
+          <Camera :id="getVideo(i).sbbm" :byList="byList" />
           <div class="txt">{{ getVideo(i).sbmc }}</div>
         </div>
         <div class="v-one" v-if="getVideo(i + 1)">
-          <Camera :id="getVideo(i + 1).sbbm" />
+          <Camera :id="getVideo(i + 1).sbbm" :byList="byList" />
           <div class="txt">{{ getVideo(i).sbmc }}</div>
         </div>
       </el-carousel-item>
@@ -19,7 +19,7 @@
 import Camera from "@/components/Camera.vue";
 export default {
   name: "IotName",
-  props: ["list"],
+  props: ["list", "byList"],
   data() {
     return {
       count: 5,

+ 3 - 0
app/src/views/Iot/index.vue

@@ -23,6 +23,7 @@
       >
         <IotVideo
           :list="caremaData"
+          :byList="caremaList"
           v-if="caremaData && caremaData.length > 0"
         />
       </border-panel>
@@ -85,6 +86,7 @@ export default {
       ztqkData: null,
       ztqkDwtjData: null,
       caremaData: [],
+      caremaList: []
     };
   },
   methods: {
@@ -139,6 +141,7 @@ export default {
       }
 
       this.caremaData = showCaremarData;
+      this.caremaList = caremaData;
     },
   },
   created() {