zhaobao há 1 ano atrás
pai
commit
900536baa8

+ 18 - 0
src/api/iiot/alertRectify.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request'
+
+// 获取整改信息
+export function getAlertRectifyInfo(params) {
+  return request({
+    url: '/goaf/goafhandlesensoralarm/getalarmhandlebyalarmid',
+    method: 'GET',
+    params
+  })
+}
+// 整改告警
+export function AddSensorAlarm(data) {
+  return request({
+    url: '/goaf/goafhandlesensoralarm/add',
+    method: 'POST',
+    data
+  })
+}

+ 2 - 2
src/settings.js

@@ -36,8 +36,8 @@ module.exports = {
   /**
   * 服务API地址
   */
-  devServerUrl: 'http://113.141.93.143:1788',
-  // devServerUrl: 'http://192.168.3.5:1788', // 开发环境 qu
+  // devServerUrl: 'http://113.141.93.143:1788',
+  devServerUrl: 'http://192.168.3.5:1788', // 开发环境 qu
   serverUrl: 'http://113.141.93.143:1788', // 正式环境
   mqttUrl: 'ws://113.141.93.143:8894/mqtt', // mqtt地址
   /**

+ 1 - 0
src/views/bigScreen/home/components/Map/components/table.vue

@@ -214,6 +214,7 @@ import { NumConvertLM } from '@/utils'
 import MonitorChartDetail from '@/views/iiot/equipment/components/MonitorChartDetail.vue'
 
 export default {
+  name: 'MapLayerDetail',
   components: { MonitorChartDetail },
   data() {
     return {

+ 2 - 1
src/views/bigScreen/home/components/Map/index.vue

@@ -239,7 +239,8 @@ export default {
     },
     showLayerDetail(item) {
       getNewSensorData({
-        map: item.mapId
+        map: item.mapId,
+        goafSensorId: item.goafSensorId
       }).then((resp) => {
         const { data } = resp
         this.$refs['layer-detail'].loadData(data)

+ 8 - 2
src/views/bigScreen/home/components/SensorWarningInfo.vue

@@ -13,7 +13,7 @@
               <td>级别</td>
               <td>时间</td>
             </tr>
-            <tr v-for="(item,index) in items" :key="index" class="report-item">
+            <tr v-for="(item,index) in items" :key="index" class="report-item" @click="handle(item)">
               <td :title="item.goafDevTypename+'【'+ item.goafDevName+'】上的传感器'+item.goafSensorName+'报警'">{{ item.goafDevTypename }}【{{ item.goafDevName }}】上的传感器{{ item.goafSensorName }}报警</td>
               <td :title="item.goafSensorAlarmType" style="max-width: 90px;">{{ item.goafSensorAlarmType }}</td>
               <td :title="AlarmLevel(item.goafSensorAlarmLevel)">{{ AlarmLevel(item.goafSensorAlarmLevel) }}</td>
@@ -24,15 +24,18 @@
 
       </vueSeamlessScroll>
     </div>
+    <alertRectify ref="alertRectify" />
   </div>
 </template>
 <script>
 import { getSensorOverview } from '@/api/goaf/alarm'
 import vueSeamlessScroll from 'vue-seamless-scroll'
+import alertRectify from './alertRectify.vue'
 export default {
   name: 'SensorWarningInfo',
   components: {
-    vueSeamlessScroll
+    vueSeamlessScroll,
+    alertRectify
   },
   props: {
     height: {
@@ -74,6 +77,9 @@ export default {
         this.total = tableData.length
         this.items = tableData.filter(item => item.goafSensorAlarmType)
       })
+    },
+    handle(data) {
+      this.$refs['alertRectify'].loadData(data)
     }
   }
 }

+ 133 - 0
src/views/bigScreen/home/components/alertRectify.vue

@@ -0,0 +1,133 @@
+<template>
+  <el-drawer
+    title="告警整改"
+    :modal-append-to-body="false"
+    :modal="false"
+    :wrapper-closable="false"
+    size="100%"
+    :visible.sync="dialogVisible"
+  >
+    <div class="alertRectify-wrap">
+      <el-table
+        :data="tableData"
+        style="width: 100%"
+      >
+        <el-table-column label="告警名称">
+          <template v-slot="{row}">
+            {{ row.goafDevTypename }}【{{ row.goafDevName }}】上的传感器{{ row.goafSensorName }}报警
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="goafSensorAlarmType"
+          label="类型"
+        />
+        <el-table-column label="级别">
+          <template v-slot="{row}">
+            {{ AlarmLevel(row.goafSensorAlarmLevel) }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="goafDatareportTime"
+          label="时间"
+          width="180"
+        />
+      </el-table>
+      <div class="form">
+        <el-form ref="ruleForm" :model="formData" :rules="rules" label-position="right" label-width="100px">
+          <el-form-item label="整改部门" prop="groupId">
+            <group-selector v-model="formData.groupId" style="width: 300px;" />
+          </el-form-item>
+          <el-form-item label="整改人员" prop="accountId">
+            <user-selector :default-val="formData.accountId" style="width: 300px;" @setUserInfo="handleSelectUser" />
+          </el-form-item>
+          <el-form-item label="整改意见">
+            <el-input v-model="formData.goafSensorAlarmHandle" type="textarea" :rows="4" style="width: 300px;" />
+          </el-form-item>
+        </el-form>
+        <div class="btn-group">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button class="cancel-btn" @click="dialogVisible = false">取 消</el-button>
+        </div>
+      </div>
+    </div>
+  </el-drawer>
+</template>
+<script>
+import { GroupSelector } from '@/components'
+import UserSelector from '@/components/UserSelector/index'
+import { getGroupByList } from '@/api/system/groupApi'
+import { AddSensorAlarm } from '@/api/iiot/alertRectify'
+export default {
+  name: 'AlertRectify',
+  components: {
+    GroupSelector,
+    UserSelector
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      tableData: [],
+      groupList: [],
+      formData: {
+        goafSensorAlarmId: undefined,
+        accountId: undefined,
+        groupId: undefined,
+        goafSensorAlarmHandle: undefined
+      },
+      rules: {
+        accountId: [
+          { required: true, message: '请选择整改人员', trigger: 'blur' }
+        ],
+        groupId: [
+          { required: true, message: '请选择整改部门', trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  created() {
+    getGroupByList().then((res) => {
+      this.groupList = res.data
+    })
+  },
+  methods: {
+    dangerStatus(val) {
+      const status = ['待提交', '待评审', '待整改', '待验收', '完成']
+      return val === -1 ? '撤销' : status[val]
+    },
+    AlarmLevel(val) {
+      const obj = { 0: '一般', 1: '重大' }
+      return obj[val] || '--'
+    },
+    loadData(data) {
+      this.formData.goafSensorAlarmId = data.goafSensorAlarmId
+      this.tableData = [data]
+      this.dialogVisible = true
+    },
+    // 执行人选择
+    handleSelectUser(item) {
+      this.formData.accountId = item.accountId
+      this.formData.accountName = item.accountName
+    },
+    submitForm() {
+      this.$refs['ruleForm'].validate((valid) => {
+        if (valid) {
+          this.formData.groupName = this.groupList.filter((item) => item.groupId === this.formData.groupId)[0]?.groupName
+          AddSensorAlarm(this.formData).then((res) => {
+            this.$message.success('整改成功!')
+            this.dialogVisible = false
+          })
+        }
+      })
+    }
+  }
+}
+</script>
+  <style lang="scss" scoped>
+  .alertRectify-wrap{
+    padding: 20px;
+      .form{
+        margin-top: 30px;
+      }
+  }
+  </style>
+

+ 12 - 3
src/views/iiot/equipment/alarm.vue

@@ -219,17 +219,23 @@
           </template>
         </el-table-column>
         <el-table-column v-if="showColumn('goafDatareportTime')" header-align="center" align="center" prop="goafDatareportTime" label="上传时间" />
-        <el-table-column label="操作" header-align="center" align="center" min-width="60">
+        <el-table-column label="波形" header-align="center" align="center" min-width="60">
           <template v-slot="{row}">
             <el-button size="mini" type="text" style="color:#1B81FF" @click="showDetail(row)">波形</el-button>
           </template>
         </el-table-column>
+        <el-table-column label="整改记录" header-align="center" align="center" min-width="80">
+          <template v-slot="{row}">
+            <el-button size="mini" type="text" style="color:#1B81FF" @click="showRectifyRecord(row)">查看记录</el-button>
+          </template>
+        </el-table-column>
       </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" />
       </div>
     </el-row>
     <MonitorChartDetail ref="chart-detail" />
+    <RectifyRecord ref="rectify-record" />
   </div>
 </template>
 
@@ -239,9 +245,9 @@ import { getAlarmByPage } from '@/api/goaf/alarm'
 import { Pagination } from '@/components'
 import { NumConvertLM } from '@/utils'
 import MonitorChartDetail from '@/views/iiot/equipment/components/MonitorChartDetail.vue'
-
+import RectifyRecord from './components/RectifyRecord.vue'
 export default {
-  components: { Pagination, MonitorChartDetail },
+  components: { Pagination, MonitorChartDetail, RectifyRecord },
   filters: {
     filtersLevel(val) {
       const obj = { 0: '一般', 1: '重大' }
@@ -304,6 +310,9 @@ export default {
         const params = { x, y, z }
         this.$refs['chart-detail'].show(params)
       })
+    },
+    showRectifyRecord(item) {
+      this.$refs['rectify-record'].loadData(item)
     }
   }
 }

+ 125 - 0
src/views/iiot/equipment/components/RectifyRecord.vue

@@ -0,0 +1,125 @@
+<template>
+  <el-drawer
+    title="整改记录"
+    :modal-append-to-body="false"
+    :modal="false"
+    :wrapper-closable="false"
+    size="100%"
+    :visible.sync="dialogVisible"
+  >
+    <div class="base-info">
+      <el-table class="page-table" border fit :data="dataList">
+        <el-table-column header-align="center" align="center" prop="goafDevName" label="待测设备名称" />
+        <el-table-column header-align="center" align="center" prop="goafDevTypename" label="待测设备类型" />
+        <el-table-column header-align="center" align="center" prop="goafSensorName" label="传感器名称" />
+        <el-table-column header-align="center" align="center" prop="goafSensorAlarmType" label="告警类型" />
+        <el-table-column header-align="center" align="center" prop="goafSensorAlarmLevel" label="告警级别">
+          <template v-slot="{row}">
+            <span>{{ row.goafSensorAlarmLevel|filtersLevel }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column header-align="center" align="center" prop="sensorTemperature" label="温度(℃)">
+          <template v-slot="{row}">
+            <span>{{ parseFloat((row.sensorTemperature/10).toFixed(2)) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column header-align="center" align="center" prop="goafDatareportTime" label="上传时间" />
+      </el-table>
+    </div>
+    <div class="descriptions">
+      <el-descriptions class="margin-top" title="整改信息" :column="3" size="medium" border>
+        <el-descriptions-item>
+          <template slot="label">
+            <i class="el-icon-user" />
+            整改人
+          </template>
+          {{ viewData.accountName }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label">
+            <i class="el-icon-user" />
+            整改部门
+          </template>
+          {{ viewData.groupName }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label">
+            <i class="el-icon-time" />
+            整改时间
+          </template>
+          {{ viewData.goafSensorAlarmHandleTime }}
+        </el-descriptions-item>
+        <el-descriptions-item label-class-name="custom-desclabel">
+          <template slot="label">
+            <i class="el-icon-tickets" />
+            整改意见
+          </template>
+          {{ viewData.goafSensorAlarmHandle }}
+        </el-descriptions-item>
+      </el-descriptions>
+    </div>
+
+  </el-drawer>
+</template>
+
+<script>
+import { NumConvertLM } from '@/utils'
+import { getAlertRectifyInfo } from '@/api/iiot/alertRectify'
+export default {
+  name: 'RectifyRecord',
+  filters: {
+    filtersLevel(val) {
+      const obj = { 0: '一般', 1: '重大' }
+      return obj[val] || '--'
+    }
+  },
+  data() {
+    return {
+      dialogVisible: false,
+      dataList: [],
+      viewData: {
+        'accountName': '',
+        'goafSensorAlarmHandle': '',
+        'goafSensorAlarmHandleId': undefined,
+        'goafSensorAlarmHandleTime': '',
+        'goafSensorAlarmId': undefined,
+        'groupName': ''
+      }
+    }
+  },
+  methods: {
+    // fetch data
+    NumConvertLM,
+    loadData(item) {
+      this.dataList = [item]
+      this.dialogVisible = true
+      this.resetView()
+      getAlertRectifyInfo({
+        goafSensorAlarmId: item.goafSensorAlarmId
+      }).then((resp) => {
+        const { data } = resp
+        if (data) this.viewData = data
+      })
+    },
+    resetView() {
+      this.viewData = {
+        'accountName': '',
+        'goafSensorAlarmHandle': '',
+        'goafSensorAlarmHandleId': undefined,
+        'goafSensorAlarmHandleTime': '',
+        'goafSensorAlarmId': undefined,
+        'groupName': ''
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.descriptions{
+  padding-top: 30px;
+  ::v-deep.custom-desclabel{
+    min-width: 120px;
+  }
+}
+</style>
+