From cfd0f4df9556368f9a35b26841db08dd4be35564 Mon Sep 17 00:00:00 2001 From: shijing Date: Mon, 11 Jul 2022 13:35:17 +0800 Subject: [PATCH] track&bindblt --- src/views/bigScreen/index.vue | 267 +++++++++++++++++++--------------- src/views/hrm/employee.vue | 65 +++++---- 2 files changed, 183 insertions(+), 149 deletions(-) diff --git a/src/views/bigScreen/index.vue b/src/views/bigScreen/index.vue index 17f328b2..d6e776c2 100644 --- a/src/views/bigScreen/index.vue +++ b/src/views/bigScreen/index.vue @@ -119,7 +119,8 @@
内部员工
- {{userCount.count_employee}}  + {{userCount.count_employee}} 
@@ -127,7 +128,8 @@
访客
-
{{userCount.count_visitor}}  +
{{userCount.count_visitor}} 
@@ -136,7 +138,8 @@
相关方
- {{userCount.count_remployee}}  + {{userCount.count_remployee}} 
@@ -488,10 +491,15 @@
-
+
+ + 取消跟踪 +
+
跟踪
+
轨迹 @@ -519,7 +527,8 @@ @@ -835,6 +844,7 @@ countIndex: '2', markList: [false, false, false, false, false, false, false], autoRun: false, + tracking: false, areaDetail: false, screenJob: false, screenUser: false, @@ -845,13 +855,13 @@ showUserSelect: false, warningDetail: false, filterCtrlFocus: true, - warningListTotal:0, - warningData:{ - list:[], - total:0, - params:{ - page:1, - page_size:10 + warningListTotal: 0, + warningData: { + list: [], + total: 0, + params: { + page: 1, + page_size: 10 } }, Vchannels: [],//摄像头列表 @@ -903,7 +913,7 @@ mark: '1', }, LBType: '1', - userMarker:{}, + userMarker: {}, } }, created() { @@ -1051,6 +1061,10 @@ //人员 that.screenUserItem = item.properties.get("employee"); that.screenUser = true; + debugger; + window.map.flyToMarker(that.userMarker[that.screenUserItem.mac],{ + duration:1000 + }) } } @@ -1077,55 +1091,57 @@ this.getAllPost();//岗位 setInterval(function () { - },3000) + }, 3000) }, methods: { - areaRowClick(){ + areaRowClick(data) { this.areaDetail = true; + console.log(data); + debugger; }, //岗位 - getAllPost(){ - this.$API.system.post.list.req({page:0}).then(res=>{ + getAllPost() { + this.$API.system.post.list.req({page: 0}).then(res => { let arr = []; let children = genTree(res); - for(let i=0;i<4;i++){ - let obj=new Object(); - if(i===0){ - obj.id=''; + for (let i = 0; i < 4; i++) { + let obj = new Object(); + if (i === 0) { + obj.id = ''; obj.name = '全部'; obj.label = '全部'; - }else if(i===1){ - obj.id=''; + } else if (i === 1) { + obj.id = ''; obj.name = '内部员工'; obj.label = '内部员工'; obj.children = children; - }else if(i===2){ - obj.id=''; + } else if (i === 2) { + obj.id = ''; obj.name = '相关方'; obj.label = '相关方'; - }else if(i===3){ - obj.id=''; + } else if (i === 3) { + obj.id = ''; obj.name = '访客'; obj.label = '访客'; } arr.push(obj) } - this.postList =arr; + this.postList = arr; // console.log(arr) }) }, //人员统计 getManCount() { let that = this; - if(that.countIndex==='2'){ + if (that.countIndex === '2') { that.$API.third.blt.countNow.req().then(res => { if (res.err_msg) { } else { that.userCount = {...res}; } }) - }else{ + } else { that.$API.third.blt.countBind.req().then(res => { if (res.err_msg) { } else { @@ -1180,11 +1196,11 @@ that.userList = res.filter(item => { return item.my_info.employee }); - that.showUserMarkers(); + that.showUserMarkers(that.userList); } }) }, - handleCurrentChange(){ + handleCurrentChange() { this.getWarnings(); }, //获取报警列表 @@ -1222,7 +1238,7 @@ //获取人员详细信息 showUserDetail() { this.screenUserDetail = true; - this.$API.hrm.employee.item.req(this.screenUserItem.id).then(res=>{ + this.$API.hrm.employee.item.req(this.screenUserItem.id).then(res => { // console.log(res); this.screenUserItemDetail = res; }) @@ -1232,12 +1248,12 @@ let that = this; 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:''; + 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 : ''; }, //风险区域layer riskMaskerLayers() { @@ -1417,16 +1433,20 @@ }) }, //人员 - showUserMarkers() { + showUserMarkers(userList) { + let that = this; let iconTextMarker = null; - if(that.userList.length>0){ - let lng = [114.62923138539462,114.6315404372349];//经度 - let i=0; - iconTextMarker = that.userList[0].mac+'userMarker'; - let employee_ = that.userList[0].my_info.employee_; + if (userList.length > 0) { + let lng = [114.62923138539462, 114.6315404372349];//经度 + let i = 0; + iconTextMarker = userList[0].mac; + let employee_ = userList[0].my_info.employee_; + employee_.mac = userList[0].mac; + console.log(employee_) + debugger; that.userMarker[iconTextMarker] = new jsmap.JSIconTextMarker({ - id: that.userList[0].my_info.code, + id: userList[0].my_info.code, position: {x: 114.62923138539462, y: 38.8133418942645, z: 0}, //坐标 floorId: 1, //楼层id,默认为1(地面) image: "/img/user.png", @@ -1450,75 +1470,70 @@ }); that.userMaskerLayer.addMarker(that.userMarker[iconTextMarker]); setInterval(function () { - i=(i+1)%2; - that.userMaskerLayer.updateMarkerPosition(that.userMarker[iconTextMarker],{ - floorId:1, - position: {x:lng[i], y:38.8133418942642, z:0}, - animate: {duration: 8000,} + i = (i + 1) % 2; + that.userMaskerLayer.updateMarkerPosition(that.userMarker[iconTextMarker], { + floorId: 1, + position: {x: lng[i], y: 38.8133418942642, z: 0}, + animate: {duration: 10000,} });//动画效果,持续时间一秒 - },8500) + },11000) } - /*that.userList.forEach(item => { - if (item.my_info.code) { - let employee_ = item.my_info.employee_; - //{114.62923138539462,38.8133418942642} - iconTextMarker = new jsmap.JSIconTextMarker({ - id: item.my_info.code, - position: {x: 114.6315404372349, y: 38.813557855009435, z: 0}, //坐标 - floorId: 1, //楼层id,默认为1(地面) - image: "/img/user.png", - text: employee_.name, - font: '10px sans-serif', - fontColor: '#ffffff', - imageHeight: 25, - imageWidth: 25, - backgroundColor: 'rgba(0,0,0,0.3)', - backgroundRadius: 1, - backgroundStrokeColor: 'rgba(0,0,0,0.3)', - backgroundStrokeWidth: 1, - iconTextType: jsmap.JSIconTextType.TOPTEXT_BOTTOMICON, - allowPicking: true, - displayCondition: new jsmap.JSDisplayCondition(0.0, 1000), - nearFarScale: new jsmap.JSNearFarScale(0.0, 1, 500, 1), - show: true, - properties: { - employee: employee_ - }, - callback: (marker) => { - return employee_ - } + /*setInterval(function () { + that.refreshUserMarker(); + }, 8500)*/ + }, + //更新人员标记 + refreshUserMarker() { + let that = this; + that.$API.third.blt.all.req().then(res => { + if (res.err_msg) { + } else { + let userList = res.filter(item => { + return item.my_info.employee }); - that.userMaskerLayer.addMarker(iconTextMarker); - iconTextMarker1 = new jsmap.JSIconTextMarker({ - id: item.my_info.code, - position: {x: 114.62923138539462, y: 38.8133418942642, z: 0}, //坐标 - floorId: 1, //楼层id,默认为1(地面) - image: "/img/user.png", - text: employee_.name, - font: '10px sans-serif', - fontColor: '#ffffff', - imageHeight: 25, - imageWidth: 25, - backgroundColor: 'rgba(0,0,0,0.3)', - backgroundRadius: 1, - backgroundStrokeColor: 'rgba(0,0,0,0.3)', - backgroundStrokeWidth: 1, - iconTextType: jsmap.JSIconTextType.TOPTEXT_BOTTOMICON, - allowPicking: true, - displayCondition: new jsmap.JSDisplayCondition(0.0, 1000), - nearFarScale: new jsmap.JSNearFarScale(0.0, 1, 500, 1), - show: true, - properties: { - employee: employee_ - }, - callback: (marker) => { - return employee_ - } - }); - that.userMaskerLayer.addMarker(iconTextMarker1); + 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.showUserMarkers(addUser);//增加新进在线员工 + //that.userMaskerLayer.removeMarker(sectorMarker)(addUser);//删除离线员工 + refreshList.forEach(item => { + that.userMaskerLayer.updateMarkerPosition(that.userMarker[item.id], { + floorId: 1, + position: {x: item.longitude, y: item.latitude, z: item.z}, + animate: {duration: 1000,} + });//动画效果,持续时间一秒 + }) } - - })*/ + }) + }, + //比较两次获取的人数的变动 func(a,b)//a与b相比多出来的 + func(arr1, arr2) { + /*var arr1 = [{name:1},{name:2},{name:3},{name:4}]; + var arr2 = [{name:2},{name:3},{name:4},{name:5}];*/ + let arr = []; + let list = []; + let bool = false; + let same = false; + for (let i = 0; i < arr1.length; i++) { + for (let j = 0; j < arr2.length; j++) { + //遇到相同直接跳出循环 + if (arr1[i].id === arr2[j].id) { + same = i; + bool = false; + break; + } else { + same = false; + bool = i; + } + } + if (same !== false) list.push(arr1[same]); + if (bool !== false) arr.push(arr1[bool]); + } + let arrList = [arr,list]; + debugger; + console.log(arrList); + return arrList; }, //危险作业 showPolygonMarkers() { @@ -1546,9 +1561,10 @@ }); this.polygonMaskerLayer.addMarker(polygonMarker); }, + //危险作业图片标记 showJobDomMarkers() { let domMarker = new jsmap.JSDomMarker({ - id: 'polygonmark', + id: 'polygonmark', position: new jsmap.JSPoint(114.63168864138028, 38.81254802029822, 0), floorId: 1, depthTest: true, @@ -1738,19 +1754,27 @@ }) }, //员工列表点击 - userRowClick(row){ + userRowClick(row) { debugger; console.log(row); let that = this; - that.screenUserItem.name=row.my_info.employee_.name; - that.screenUserItem.type=row.my_info.employee_.type; - that.screenUserItem.id=row.my_info.employee_.id; - that.screenUserItem.photo=row.my_info.employee_.photo?row.my_info.employee_.photo:''; - that.screenUserItem.post_name=row.my_info.employee_.post_name?row.my_info.employee_.post_name:''; - that.screenUserItem.belong_dept_name=row.my_info.employee_.belong_dept_name?row.my_info.employee_.belong_dept_name:''; + that.screenUserItem.name = row.my_info.employee_.name; + that.screenUserItem.type = row.my_info.employee_.type; + that.screenUserItem.id = row.my_info.employee_.id; + that.screenUserItem.photo = row.my_info.employee_.photo ? row.my_info.employee_.photo : ''; + that.screenUserItem.post_name = row.my_info.employee_.post_name ? row.my_info.employee_.post_name : ''; + that.screenUserItem.belong_dept_name = row.my_info.employee_.belong_dept_name ? row.my_info.employee_.belong_dept_name : ''; }, - userTrack(){ - + //人员追踪 + userTrack() { + this.tracking = true; + window.map.trackMarker(this.userMarker[this.screenUserItem.mac],{ + range:150 + }) + }, + userUnTrack(){ + window.map.cancelTrack(); + this.tracking = false; }, //区域/部门切换 cockpitChange(index) { @@ -2750,6 +2774,7 @@ border-radius: 4px; transition: .5s; z-index: 10; + .drop-content-item { color: #fff; position: relative; diff --git a/src/views/hrm/employee.vue b/src/views/hrm/employee.vue index 15a2bea1..d1791251 100644 --- a/src/views/hrm/employee.vue +++ b/src/views/hrm/employee.vue @@ -48,9 +48,7 @@ > 绑定证书 - + 查看 - + 编辑 - + - + { - this.bltList = res/*.filter(item=>{ - return item.my_info.code === undefined - })*/ + getBltList() { + let that = this; + that.$API.third.tdevice.list.req({type: 30, page: 0}).then(res => { + that.tdevice = res; + that.bltList = res.filter(item => { + return item.employee_ === null + }) + ; + console.log(res); + console.log(that.bltList); }) }, - handleBindBlt(type,row) { + handleBindBlt(type, row) { + this.dis = false; this.bindBltName = row.name; this.form.type = type; this.form.employee = row.id; + if(type===20){ + this.dis = true; + this.form.blt = row.blt_.id; + } this.showBindBlt = true; }, - submitBindBlt(){ - this.$API.third.tdevice.bltBind.req(this.form).then(res=>{ - this.bltList = res.filter(item=>{ - - }) + submitBindBlt() { + let that = this; + that.$API.third.tdevice.bltBind.req(this.form).then(res => { + if(res.err_msg){}else{ + that.showBindBlt = false; + that.$refs.table.refresh(); + } }) }, },