zhaobao 1 gadu atpakaļ
vecāks
revīzija
3539c00be3

+ 9 - 2
src/api/goaf/alarm.js

@@ -15,9 +15,16 @@ export function getAlarmByPage(params) {
   })
 }
 // 大屏报警
-export function getBigScreenAlarm(params) {
+export function getSensorOverview(params) {
   return request({
-    url: '/goaf/goafsensoralarm/bigscreen/list',
+    url: '/goaf/goafdevinfo/goafdevsensoroverview/list',
+    params
+  })
+}
+
+export function getSensorOverviewByPage(params) {
+  return request({
+    url: '/goaf/goafdevinfo/goafdevsensoroverview/page',
     params
   })
 }

+ 7 - 2
src/api/goaf/sensor.js

@@ -108,8 +108,7 @@ export function getSensorDataByPage(params) {
 // 获取传感器最新数据
 export function getSensorNewSensordata(params) {
   return request({
-    // url: '/goaf/sensordata/newsensordata',
-    url: '/goaf/goafdevinfo/goafdevsensordata',
+    url: '/goaf/goafdevinfo/goafdevsensordata/page',
     params
   })
 }
@@ -118,3 +117,9 @@ export function getWavedata(goafdataid) {
     url: `/goaf/sensordata/wavedata/${goafdataid}`
   })
 }
+export function getSensorlist(params) {
+  return request({
+    url: '/goaf/goafdevinfo/goafdevsensordata/list',
+    params
+  })
+}

+ 6 - 5
src/views/bigScreen/home/components/DeviceInfo.vue

@@ -4,8 +4,8 @@
       <el-carousel-item v-for="(item,idx) in tableData" :key="idx" class="carousel-item" height="100%">
         <div class="device-item">
           <div class="title">
-            <span class="name">{{ item.goafDevTypename }}({{ item.goafDevName }}){{ item.goafSensorName }}</span>
-            <span>{{ item.sensorTemperature/10 }}℃</span>
+            <span class="name">{{ item.goafDevTypename }}({{ item.goafDevName }})</span>
+            <span>传感器:{{ item.goafSensorName }}</span>
           </div>
           <div class="container">
             <div class="statistic-wrap">
@@ -55,13 +55,13 @@
               </div>
             </div>
             <div class="device-info">
-              <h3>上报时间:{{ parseTime(item.goafDatareportTime) }}</h3>
               <div class="device-info-cont">
                 <div class="i-item">温度:{{ item.sensorTemperature/10 }}℃</div>
                 <div class="i-item">X轴倾角{{ parseFloat((item.angX/100).toFixed(2)) }}</div>
                 <div class="i-item">Y轴倾角:{{ parseFloat((item.angY/100).toFixed(2)) }}</div>
                 <div class="i-item">Z轴倾角:{{ parseFloat((item.angZ/100).toFixed(2)) }}</div>
               </div>
+              <h3>上报时间:{{ parseTime(item.goafDatareportTime) }}</h3>
             </div>
           </div>
         </div>
@@ -144,7 +144,8 @@ export default {
             text-align: right;
             background-color: #071A29;
             margin: 0;
-            font-size: 14px;
+            font-size: 12px;
+            text-align: center;
         }
         .device-info-cont{
             display: flex;
@@ -153,7 +154,7 @@ export default {
             .i-item{
                 padding-left: 10px;
                 margin-right: 10px;
-                font-size: 12px;
+                font-size: 14px;
             }
         }
     }

+ 16 - 15
src/views/bigScreen/home/components/SensorWarningInfo.vue

@@ -2,7 +2,6 @@
   <div class="item report">
     <div class="title">
       <span class="name">报警记录</span>
-      <span class="number">{{ total }}</span>
     </div>
     <div class="container" :style="height?'height:'+height:''">
       <vueSeamlessScroll ref="seamlessScroll" :data="items" :class-option="defaultOption">
@@ -28,7 +27,7 @@
   </div>
 </template>
 <script>
