diff --git a/src/views/am/monitor.vue b/src/views/am/monitor.vue index cae32d11..27aeb5cc 100644 --- a/src/views/am/monitor.vue +++ b/src/views/am/monitor.vue @@ -5,21 +5,23 @@ 同步
- + >
- @@ -132,9 +134,12 @@ export default { }, code: "video_realtime", }, + areaId:'', channelCode: '', channelId: '', channelArea: '', + pageData:[], + areaoptions: [], channelAreas: [], channelLocation: {}, flvPlayer: null, @@ -150,8 +155,21 @@ export default { scriptInfo.setAttribute("data-callType", "callScript"); scriptInfo.src = "https://cdn.bootcdn.net/ajax/libs/flv.js/1.6.2/flv.js"; document.head.appendChild(scriptInfo); + this.getAllVchannel(); + }, + mounted(){ + this.getArea(); }, methods: { + getAllVchannel(){ + debugger; + this.$API.am.video.list.req({pageSize:999}).then(res=>{ + debugger; + console.log(res) + let allVchannel = JSON.stringify(res.pageData); + localStorage.setItem('allVchannel',allVchannel) + }) + }, handleView(row) { let that = this; that.channelCode = row.channelCode; @@ -174,9 +192,15 @@ export default { }, viewClose() { this.limitedVisible = false; + }, + //区域 + getArea() { + this.$API.am.area.list.req({ page: 0 }).then((res) => { + this.areaoptions = res; + }); }, handlePosition(row) { - debugger; + // debugger; console.log(row) if(row.my_info.id&&row.my_info.id!==null){ this.channelId = row.my_info.id ? row.my_info.id : null; @@ -196,7 +220,24 @@ export default { }, //搜索 - handleQuery() { this.$refs.table.refresh(); }, + handleQuery() { + debugger; + let that = this; + let vchannel = localStorage.getItem('allVchannel'); + console.log(vchannel) + let allVchannel = JSON.parse(vchannel); + debugger; + console.log(allVchannel) + console.log(that.areaId) + + that.pageData = allVchannel.filter(item=>{ + if(item.my_info.area == that.areaId){ + debugger; + } + return item.my_info.area == that.areaId; + }) + // console.log(localStorage.getItem('allVchannel')) + }, resetQuery() { this.query = {}; diff --git a/src/views/bigScreen/index.vue b/src/views/bigScreen/index.vue index 25996ac4..2261a92a 100644 --- a/src/views/bigScreen/index.vue +++ b/src/views/bigScreen/index.vue @@ -40,14 +40,14 @@ 人员 -
+
-
+
+
+
+
+ {{item1.voice_msg}} +
+
+
-
{{ item.cate__name }} @@ -230,16 +237,6 @@ -
@@ -671,10 +668,10 @@
- +
-
警报信息
+
事件信息
关闭
@@ -685,7 +682,7 @@
-
警告详情
+
事件详情
@@ -717,8 +714,11 @@
事件截图: - - + + + + +
@@ -763,6 +763,7 @@ export default { timerUser: null, timerTime: null, eventTimer:null, + timerEventRoll:null, eventAudioTimer:null, trackMarker:null, domMarkerLayer: null, @@ -797,6 +798,7 @@ export default { warningDetail: false, filterCtrlFocus: true, warningListTotal: 0, + heightNum:0, warningData: { list: [], total: 0, @@ -818,6 +820,7 @@ export default { warningList: [],//报警事件列表 speakerList: [],//喇叭列表 userList: [],//人员列表 + allUserList:[], deptList: [],//部门列表 postList: [ {id:0,name:'全部',label:'全部'}, @@ -893,6 +896,7 @@ export default { audioIndex:0, audioList:{}, employeeScroll:0, + searchKeyWord:'', } }, @@ -1087,7 +1091,8 @@ export default { let height1 = document.getElementsByClassName('cockpit-count')[0].clientHeight; let height2 = document.getElementsByClassName('cockpit-alarm')[0].clientHeight; let height3 = document.getElementsByClassName('area-simple-title')[0].clientHeight; - let domHeight = pageHeight - height1 - height2 - 84; + debugger; + let domHeight = pageHeight - height1 - 310 - 84; let areaTableHeight = domHeight - height3 - 50; this.areaTableHeight = areaTableHeight; document.getElementsByClassName('cockpit-info')[0].style.height = domHeight + 'px'; @@ -1104,43 +1109,71 @@ export default { this.timerUser = null; this.timerTime = null; this.eventTimer = null; + this.timerEventRoll = null; this.eventAudioTimer = null; - // window.map.destroy(); clearInterval(this.timerUser)//人员 clearInterval(this.timerTime)//时间 clearInterval(this.eventTimer)//时间 + clearInterval(this.timerEventRoll)//事件 clearInterval(this.eventAudioTimer)//事件 }, methods: { + searchOne(keyword){ + let that = this; + that.markList[5] = true; + that.userMaskerLayer.show = true; + clearInterval(that.timerUser); + that.timerUser = setInterval(function () { + that.refreshUserMarker(); + }, 10000) + that.userList.filter(item=>{ + if(item.my_info.employee_.name == keyword||item.mac ==keyword){ + that.screenUserItem = item.my_info.employee_; + that.screenUserItem.mac = item.mac; + that.screenUser = true; + window.map.flyToMarker(that.userMarker[item.mac], { + duration: 1000, + range: 200 + }) + } + }) + }, handleChange(item, check,item2,item3) { - // debugger; - // let that = this; - // console.log(item); - // console.log(check); - // console.log(item2); - // console.log(item3); + let that = this; + debugger; + console.log(check) + this.deptChecked = check.checkedKeys; this.userParams.depts = check.checkedKeys; - let obj = {}; - obj.depts = check.checkedKeys; - that.$API.third.blt.all.req(obj).then(res => { - debugger; - console.log('selectedUser:'+res) - }) - this.refreshUserMarker(); + // that.userMaskerLayer.removeAllIconTextMark(); + // this.refreshUserMarker(); }, //人员类型选择 userFilter() { let that = this; + let checkedKeys = that.deptChecked; + window.map.removeLayer(that.userMaskerLayer); + that.userMaskerLayer = new jsmap.JSIconTextMarkerLayer({ + minimumLevel: 3, + maxmumLevel: 22, + show: true + }); + window.map.addLayer(that.userMaskerLayer); + let userListNew = []; + that.userList.filter(item=>{ + debugger; + console.log(item); + if(checkedKeys.indexOf(item.my_info.employee_.belong_dept_)>-1){ + debugger; + userListNew.push(item) + } + }) + debugger; + that.userList = userListNew; + console.log(that.userList) + that.showUserMarkers(userListNew); this.showUserSelect = false; - this.screenUser = true; - // that.screenUserItem.name = this.userList[0].my_info.employee_.name; - // that.screenUserItem.type = this.userList[0].my_info.employee_.type; - // that.screenUserItem.id = this.userList[0].my_info.employee_.id; - // that.screenUserItem.photo = this.userList[0].my_info.employee_.photo ? this.userList[0].my_info.employee_.photo : ''; - // that.screenUserItem.post_name = this.userList[0].my_info.employee_.post_name ? this.userList[0].my_info.employee_.post_name : ''; - // that.screenUserItem.belong_dept_name = this.userList[0].my_info.employee_.belong_dept_name ? this.userList[0].my_info.employee_.belong_dept_name : ''; - + // this.screenUser = true; }, audioFinished(){ if(this.audioIndex { if (res.err_msg) { } else { - // debugger; - // console.log('00000000000000'); - // console.log(res.results[0].id); - // console.log(that.audioList.id); let judge = res.results[0].id==that.audioList.id - // console.log(judge); - // console.log('11111111111111'); let item = res.results[0]; if(that.audioSrc!==''){ if(item.id==that.audioList.id){ - // that.music.pause(); //暂停 }else{ - // debugger; that.audioList = item; that.audioSrc=item.voice_f; - // that.music.play();//播放 if(item.location){ window.map.flyToPosition(new jsmap.JSPoint(item.location.longitude, item.location.latitude), { range: 200,duration: 1000 }); } @@ -1242,17 +1267,36 @@ export default { }, //获取报警列表 getWarnings() { + let that = this; this.$API.ecm.event.list.req(this.warningData.params).then(res => { if (res.err_msg) { } else { - this.warningData.list = res.results; - this.warningData.total = res.count; + that.warningData.list = res.results; + that.warningData.total = res.count; + that.eventInterval(); } }) }, + eventInterval(){ + let that = this; + if (that.timerEventRoll) { + clearInterval(that.timerEventRoll); + that.timerEventRoll = null; + } + that.timerEventRoll = setInterval(function () { + that.heightNum+=1; + if(that.heightNum>250){ + that.heightNum=0; + document.getElementById('eventScrenItem').style.top = 0; + }else{ + let top = -that.heightNum; + document.getElementById('eventScrenItem').style.top = top+'px'; + } + }, 100) + + }, //警报类型查询 warningTypeSelected(id,name) { - // debugger; let that = this; this.warningTypeShow = false; let params = new Object(); @@ -1267,17 +1311,29 @@ export default { that.warningData.total = res.count; } }) - //获取新数据 }, //区域点击事件 areaRowClick(data) { let that = this; that.areaDetail = true; + debugger; + console.log(data) that.areaDetailId = data.id; - this.getAreaOperation(); let points = data.third_info.xx_rail.detail.polygon.points[0]; - window.map.flyToPosition(new jsmap.JSPoint(points.x, points.y, points.z), { range: 200,duration: 1000 }); + window.map.flyToPosition(new jsmap.JSPoint(points.x, points.y, points.z), + { duration:1000, + offset:{ + rotate: 45, + tilt: 60, + range: 300 + } + }); + // this.getAreaList(); + this.getAreaOperation(); + this.getAreaVchannel(); + this.getAreaSpeaker(); + this.getAreaBlt(); }, //区域下的作业 getAreaOperation(){ @@ -1322,7 +1378,6 @@ export default { let rpartsList=[]; let arr = []; let children = genTree(res); - debugger; console.log(children) for (let i = 0; i < 5; i++) { let obj = new Object(); @@ -1443,6 +1498,7 @@ export default { that.userList = res.filter(item => { return item.my_info.employee }); + that.allUserList = that.userList; that.showUserMarkers(that.userList); } }) @@ -1686,6 +1742,7 @@ export default { }, //人员 showUserMarkers(userList) { + debugger; let that = this; //标记图片 let userImage = ''; @@ -1743,10 +1800,15 @@ export default { that.userMaskerLayer.addMarker(that.userMarker[item.mac]); }) } - clearInterval(that.timerUser); - that.timerUser = setInterval(function () { - that.refreshUserMarker(); - }, 10000) + // if(that.markList[5]){ + // clearInterval(that.timerUser); + // that.timerUser = setInterval(function () { + // that.refreshUserMarker(); + // }, 10000) + // }else{ + // clearInterval(that.timerUser); + // } + }, //更新人员标记 refreshUserMarker() { @@ -1764,7 +1826,7 @@ export default { let addUser = that.func(userList, that.userList)[0]; let refreshList = that.func(userList, that.userList)[1]; let subUser = that.func(that.userList, userList)[0]; - that.userList = refreshList.concat(addUser);//更新userList + that.allUserList = that.userList = refreshList.concat(addUser);//更新userList subUser.forEach(subUserItem=>{ that.userMaskerLayer.removeMarker(that.userMarker[subUserItem.mac]);//删除离线员工 }) @@ -1957,8 +2019,14 @@ export default { } if (that.markList[5]) { that.userMaskerLayer.show = true; + clearInterval(that.timerUser); + that.timerUser = setInterval(function () { + that.refreshUserMarker(); + }, 10000) } else { that.userMaskerLayer.show = false; + clearInterval(that.timerUser); + that.timerUser = null; } }, @@ -2197,6 +2265,29 @@ export default { this.music.play();//播放 }, }, + beforeRouteLeave(to, from, next){ + next(); + if (this.timerUser) { + clearInterval(this.timerUser); + this.timerUser = null; + } + if (this.timerTime) { + clearInterval(this.timerTime); + this.timerTime = null; + } + if (this.eventTimer) { + clearInterval(this.eventTimer); + this.eventTimer = null; + } + if (this.timerEventRoll) { + clearInterval(this.timerEventRoll); + this.timerEventRoll = null; + } + if (this.eventAudioTimer) { + clearInterval(this.eventAudioTimer); + this.eventAudioTimer = null; + } + }, unmounted() { // window.map.destroy(); window.map = null; @@ -3040,27 +3131,31 @@ export default { } .alarm-content { - display: flex; + // display: flex; justify-content: space-between; height: calc(100% - 50px); - + .alarm-danger { + width: 50px; + height: 50px; + background: url(/public/img/a_danger.png) no-repeat; + background-size: 100% 100%; + } .content-left { width: 160px; height: 100%; display: flex; align-items: center; justify-content: center; - .alarm-danger { - width: 150px; - height: 150px; + width: 50px; + height: 50px; background: url(/public/img/a_danger.png) no-repeat; background-size: 100% 100%; } } .content-right { - width: calc(100% - 130px); + width: 100%; overflow: hidden; height: fit-content; @@ -3726,8 +3821,8 @@ export default { .el-dialog__headerbtn { position: absolute; - top: 20px; - right: 20px; + top: 0; + right: 0; padding: 0; background: 0 0; border: none;