c3e3dc32606fL50">50
<t-tag v-if="scope.row.state=== '处理中'" state="info">{{ scope.row.state }}</t-tag>
<t-tag v-if="scope.row.state=== '未确认'" state="warning">{{ scope.row.state }}</t-tag>
<t-tag v-if="scope.row.state=== '已处理'" state="success">{{ scope.row.state }}</t-tag>
<t-tag v-if="scope.row.status=== 'RUN'" state="info">处理中</t-tag>
<t-tag v-if="scope.row.status=== 'INI'" state="warning">未确认</t-tag>
<t-tag v-if="scope.row.status=== 'END'" state="success">已处理</t-tag>
<t-tag v-if="scope.row.status=== 'FAL'" state="danger">误报</t-tag>
</template>
</t-table-column>
<t-table-column label="报警类型" prop="type">
<t-table-column label="报警类型" prop="alarmTypeName">
</t-table-column>
<t-table-column label="报警描述" prop="describe" width="110">
<t-table-column label="报警描述" prop="alarmMemo" width="110">
</t-table-column>
<t-table-column label="设备名称" prop="equipment_name" width="110">
<t-table-column label="设备名称" prop="resourceToolName" width="110">
</t-table-column>
<t-table-column label="设备编号" prop="equipment_number" width="90">
<t-table-column label="设备编号" prop="resourceToolCode" width="90">
</t-table-column>
<t-table-column label="设备位置" prop="equipment_location" width="120">
<t-table-column label="设备位置" prop="monitorSceneName" width="120">
</t-table-column>
<t-table-column label="报警时间" prop="alarm_time" width="148px">
<t-table-column label="报警时间" prop="aiIdenTime" width="148px">
</t-table-column>
<t-table-column label="处理人" prop="Handler" width="70">
<t-table-column label="处理人" prop="workEmployeeRoleName" width="70">
</t-table-column>
<t-table-column label="处理时间" prop="processing_time" width="148px">
<t-table-column label="处理时间" prop="processTime" width="148px">
</t-table-column>
<t-table-column label="操作">
<template slot-scope="scope">
<a href="javascript:void(0)" size="sm" style="color:#0089D4" @click="handleClick(scope,0)">详情</a>
<a v-if="scope.row.state=='处理中'" style="color:#0089D4" @click="handleClick(scope,1)">关闭</a>
<a v-if="scope.row.state=='未确认'" style="color:#0089D4" @click="handleClick(scope,1)">处理</a>
<a v-if="scope.row.status=='RUN'||scope.row.status=='FAL'" style="color:#0089D4" @click="handleClick(scope,1)">关闭</a>
<a v-if="scope.row.status=='INI'" style="color:#0089D4" @click="handleClick(scope,1)">处理</a>
</template>
</t-table-column>
</t-table>
@ -90,67 +92,68 @@
<div class="detail">
<label class="detail_title">状态:</label>
<div class="detail_content">
<t-tag v-if="currentdata.data.state==='未确认'" state="warning">{{ currentdata.data.state }}</t-tag>
<t-tag v-if="currentdata.data.state==='已处理'" state="success">{{ currentdata.data.state }}</t-tag>
<t-tag v-if="currentdata.data.state==='处理中'" state="info">{{ currentdata.data.state }}</t-tag>
<t-tag v-if="currentdata.data.status==='INI'" state="warning">未确认</t-tag>
<t-tag v-if="currentdata.data.status==='END'" state="success">已处理</t-tag>
<t-tag v-if="currentdata.data.status==='RUN'" state="info">处理中</t-tag>
<t-tag v-if="currentdata.data.status==='FAL'" state="danger">误报</t-tag>
</div>
</div>
<div class="detail">
<label class="detail_title">报警类型:</label>
<div class="detail_content">{{ currentdata.data.type }}</div>
<div class="detail_content">{{ currentdata.data.alarmTypeName }}</div>
</div>
<div class="detail">
<label class="detail_title">报警描述:</label>
<div class="detail_content">{{ currentdata.data.describe }}</div>
<div class="detail_content">{{ currentdata.data.alarmMemo }}</div>
</div>
<div class="detail">
<label class="detail_title">报警时间:</label>
<div class="detail_content">{{ currentdata.data.alarm_time }}</div>
<div class="detail_content">{{ currentdata.data.aiIdenTime }}</div>
</div>
<div class="detail">
<label class="detail_title">设备编号:</label>
<div class="detail_content">{{ currentdata.data.equipment_name }}</div>
<div class="detail_content">{{ currentdata.data.resourceToolCode }}</div>
</div>
<div class="detail">
<label class="detail_title">设备位置:</label>
<div class="detail_content">{{ currentdata.data.equipment_location }}</div>
<div class="detail_content">{{ currentdata.data.monitorSceneName }}</div>
</div>
<div class="detail">
<label class="detail_title">处理人:</label>
<div class="detail_content">{{ currentdata.data.Handler }}</div>
<div class="detail_content">{{ currentdata.data.workEmployeeRoleName }}</div>
</div>
<div class="detail">
<label class="detail_title">处理时间:</label>
<div>{{ currentdata.data.processing_time }}</div>
<div>{{ currentdata.data.processTime }}</div>
</div>
</div>
<div class="details_item2">
<div>
<div>识别图片</div>
<div><img :src="currentdata.data.picture_url" alt="" srcset="" style="width:100%;height:100%"></div>
<div><img :src="currentdata.data.idenPictureUrl" alt="" srcset="" style="width:100%;height:100%"></div>
</div>
<div>
<div>识别视频</div>
<div>
<video :src="currentdata.data.video_url" class="video" controls></video>
<video :src="currentdata.data.idenVideoUrl" class="video" controls></video>
</div>
</div>
</div>
<div v-if="clickdetail==1">
<div v-if="currentdata.data.state!='已处理'" class="radio">
<div v-if="currentdata.data.status!='END'" class="radio">
<div>报警处理 : </div>
<div v-if="currentdata.data.state=='未确认'">
<t-radio-group v-model="msg">
<t-radio label="确认">
<div v-if="currentdata.data.status=='INI'">
<t-radio-group v-model="status">
<t-radio label="RUN">
<span>确认</span>
</t-radio>
<t-radio label="误判">
<t-radio label="FAL">
<span>误判</span>
</t-radio>
@ -158,9 +161,9 @@
</t-radio-group>
</div>
<div v-if="currentdata.data.state=='处理中'">
<t-radio-group v-model="msg">
<t-radio label="关闭">关闭</t-radio>
<div v-if="currentdata.data.status=='RUN'||currentdata.data.status=='FAL'">
<t-radio-group v-model="status">
<t-radio label="END">关闭</t-radio>
</t-radio-group>
</div>
@ -188,21 +191,22 @@
<script>
import aialarmapi from '@/api/aialarm'
import formatDateTime from '@/utils/formatDateTime.js'
export default {
data () {
return {
searchdata: {
typeid: '', // 报警类型
Police: '', // 报警人
starttime: '', // 开始时间
endtime: '' // 结束时间
alarmTypeCode: '', // 报警类型
beginTime: '', // 开始时间
endTime: '' // 结束时间
},
// 报警类型
alarmtypelist: [],
// 报警人
aialarmhandlerlist: [],
// 模态框中的单选按钮
msg: '',
status: '',
// 模态框
details_modal: false,
// 当前行的数据
@ -215,20 +219,23 @@ export default {
// 判断是详情还是处理
clickdetail: 0,
// 一页的数据
data: [
orkTaskId': '202012031206570506796', // {
// state: '处理中',
// type: '身份异常',
// describe: '未授权车辆',
// equipment_name: '1#人脸终端',
// equipment_number: 's00001',
// equipment_location: '1#风场SVG室',
// alarm_time: '2020-09-21 16:07:09',
// Handler: '张三',
// processing_time: '2020-09-21 16:07:09',
// },
data: [{
'workTaskId': '202012031206570506796', orkTaskId': '202012031206570506796', //
'status': 'INI', // 状态
'statusTime': '2020-12-03T04:06:58.000+0000', // 状态时间
'processMemo': null, // 处理详情
'alarmTypeCode': 'HAT', // 报警类型
'alarmMemo': '没戴安全帽', // 报警描述
'resourceToolName': null, // 设备名称
'resourceToolCode': null, // 设备编号
'monitorSceneName': '一号工地', // 设备位置
'aiIdenTime': '2020-12-03T04:06:58.000+0000', // 报警时间l
'targetEmployeeRoleId': '1001',
'workEmployeeRoleId': '90001', // 处理人
'processTime': '', // 处理时间
'idenPictureUrl': 'http://pic/2970', // 图片url
'idenVideoUrl': 'http://video/8989' // 视频url
}
],
// 页数
page: 1,
@ -254,12 +261,12 @@ export default {
this.clickdetail = val
// 去除模态框中的单选项
this.msg = ''
this.status = ''
this.details_modal = true // 打开模态框
this.currentdata.data = scope.row // 获取当前行的数据
this.currentdata.index = scope.$index // 获取当前行的索引
console.log(this.currentdata.data)
// console.log(this.currentdata.data)
},
// 未确认状态的模态框的确认按钮 || 处理中状态的模态框的确认按钮
@ -267,9 +274,11 @@ export default {
// 获取单选框中的值
// console.log(this.msg)
// 判断是否选择了单选框
if (this.msg) {
if (this.status) {
// 向后端发送数据
this.alarmdispose(this.currentdata.data.id, this.msg)
this.alarmdispose(this.currentdata.data.workTaskId, this.status)
// console.log(this.status)
// console.log(this.currentdata.data.workTaskId)
// 关闭模态框
this.details_modal = false
} else {
@ -277,32 +286,21 @@ export default {
}
},
async alarmdispose (id, msg) {
var res = await aialarmapi.dispose({ 'id': id, 'msg': msg })
console.log(res)
async alarmdispose (id, status, processMemo) {
const dict = { 'END': '已解决', 'RUN': '处理中', 'FAL': '误报' }
var res = await aialarmapi.dispose({ 'workTaskId': id, 'status': status, 'processMemo': dict.status })
// console.log(res)
if (res.status === 200) {
this.$Message.success('操作成功')
// console.log(res.data.data)
this.judgeradio(msg)
this.data[this.currentdata.index].status = res.data.data.status
this.data[this.currentdata.index].processTime = res.data.data.doneDate
} else {
this.$Message.danger('处理失败')
}
},
// 判断选择了哪个单选按钮
judgeradio (msg) {
// 未确认的模态框选择了确认
if (msg === '确认') {
this.data[this.currentdata.index].state = '处理中'
}
// 未确认的模态框选择了误判
if (msg === '误判') {
this.$Message.info('未确认的模态框选择了误判')
}
// 处理中的模态框选择了关闭按钮
if (msg === '关闭') {
this.data[this.currentdata.index].state = '已处理'
}
},
onChange (val) {
// console.log(val)
this.page = val
@ -318,25 +316,27 @@ export default {
}
},
// 获取报警类型 以及报警人
// 获取报警类型
async gettype () {
var res = await aialarmapi.getaialarmtype()
// console.log(res)
if (res.status === 200) {
this.alarmtypelist = res.data.data
console.log(this.alarmtypelist)
// this.alarmtypelist = res.data.data
// console.log(this.alarmtypelist)
// console.log(res.data)
this.alarmtypelist = res.data
}
},
// 查询数据时
async search () {
var flag = this.startreend(this.searchdata.starttime, this.searchdata.endtime)
console.log(flag)
var flag = this.startreend(this.searchdata.beginTime, this.searchdata.endTime)
// console.log(flag)
if (flag) {
// 查询
var params = this.searchdata
params.page = this.page
params.limit = this.limit
params.pageNumber = this.page
params.pageSize = this.limit
var res = await aialarmapi.getaialarmlist({
params: params
@ -344,8 +344,12 @@ export default {
// console.log(res)
if (res.status === 200) {
this.data = res.data.data
this.total = Math.ceil(res.data.total / this.limit) * 5
this.data = res.data.data.data
// console.log('数据是:', this.data)
this.data = this.data.map((item) => { item.aiIdenTime = formatDateTime(item.aiIdenTime); return item })
// console.log(this.data)
this.total = Math.ceil(res.data.data.total / res.data.data.size) * 5
} else {
this.$Message.danger('数据获取失败')
}
@ -393,7 +397,6 @@ export default {
.upload {
font-size: 14px;
line-height: 22px;
margin: 29px 0 25px 0;
}
.table th,
.table td {
@ -403,6 +406,7 @@ export default {
display: flex;
justify-content: space-between;
margin-top: 24px;
margin-bottom: 24px;
.title {
display: inline-block;
width: 70px;