-import { getBigScreenAlarm } from '@/api/goaf/alarm'
+import { getSensorOverview } from '@/api/goaf/alarm'
 import vueSeamlessScroll from 'vue-seamless-scroll'
 export default {
   name: 'SensorWarningInfo',
@@ -69,9 +68,14 @@ export default {
       return obj[val] || '--'
     },
     load() {
-      getBigScreenAlarm().then((res) => {
-        this.total = res.data.length
-        this.items = res.data
+      getSensorOverview().then((res) => {
+        const { data } = res
+        let tableData = []
+        for (let i = 0; i < data.length; i++) {
+          tableData = tableData.concat(data[i].goafSensoralarmOverviewDto.map((item, index) => { return { ...item, goafDevName: data[i].goafDevName, goafDevTypename: data[i].goafDevTypename } }))
+        }
+        this.total = tableData.length
+        this.items = tableData.filter(item => item.goafSensorAlarmType)
       })
     }
   }
@@ -81,15 +85,12 @@ export default {
 .container{
 
     height: 36vh !important;
-    // .table-wrap{
-    //   overflow-x: auto;
-    //   table{
-    //     tr td{
-    //       border-left: 1px solid #2affff !important;
-    //       border-top: 1px solid #2affff !important;
-    //       font-size: 8px !important;
-    //     }
-    //   }
-    // }
+    .table-wrap{
+      table{
+        tr td{
+          font-size: 8px !important;
+        }
+      }
+    }
 }
 </style>

+ 2 - 4
src/views/bigScreen/home/index.vue

@@ -18,10 +18,9 @@
 import mixins from '@/mixin/mqtt.js'
 import { Uint8ArrayToString } from '@/utils'
 
-import { getSensorNewSensordata } from '@/api/goaf/sensor'
+import { getSensorlist } from '@/api/goaf/sensor'
 import {
   SensorStatus,
-  // SensorWarningStatistics,
   SensorWarningInfo,
   Map,
   SensorStatusCircle,
@@ -32,7 +31,6 @@ export default {
   name: 'Home',
   components: {
     SensorStatus,
-    // SensorWarningStatistics,
     SensorWarningInfo,
     Map,
     SensorStatusCircle,
@@ -57,7 +55,7 @@ export default {
       this.initMqtt({
         mqttResponse: this.mqttResponse
       })
-      getSensorNewSensordata().then((res) => {
+      getSensorlist().then((res) => {
         const { data } = res
         this.$nextTick(() => {
           this.$refs['device-state'].loadData(data)

+ 5 - 12
src/views/iiot/equipment/components/OverviewStatus.vue

@@ -12,13 +12,6 @@ export default {
         tooltip: {
           trigger: 'item'
         },
-        // grid: {
-        //   show: true,
-        //   left: '10%',
-        //   top: '5%',
-        //   right: '30%',
-        //   bottom: '5%'
-        // },
         legend: {
           orient: 'vertical',
           right: '-1%',
@@ -41,10 +34,9 @@ export default {
             center: ['40%', '55%'],
             radius: ['40%', '70%'],
             data: [
-              { value: 0, name: '正常' },
-              { value: 0, name: '严重' },
-              { value: 0, name: '一般' },
-              { value: 0, name: '离线' }
+              { value: 0, name: '正常', itemStyle: { color: '#2affff' }},
+              { value: 0, name: '一般', itemStyle: { color: '#fac858' }},
+              { value: 0, name: '严重', itemStyle: { color: '#f44336' }}
             ],
             lable: {
               normal: {
@@ -73,9 +65,10 @@ export default {
         this.myChart = myChart
       })
     },
-    setChart(a = 0, b = 0) {
+    setChart(a = 0, b = 0, c = 0) {
       this.option.series[0].data[0].value = a
       this.option.series[0].data[1].value = b
+      this.option.series[0].data[2].value = c
       this.myChart.setOption(this.option)
     }
   }

+ 82 - 23
src/views/iiot/equipment/overview.vue

@@ -8,7 +8,7 @@
       </el-col>
       <el-col :span="12" class="right">
         <el-input v-model="conditions.goafDevName" class="search-input m-right-15" placeholder="请输入设备名称">
-          <el-button slot="append" icon="el-icon-search" @click="getData()" />
+          <el-button slot="append" icon="el-icon-search" @click="init()" />
         </el-input>
       </el-col>
     </el-row>
@@ -17,20 +17,40 @@
         <span>设备当前状态统计</span>
       </div>
       <div class="overview-status-wrap">
-        <overview-status />
+        <overview-status ref="overview-status" />
       </div>
     </el-card>
     <el-row class="m-top-15">
       <el-table v-loading="listLoading" class="page-table" border fit :data="dataList">
         <el-table-column type="index" label="序号" header-align="center" align="center" width="60" />
-        <el-table-column prop="goafSensorName" label="传感器编码" />
-        <el-table-column prop="goafDevName" label="设备名称" />
-        <el-table-column prop="goafDevTypename" label="设备类型" />
-        <el-table-column prop="goafSensorLocation" label="安装地点" />
-        <el-table-column prop="goafSensorStatus" label="状态" />
-        <el-table-column prop="goafDevLocation" label="一般告警" />
-        <el-table-column prop="goafDevLocation" label="严重告警" />
-        <el-table-column prop="goafInstallTime" label="安装时间" />
+        <el-table-column prop="goafDevTypename" label="设备类型" align="center" />
+        <el-table-column prop="goafDevName" label="设备名称" align="center" />
+        <el-table-column prop="goafSensorName" label="传感器名称" align="center" />
+        <el-table-column header-align="center" align="center" prop="goafSensorStatus" label="是否在线">
+          <template v-slot="{row}">
+            <span>{{ row.goafSensorStatus===0?'离线': "在线" }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column header-align="center" align="center" prop="goafSensorAlarmType" label="运行状态">
+          <template v-slot="{row}">
+            <span v-if="row.goafSensorAlarmType">告警</span>
+            <span v-else>正常</span>
+          </template>
+        </el-table-column>
+        <el-table-column header-align="center" align="center" prop="goafSensorAlarmLevel" label="告警级别">
+          <template v-slot="{row}">
+            <span v-if="row.goafSensorAlarmType">{{ row.goafSensorAlarmLevel===0?'一般': "严重" }}</span>
+            <span v-else />
+          </template>
+        </el-table-column>
+        <el-table-column header-align="center" align="center" prop="goafSensorAlarmType" label="告警类型">
+          <template v-slot="{row}">
+            <span v-if="row.goafSensorAlarmType">{{ row.goafSensorAlarmType }}</span>
+            <span v-else />
+          </template>
+        </el-table-column>
+        <el-table-column prop="goafSensorLocation" label="安装地点" align="center" />
+        <el-table-column prop="goafInstallTime" label="安装时间" align="center" />
       </el-table>
       <div class="pagination-container" style="float:right;margin-right:40px;">
         <pagination v-show="total>0" :total="total" :page.sync="conditions.page" :limit.sync="conditions.limit" @pagination="getData" />
@@ -40,7 +60,8 @@
 </template>
 
 <script>
-import { getSensorByPage } from '@/api/goaf/sensor'
+import { getSensorOverview } from '@/api/goaf/alarm'
+// import { getSensorByPage } from '@/api/goaf/sensor'
 import { Pagination } from '@/components'
 import { NumConvertLM } from '@/utils'
 import OverviewStatus from './components/OverviewStatus'
@@ -49,6 +70,7 @@ export default {
   data() {
     return {
       dataList: [],
+      tableData: [],
       total: 0,
       listLoading: false,
       conditions: {
@@ -59,26 +81,63 @@ export default {
     }
   },
   created() {
-    this.getData()
+    this.init()
   },
   methods: {
     // fetch data
     NumConvertLM,
+    init() {
+      this.getSensorOverview()
+    },
+    // getData() {
+    //   this.listLoading = true
+    //   this.getSensorOverview()
+    //   getSensorByPage(this.conditions).then((resp) => {
+    //     this.listLoading = false
+    //     const { code, msg, total, data } = resp
+    //     if (code === 0) {
+    //       this.dataList = data
+    //       this.total = total
+    //     } else {
+    //       this.$message.error(msg)
+    //     }
+    //   }).catch((error) => {
+    //     console.log(error)
+    //   })
+    // },
     getData() {
-      this.listLoading = true
-      getSensorByPage(this.conditions).then((resp) => {
-        this.listLoading = false
-        const { code, msg, total, data } = resp
-        if (code === 0) {
-          this.dataList = data
-          this.total = total
-        } else {
-          this.$message.error(msg)
+      const tableData = JSON.parse(JSON.stringify(this.tableData))
+      const page = this.conditions.page
+      const limit = this.conditions.limit
+      const items = tableData.filter((item, index) => (index >= (page - 1) * limit) && (index < page * limit))
+      this.dataList = items
+    },
+    getSensorOverview() {
+      getSensorOverview().then((resp) => {
+        const { data } = resp
+        let tableData = []
+        for (let i = 0; i < data.length; i++) {
+          tableData = tableData.concat(data[i].goafSensoralarmOverviewDto.map((item, index) => {
+            return {
+              ...item,
+              goafDevName: data[i].goafDevName,
+              goafDevTypename: data[i].goafDevTypename,
+              goafInstallTime: data[i].goafInstallTime
+            }
+          }))
         }
-      }).catch((error) => {
-        console.log(error)
+        this.tableData = tableData
+        this.total = tableData.length
+        const normal = tableData.filter(item => !item.goafSensorAlarmType).length
+        const level_1 = tableData.filter(item => item.goafSensorAlarmType && item.goafSensorAlarmLevel === 0).length
+        const level_2 = tableData.filter(item => item.goafSensorAlarmType && item.goafSensorAlarmLevel === 2).length
+        this.$nextTick(() => {
+          this.$refs['overview-status'].setChart(normal, level_1, level_2)
+        })
+        this.getData()
       })
     }
+
   }
 }
 </script>

+ 6 - 6
src/views/iiot/sensor/components/SensorStatus.vue

@@ -23,7 +23,7 @@ export default {
           formatter: (name) => {
             const total = this.option.series[0].data.reduce((c, r) => c + r.value, 0)
             const number = this.option.series[0].data.filter((item) => item.name === name)[0].value
-            const percent = total > 0 ? parseFloat((number / total) * 100).toFixed(2) : 0
+            const percent = total > 0 ? parseFloat((number / total) * 100).toFixed(1) : 0
             return `${name}:${number}  ${percent}%`
           }
         },
@@ -34,10 +34,9 @@ export default {
             center: ['40%', '55%'],
             radius: ['40%', '70%'],
             data: [
-              { value: 0, name: '正常' },
-              { value: 0, name: 'C级' },
-              { value: 0, name: 'D级' },
-              { value: 0, name: '离线' }
+              { value: 0, name: '正常', itemStyle: { color: '#2affff' }},
+              { value: 0, name: '一般', itemStyle: { color: '#fac858' }},
+              { value: 0, name: '严重', itemStyle: { color: '#f44336' }}
             ],
             label: {
               show: true
@@ -66,9 +65,10 @@ export default {
         this.myChart = myChart
       })
     },
-    setChart(a = 0, b = 0) {
+    setChart(a = 0, b = 0, c = 0) {
       this.option.series[0].data[0].value = a
       this.option.series[0].data[1].value = b
+      this.option.series[0].data[2].value = c
       this.myChart.setOption(this.option)
     }
   }

+ 51 - 120
src/views/iiot/sensor/index.vue

@@ -8,7 +8,7 @@
       </el-col>
       <el-col :span="12" class="right">
         <el-input v-model="conditions.goafDevName" class="search-input m-right-15" placeholder="请输入设备名称">
-          <el-button slot="append" icon="el-icon-search" @click="getData()" />
+          <el-button slot="append" icon="el-icon-search" @click="init()" />
         </el-input>
       </el-col>
     </el-row>
@@ -17,119 +17,39 @@
         <span>全部传感器统计</span>
       </div>
       <div class="sensor-status-wrap">
-        <sensor-status />
+        <sensor-status ref="sensor-status" />
       </div>
     </el-card>
     <el-row class="m-top-15">
       <el-table v-loading="listLoading" class="page-table" border fit :data="dataList">
         <el-table-column type="index" label="序号" header-align="center" align="center" width="60" />
+        <el-table-column prop="goafSensorName" label="传感器名称" align="center" />
+        <el-table-column header-align="center" align="center" prop="goafSensorStatus" label="是否在线">
+          <template v-slot="{row}">
+            <span>{{ row.goafSensorStatus===0?'离线': "在线" }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="goafDevTypename" label="设备类型" align="center" />
         <el-table-column prop="goafDevName" label="设备名称" align="center" />
-        <el-table-column prop="goafSensorLocation" label="安装地点" align="center" />
-        <el-table-column header-align="center" align="center" label="速度(mm/s)">
-          <el-table-column
-            header-align="center"
-            align="center"
-            prop="name"
-            label="X轴阈值"
-            width="95"
-          >
-            <template v-slot="{row}">
-              <span>{{ parseFloat((row.thvVelX/100).toFixed(2)) }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column
-            header-align="center"
-            align="center"
-            prop="name"
-            label="Y轴阈值"
-            width="95"
-          >
-            <template v-slot="{row}">
-              <span>{{ parseFloat((row.thvVelY/100).toFixed(2)) }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column
-            header-align="center"
-            align="center"
-            prop="name"
-            label="Z轴阈值"
-            width="95"
-          >
-            <template v-slot="{row}">
-              <span>{{ parseFloat((row.thvVelZ/100).toFixed(2)) }}</span>
-            </template>
-          </el-table-column>
+        <el-table-column header-align="center" align="center" prop="goafSensorStatus" label="运行状态">
+          <template v-slot="{row}">
+            <span v-if="row.goafSensorAlarmType">告警</span>
+            <span v-else>正常</span>
+          </template>
         </el-table-column>
-        <el-table-column header-align="center" label="加速度(m/s2)">
-          <el-table-column
-            header-align="center"
-            align="center"
-            prop="name"
-            label="X轴阈值"
-            width="95"
-          >
-            <template v-slot="{row}">
-              <span>{{ parseFloat((row.thvAccX/100).toFixed(2)) }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column
-            header-align="center"
-            align="center"
-            prop="name"
-            label="Y轴阈值"
-            width="95"
-          >
-            <template v-slot="{row}">
-              <span>{{ parseFloat((row.thvAccY/100).toFixed(2)) }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column
-            header-align="center"
-            align="center"
-            prop="name"
-            label="Z轴阈值"
-            width="95"
-          >
-            <template v-slot="{row}">
-              <span>{{ parseFloat((row.thvAccX/100).toFixed(2)) }}</span>
-            </template>
-          </el-table-column>
+        <el-table-column header-align="center" align="center" prop="goafSensorAlarmType" label="告警类型">
+          <template v-slot="{row}">
+            <span v-if="row.goafSensorAlarmType">{{ row.goafSensorAlarmType }}</span>
+            <span v-else />
+          </template>
         </el-table-column>
-        <el-table-column header-align="center" label="位移(um)">
-          <el-table-column
-            header-align="center"
-            align="center"
-            prop="name"
-            label="X轴阈值"
-            width="95"
-          >
-            <template v-slot="{row}">
-              <span>{{ row.thvDisX }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column
-            header-align="center"
-            align="center"
-            prop="name"
-            label="Y轴阈值"
-            width="95"
-          >
-            <template v-slot="{row}">
-              <span>{{ row.thvDisY }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column
-            header-align="center"
-            align="center"
-            prop="name"
-            label="Z轴阈值"
-            width="95"
-          >
-            <template v-slot="{row}">
-              <span>{{ row.thvDisX }}</span>
-            </template>
-          </el-table-column>
+        <el-table-column header-align="center" align="center" prop="goafSensorAlarmLevel" label="告警级别">
+          <template v-slot="{row}">
+            <span v-if="row.goafSensorAlarmType">{{ row.goafSensorAlarmLevel===0?'一般': "严重" }}</span>
+            <span v-else />
+          </template>
         </el-table-column>
+        <el-table-column prop="goafSensorLocation" label="安装地点" align="center" />
         <el-table-column prop="goafInstallTime" label="安装时间" align="center" />
       </el-table>
       <div class="pagination-container" style="float:right;margin-right:40px;">
@@ -140,7 +60,8 @@
 </template>
 
 <script>
-import { getSensorByPage, sensordevstatis } from '@/api/goaf/sensor'
+import { getSensorOverview } from '@/api/goaf/alarm'
+
 import { Pagination } from '@/components'
 import { NumConvertLM } from '@/utils'
 import SensorStatus from './components/SensorStatus.vue'
@@ -151,6 +72,7 @@ export default {
       dataList: [],
       total: 0,
       listLoading: false,
+      tableData: [],
       conditions: {
         page: 1,
         limit: 10,
@@ -159,26 +81,35 @@ export default {
     }
   },
   created() {
-    this.getData()
+    this.init()
   },
   methods: {
     // fetch data
     NumConvertLM,
-    getData() {
-      this.listLoading = true
-      sensordevstatis()
-      getSensorByPage(this.conditions).then((resp) => {
-        this.listLoading = false
-        const { code, msg, data } = resp
-        if (code === 0) {
-          this.dataList = data
-          this.total = resp.total
-        } else {
-          this.$message.error(msg)
+    init() {
+      getSensorOverview().then((resp) => {
+        const { data } = resp
+        let tableData = []
+        for (let i = 0; i < data.length; i++) {
+          tableData = tableData.concat(data[i].goafSensoralarmOverviewDto.map((item, index) => { return { ...item, goafDevName: data[i].goafDevName, goafDevTypename: data[i].goafDevTypename } }))
         }
-      }).catch((error) => {
-        console.log(error)
+        this.tableData = tableData
+        this.total = tableData.length
+        const normal = tableData.filter(item => !item.goafSensorAlarmType).length
+        const level_1 = tableData.filter(item => item.goafSensorAlarmType && item.goafSensorAlarmLevel === 0).length
+        const level_2 = tableData.filter(item => item.goafSensorAlarmType && item.goafSensorAlarmLevel === 2).length
+        this.$nextTick(() => {
+          this.$refs['sensor-status'].setChart(normal, level_1, level_2)
+        })
+        this.getData()
       })
+    },
+    getData() {
+      const tableData = JSON.parse(JSON.stringify(this.tableData))
+      const page = this.conditions.page
+      const limit = this.conditions.limit
+      const items = tableData.filter((item, index) => (index >= (page - 1) * limit) && (index < page * limit))
+      this.dataList = items
     }
   }
 }