湖里大屏(数字工地):新增人脸闸机弹框

This commit is contained in:
Jack 2022-08-16 11:37:14 +08:00
parent 6b697f65a3
commit 77c3ba4ad7
3 changed files with 125 additions and 80 deletions

View File

@ -508,17 +508,6 @@
<!-- 顺时针回转限位报警 -->
{{ $t('message.dataBoard.alarmTypeArray2')[8] }}
</p>
<!-- <p v-if="item.windSpeedAlarm" class="p1">风速报警:{{item.windSpeedAlarm == 0?'正常':item.windSpeedAlarm == 1?'报警':'预警'}}</p>-->
<!--&lt;!&ndash; <p class="p1">警报类别{{ item.alarmType == 1?'报警':item.alarmType == 2?'预警':"&#45;&#45;" }}</p>&ndash;&gt;-->
<!-- <p v-if="item.environmentAlarm" class="p2">环境防撞报警:{{item.environmentAlarm == 0?'正常':item.environmentAlarm == 1?'报警':'预警'}}</p>-->
<!-- <p v-if="item.heightAlarm" class="p1">高度上限位报警:{{item.heightAlarm == 0?'正常':item.heightAlarm == 1?'报警':'预警'}}</p>-->
<!-- <p v-if="item.maxRangeAlarm" class="p2">幅度外限位报警:{{item.maxRangeAlarm == 0?'正常':item.maxRangeAlarm == 1?'报警':'预警'}}</p>-->
<!-- <p v-if="item.minRangeAlarm" class="p1">幅度内限位报警:{{item.minRangeAlarm == 0?'正常':item.minRangeAlarm == 1?'报警':'预警'}}</p>-->
<!-- <p v-if="item.momentAlarm" class="p2">力矩报警:{{item.momentAlarm == 0?'正常':item.momentAlarm == 1?'报警':'预警'}}</p>-->
<!-- <p v-if="item.multiAlarm" class="p1">多机防撞报警:{{item.multiAlarm == 0?'正常':item.multiAlarm == 1?'报警':'预警'}}</p>-->
<!-- <p v-if="item.negAngleAlarm" class="p2">逆时针回转限位报警:{{item.negAngleAlarm == 0?'正常':item.negAngleAlarm == 1?'报警':'预警'}}</p>-->
<!-- <p v-if="item.posAngleAlarm" class="p1">顺时针回转限位报警 :{{item.posAngleAlarm == 0?'正常':item.posAngleAlarm == 1?'报警':'预警'}}</p>-->
</div>
</div>
</vue-scroll>
@ -538,27 +527,6 @@
<div class="svg-box" id="svg_box" v-if="company == 'longguang'">
<svg id="svg" ref="svg" class="svg-pan-zoom_viewport" style="width: 100%; height: 100%" />
</div>
<!-- <div class="blockTitle blockTitle2"><i></i>预警信息</div>-->
<!-- <div class="deviceInfo">-->
<!-- <vue-scroll v-if="TowerWarningList" style="height: 145px; margin-bottom: 10px">-->
<!-- <div-->
<!-- class="driverInfo"-->
<!-- v-for="(item, index) in TowerWarningList"-->
<!-- :key="index"-->
<!-- >-->
<!-- <div class="TowerAlarm_item">-->
<!-- <p class="p1">设备名称:{{item.devName}}</p>-->
<!-- <p class="p2">预警时间{{ transformTimestamp(item.alarmTime) }}</p>-->
<!-- <p class="p1">报警类别{{ item.alarmType == 1?'报警':'预警' }}</p>-->
<!-- <p class="p2">角度:{{item.angle}}°</p>-->
<!-- <p class="p1">高度:{{item.height}}m</p>-->
<!-- <p class="p2">载重:{{item.loading}}kg</p>-->
<!-- <p class="p1">载重量比:{{item.loadRatio}}%</p>-->
<!-- <p class="p2">风速:{{item.windspeed}}m/s</p>-->
<!-- </div>-->
<!-- </div>-->
<!-- </vue-scroll>-->
<!-- </div>-->
</div>
</div>
<div class="towerBox center2">
@ -1566,37 +1534,6 @@
</div>
</div>
</div>
<!-- <div class="right fullHeight">
<div class="dialogBlock fullHeight">
<div class="dialogBlockContent">
<div class="blockTitle blockTitle2"><i></i>循环记录</div>
<table class="dialogTable">
<thead>
<tr>
<th>开始时间</th>
<th>结束时间</th>
<th>工作时长</th>
<th>载重(kg)</th>
<th>司机</th>
</tr>
</thead>
<tbody>
<tr
v-for="(item, index) in lifterWorkCycleList"
:key="index"
>
<td>{{ item.startTime }}</td>
<td>{{ item.endTime }}</td>
<td>{{ item.workTime }}</td>
<td>{{ item.loading }}</td>
<td>{{ item.driverName }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>-->
</div>
</div>
</el-dialog>
@ -1708,17 +1645,6 @@
</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>
<img src />
</td>
</tr>
</tbody>
</table>
</div>
</div>
@ -2142,7 +2068,6 @@
v-for="(item, index) in devTypeList"
:key="index"
:class="{ active: devTypeIndex == index }"
v-if="company == 'nanchang' || (company != 'nanchang' && item.id != 99)"
>
{{ item.name }}
</li>
@ -2173,9 +2098,7 @@ import {
selectEnvironmentDevAlaramCountList,
getAllTowerDangerInfo,
getAllLifterDangerInfo,
getEnvironmentInfo,
getAiVideoInfo,
getAIDangerList
getEnvironmentInfo
} from '@/assets/js/api/dataBoard'
import { selectCarTotal } from '@/assets/js/api/carManage.js'
import {

View File

@ -7,6 +7,7 @@
v-for="(point, index) in points"
:key="index"
></div>
<FaceGageDialog v-if="faceGateDialog" :close="() => (faceGateDialog = false)" :data="faceGateData" />
</div>
<div class="tabs">
<div class="tab" :class="{ checked: index === tabIndex }" v-for="(tab, index) in tabs" :key="index" @click="changeTab(index)">
@ -19,16 +20,22 @@
<script>
import Card from '../components/Card.vue'
import JNestedRingChart from '../jChart/pie/JNestedRingChart.vue'
import FaceGageDialog from './components/FaceGageDialog.vue'
import { selectWorkerAttendanceByDevApi } from '@/assets/js/api/dataBoard'
export default {
components: { Card, JNestedRingChart },
components: { Card, JNestedRingChart, FaceGageDialog },
props: {
title: {
type: String,
default: ''
}
},
mounted() {
this.selectWorkerAttendanceByDev()
},
data() {
return {
projectSn: this.$store.state.projectSn,
tabIndex: 0,
tabs: [
{ label: '全部', value: 'all' },
@ -37,12 +44,26 @@ export default {
{ label: '视频监测', value: 'video' },
{ label: '环境监测', value: 'environment' },
{ label: '人脸闸机', value: 'gate' }
]
],
faceGateDialog: true,
faceGateData: {
list: [],
totalAttendance: { inTotalNum: 0, outTotalNum: 0 },
ufaceDev: { deviceState: 1 }
}
}
},
methods: {
changeTab(index) {
this.tabIndex = index
},
selectWorkerAttendanceByDev() {
selectWorkerAttendanceByDevApi({
projectSn: this.projectSn,
devSn: '2525'
}).then(res => {
this.faceGateData = { ...res.result }
})
}
},
computed: {

View File

@ -0,0 +1,101 @@
<template>
<div class="faceGateDialog">
<div class="title">
<div class="text">{{ data.ufaceDev.devName }}</div>
<div class="status" :class="isOnline ? 'online' : 'offline'">{{ isOnline ? '在线' : '离线' }}</div>
<div class="close" @click="close">×</div>
</div>
<div class="list-title">进出统计</div>
<div class="person-times">
今日进场人数<span>{{ data.totalAttendance.inTotalNum }}</span>
</div>
<div class="person-times">
今日出场人数<span>{{ data.totalAttendance.outTotalNum }}</span>
</div>
</div>
</template>
<script>
export default {
props: {
close: {
type: Function,
require: true,
default: () => {}
},
data: {
type: Object,
required: true,
default: () => ({})
}
},
mounted() {
console.log(this.data, '是第三方士大夫')
setTimeout(() => {
console.log(this.data, '收待发送发生的方法')
}, 2000)
},
computed: {
isOnline() {
return this.data.ufaceDev && this.data.ufaceDev.deviceState === '1'
}
}
}
</script>
<style lang="less" scoped>
.faceGateDialog {
position: absolute;
top: 30px;
left: 30px;
padding: 20px;
width: 200px;
height: 140px;
border: 1px solid #0081c3;
background-color: #07162b;
.title {
display: flex;
align-items: center;
.text {
margin-right: auto;
}
.status {
width: 40px;
height: 22px;
line-height: 22px;
text-align: center;
font-size: 12px;
color: white;
background-color: #61c9d6;
border-radius: 4px;
&.offline {
background-color: #fe6c7f;
}
}
.close {
margin-left: 10px;
font-size: 20px;
cursor: pointer;
}
}
.list-title {
margin: 10px 0;
font-size: 18px;
color: #6ce9f0;
display: flex;
align-items: center;
&::before {
content: '';
width: 6px;
height: 6px;
border-radius: 50%;
margin-right: 7px;
background-color: #6ce9f0;
}
}
.person-times {
height: 40px;
line-height: 40px;
}
}
</style>