Merge branch 'liujun-2024-09-05-九公司人员定位' into dev

hyx_2024-9-25_tongbu
liujun 2024-09-05 18:31:39 +08:00
commit 2b54822d58
6 changed files with 212 additions and 60 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -55,7 +55,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="block4"> <div v-if="corpInfoId !== '21590a00ea5e462e9ee44dd332dddc26'" class="block4">
<layout-title title="报警列表"/> <layout-title title="报警列表"/>
<div class="content"> <div class="content">
<div class="table"> <div class="table">
@ -72,6 +72,25 @@
</div> </div>
</div> </div>
</div> </div>
<div v-if="corpInfoId === '21590a00ea5e462e9ee44dd332dddc26'" class="block4">
<layout-title title="报警列表"/>
<div class="content">
<div class="table">
<div class="tr">
<div class="td">报警类型</div>
<div class="td">报警时间</div>
<div class="td">触发人</div>
<div class="td">报警地点</div>
</div>
<div v-for="(item,index) in block4List" :key="index" class="tr">
<div class="td">{{ item.alarmName }}</div>
<div class="td">{{ item.alarmTime }}</div>
<div class="td">{{ item.foulUserName }}</div>
<div class="td">{{ item.place }}</div>
</div>
</div>
</div>
</div>
</div> </div>
</template> </template>
@ -173,9 +192,10 @@ export default {
}, },
getData() { getData() {
requestFN( requestFN(
'/map/getAllDwMessage', '/map/getAllDwMessage', { corpId: this.corpInfoId }
{ corpId: this.corpInfoId }
).then((data) => { ).then((data) => {
//
if (this.corpInfoId === '035958e685cf4850bc40151c5e0617a6') {
this.block4List = data.alarmList.list this.block4List = data.alarmList.list
this.block1OptionsList = [ this.block1OptionsList = [
{ {
@ -204,6 +224,27 @@ export default {
count: data.orthermessage.infoList.tklyr.num count: data.orthermessage.infoList.tklyr.num
} }
] ]
}
if (this.corpInfoId === '21590a00ea5e462e9ee44dd332dddc26') {
this.block1OptionsList = [
{
title: '总设备数',
img: require('../../../assets/map/renyuan/img1ico1.png'),
count: data.orthermessage.onlineDeviceNum
},
{
title: '在线人员数',
img: require('../../../assets/map/renyuan/img1ico1.png'),
count: data.orthermessage.lockNum
},
{
title: '离线人数',
img: require('../../../assets/map/renyuan/img1ico1.png'),
count: data.orthermessage.unLockNum
}
]
this.block4List = data.orthermessage.alarmList
}
}).catch((e) => { }).catch((e) => {
this.$message.error(e) this.$message.error(e)
}) })

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="app-container print-work" style="width: 100%;"> <div class="app-container print-work">
<div class="level-title"> <div class="level-title">
<h1>人员信息</h1> <h1>人员信息</h1>
</div> </div>
@ -29,12 +29,12 @@
<td>{{ otherInfo?otherInfo.postName:'' }}</td> <td>{{ otherInfo?otherInfo.postName:'' }}</td>
</tr> </tr>
</table> </table>
<table class="table-ui"> <!-- 一公司人员定位页面 -->
<table v-if="corpId === '035958e685cf4850bc40151c5e0617a6'" class="table-ui">
<tr> <tr>
<td class="bbg-transparent">姓名</td> <td class="bbg-transparent">姓名</td>
<td >{{ info?info.userName:'' }}</td> <td >{{ info?info.userName:'' }}</td>
</tr> </tr>
<tr> <tr>
<td class="bbg-transparent">定位卡号:</td> <td class="bbg-transparent">定位卡号:</td>
<td >{{ info?info.id:'' }}</td> <td >{{ info?info.id:'' }}</td>
@ -48,6 +48,25 @@
<td>{{ info?info.departmentName:'' }}</td> <td>{{ info?info.departmentName:'' }}</td>
</tr> </tr>
</table> </table>
<!-- 九公司人员定位页面 -->
<table v-if="corpId === '21590a00ea5e462e9ee44dd332dddc26'" class="table-ui">
<tr>
<td class="bbg-transparent">姓名</td>
<td >{{ (info && info.name) ? info.name : '未绑定人员' }}</td>
</tr>
<tr>
<td class="bbg-transparent">定位卡号:</td>
<td >{{ info?info.id:'' }}</td>
</tr>
<tr>
<td class="bbg-transparent">定位卡电量</td>
<td >{{ info?info.battery:'' }}</td>
</tr>
<tr>
<td class="bbg-transparent">公司</td>
<td>{{ info?info.corpName:'' }}</td>
</tr>
</table>
</div> </div>
</template> </template>

View File

@ -182,6 +182,18 @@
</template> </template>
</template> </template>
</template> </template>
<transition
enter-active-class="animate__animated animate__fadeInDown"
leave-active-class="animate__animated animate__fadeOutUp"
>
<div v-if="isPeopleTrajectory" class="people_trajectory">
<el-select v-model="peopleTrajectoryValue" popper-class="people_trajectory_select">
<el-option v-for="item in onePerLocArr" :key="item.id" :value="item.id" :label="item.id"/>
</el-select>
<el-button class="search_btn" @click="addTrajectory"></el-button>
<el-button class="reset_btn" @click="()=>{removeTrajectory();peopleTrajectoryValue = ''}">重置</el-button>
</div>
</transition>
</div> </div>
</transition> </transition>
<div class="right_options"> <div class="right_options">
@ -656,26 +668,17 @@ export default {
checkImg: require('../../assets/map/gangkou_index/buttom/ico21_on.png'), checkImg: require('../../assets/map/gangkou_index/buttom/ico21_on.png'),
containAuthorization: [], containAuthorization: [],
eliminateAuthorization: [] eliminateAuthorization: []
},
{
label: '人员轨迹',
dialog_width: '1200px',
check: false,
type: 'peopleTrajectory',
img: require('../../assets/map/gangkou_index/buttom/ico29.png'),
checkImg: require('../../assets/map/gangkou_index/buttom/ico29_on.png'),
containAuthorization: [],
eliminateAuthorization: []
} }
// {
// label: '',
// dialog_width: '1200px',
// check: false,
// type: 'platcamera',
// img: require('../../assets/map/gangkou_index/buttom/ico26.png'),
// checkImg: require('../../assets/map/gangkou_index/buttom/ico26_on.png'),
// containAuthorization: [],
// eliminateAuthorization: []
// }
// {
// label: '',
// dialog_width: '1200px',
// check: false,
// img: require('../../assets/map/gangkou_index/buttom/ico22.png'),
// checkImg: require('../../assets/map/gangkou_index/buttom/ico22_on.png'),
// containAuthorization: [],
// eliminateAuthorization: []
// }
] ]
}, },
{ {
@ -1091,7 +1094,9 @@ export default {
longitude: '', longitude: '',
latitude: '' latitude: ''
}, },
trajectoryEntityCollection: {} trajectoryEntityCollection: {},
isPeopleTrajectory: false,
peopleTrajectoryValue: ''
} }
}, },
mounted() { mounted() {
@ -1226,12 +1231,13 @@ export default {
} }
}, Cesium.ScreenSpaceEventType.RIGHT_CLICK) }, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
}, },
addTrajectory(point_id, corpInfoId) { addTrajectory() {
this.removeTrajectory()
requestFN( requestFN(
'/map/getPersonTrace', '/map/getPersonTrace',
{ {
id: point_id, id: this.peopleTrajectoryValue,
corpId: corpInfoId corpId: this.CORP_INFO_ID
} }
).then((data) => { ).then((data) => {
if (data.list) { if (data.list) {
@ -1671,6 +1677,7 @@ export default {
this.bottomOptionsList[i].list[j].check = false this.bottomOptionsList[i].list[j].check = false
} }
} }
this.isPeopleTrajectory = false
} }
}, },
clearAllBottomOptionsItemsEntityCollection() { clearAllBottomOptionsItemsEntityCollection() {
@ -1757,10 +1764,22 @@ export default {
} }
this.carLocArr = [] this.carLocArr = []
} }
if (urlType === 'peopleTrajectory') {
this.isPeopleTrajectory = false
}
if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '035958e685cf4850bc40151c5e0617a6' && urlType === 'peoplePosition') { if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '035958e685cf4850bc40151c5e0617a6' && urlType === 'peoplePosition') {
this.doUnSubscribe() this.doUnSubscribe()
this.clearMqttPoint('+/UwbBQ/') this.clearMqttPoint('+/UwbBQ/')
this.removeTrajectory() this.removeTrajectory()
for (let i = 0; i < this.bottomOptionsList[pindex].list.length; i++) {
if (this.bottomOptionsList[pindex].list[i].type === 'peopleTrajectory') {
if (this.bottomOptionsList[pindex].list[i].check) {
this.bottomOptionsList[pindex].list[i].check = false
this.isPeopleTrajectory = false
break
}
}
}
} }
if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '21590a00ea5e462e9ee44dd332dddc26' && urlType === 'peoplePosition') { if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '21590a00ea5e462e9ee44dd332dddc26' && urlType === 'peoplePosition') {
this.clearRYDWPoint('+/UwbBQ/') this.clearRYDWPoint('+/UwbBQ/')
@ -1778,6 +1797,23 @@ export default {
} }
}) })
} else { } else {
if (urlType === 'peopleTrajectory') {
let flag = false
for (let i = 0; i < this.bottomOptionsList[pindex].list.length; i++) {
if (this.bottomOptionsList[pindex].list[i].type === 'peoplePosition') {
if (!this.bottomOptionsList[pindex].list[i].check) {
flag = true
break
}
}
}
if (flag) {
this.$message.warning('请先选择人员定位!!!')
return
} else {
this.isPeopleTrajectory = true
}
}
this.bottomOptionsList[pindex].list[index].check = true this.bottomOptionsList[pindex].list[index].check = true
if (this.gangkouActive === '00004') { if (this.gangkouActive === '00004') {
this.cfdBottomOptionsList[pindex].list[index].check = true this.cfdBottomOptionsList[pindex].list[index].check = true
@ -2341,10 +2377,10 @@ export default {
_this.fwebsocket = new WebSocket(encodeURI(wsUrl)) _this.fwebsocket = new WebSocket(encodeURI(wsUrl))
_this.fwebsocket.onmessage = function(message) { _this.fwebsocket.onmessage = function(message) {
console.info('接收消息') console.info('接收消息')
const peopleList = JSON.parse(message.data).data.data const peopleList = JSON.parse(message.data)
for (let i = 0; i < peopleList.length; i++) { for (let i = 0; i < peopleList.length; i++) {
const item = peopleList[i] const item = peopleList[i]
if ((!item) || (item.ts === 1)) continue if ((!item)) continue
// //
const index = _this.onePerLocArr.findIndex(item1 => { const index = _this.onePerLocArr.findIndex(item1 => {
return item1.id.toString() === item.id.toString() return item1.id.toString() === item.id.toString()
@ -2360,6 +2396,7 @@ export default {
} else { } else {
const perLoc = { const perLoc = {
id: item.id, id: item.id,
name: item.name,
x: x, x: x,
y: y, y: y,
icon_type: 'img4_0' + pointColor, icon_type: 'img4_0' + pointColor,
@ -3099,9 +3136,52 @@ export default {
transform: translateY(0); transform: translateY(0);
} }
} }
.people_trajectory{
position: absolute;
top: -60px;
left: 0;
width: 400px;
padding: 10px;
background-image: linear-gradient(to right, rgb(31 62 129 / 57%) 0%, rgb(17 93 255 / 40%) 50%, rgb(31 62 129 / 57%) 100%);
.search_btn{
background-color: #1563e3;
color: #fff;
border-color: #1563e3;
}
.reset_btn{
background-color: #558be5;
color: #fff;
border-color: #558be5;
}
}
</style> </style>
<style> <style>
.cesium-viewer-toolbar, .cesium-viewer-fullscreenContainer, .cesium-infoBox-visible { .cesium-viewer-toolbar, .cesium-viewer-fullscreenContainer, .cesium-infoBox-visible {
display: none !important; display: none !important;
} }
.people_trajectory .el-input__inner{
background-color: #100693 !important;
border-color: #100693 !important;
color: #fff !important;
}
.people_trajectory_select{
background-color: #100693 !important;
border-color: #100693 !important;
}
.people_trajectory_select .el-select-dropdown__item{
color: #fff !important;
}
.people_trajectory_select .el-select-dropdown__item.hover{
background-color: #2111ec !important;
color: #fff !important;
}
.people_trajectory_select .popper__arrow{
border-top-color: #100693 !important;
border-bottom-color: #100693 !important;
}
.people_trajectory_select .popper__arrow::after{
border-top-color: #100693 !important;
border-bottom-color: #100693 !important;
}
</style> </style>

View File

@ -30,6 +30,16 @@ export default class DragEntity {
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND, heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
disableDepthTestDistance: Number.POSITIVE_INFINITY disableDepthTestDistance: Number.POSITIVE_INFINITY
}, },
label: {
text: point.name ? point.name : point.id,
font: '13px sans-serif',
pixelOffset: new Cesium.Cartesian2(0, -55),
showBackground: true,
// eslint-disable-next-line new-cap
backgroundColor: new Cesium.Color.fromCssColorString('rgba(20, 58, 142, 1)'),
backgroundPadding: new Cesium.Cartesian2(7, 5),
disableDepthTestDistance: Number.POSITIVE_INFINITY
},
orientation: new Cesium.VelocityOrientationProperty(point.property), orientation: new Cesium.VelocityOrientationProperty(point.property),
monitoItems: { monitoItems: {
@ -43,7 +53,9 @@ export default class DragEntity {
this.viewer.clock.clockRange = Cesium.ClockRange.CLAMPED this.viewer.clock.clockRange = Cesium.ClockRange.CLAMPED
this.viewer.clock.shouldAnimate = false this.viewer.clock.shouldAnimate = false
} }
delEntity(point) {
this.viewer.entities.remove(point)
}
getPosition(point) { getPosition(point) {
if (this.viewer.clock.shouldAnimate === false) { if (this.viewer.clock.shouldAnimate === false) {
this.viewer.clock.shouldAnimate = true this.viewer.clock.shouldAnimate = true