track&bindblt
This commit is contained in:
parent
01084c4f5b
commit
cfd0f4df95
|
@ -119,7 +119,8 @@
|
|||
<div class="item-info">
|
||||
<div title="员工" class="normal">内部员工</div>
|
||||
<div class="bottom">
|
||||
<span class="large">{{userCount.count_employee}}</span> <span class="normal">人</span>
|
||||
<span class="large">{{userCount.count_employee}}</span> <span
|
||||
class="normal">人</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -127,7 +128,8 @@
|
|||
<div class="item-img item-img1"></div>
|
||||
<div class="item-info">
|
||||
<div title="外来人员" class="normal">访客</div>
|
||||
<div class="bottom"><span class="large">{{userCount.count_visitor}}</span> <span class="normal">人</span>
|
||||
<div class="bottom"><span class="large">{{userCount.count_visitor}}</span> <span
|
||||
class="normal">人</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -136,7 +138,8 @@
|
|||
<div class="item-info">
|
||||
<div title="承包商" class="normal">相关方</div>
|
||||
<div class="bottom">
|
||||
<span class="large">{{userCount.count_remployee}}</span> <span class="normal">人</span>
|
||||
<span class="large">{{userCount.count_remployee}}</span> <span
|
||||
class="normal">人</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -488,10 +491,15 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="basic-btn-group">
|
||||
<div class="danger-btn-bg btn-item" @click="userTrack">
|
||||
<div v-if="tracking" class="danger-btn-bg btn-item" @click="userUnTrack">
|
||||
<span class="trackImg"></span>
|
||||
<span>取消跟踪</span>
|
||||
</div>
|
||||
<div v-else class="danger-btn-bg btn-item" @click="userTrack">
|
||||
<span class="trackImg"></span>
|
||||
<span>跟踪</span>
|
||||
</div>
|
||||
|
||||
<div class="simple-btn-bg btn-item">
|
||||
<span class="viewImg"></span>
|
||||
<span>轨迹</span>
|
||||
|
@ -519,7 +527,8 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="岗位">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.my_info.employee_">{{scope.row.my_info.employee_.post_name}}</span>
|
||||
<span
|
||||
v-if="scope.row.my_info.employee_">{{scope.row.my_info.employee_.post_name}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -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_
|
||||
/*setInterval(function () {
|
||||
that.refreshUserMarker();
|
||||
}, 8500)*/
|
||||
},
|
||||
callback: (marker) => {
|
||||
return employee_
|
||||
}
|
||||
//更新人员标记
|
||||
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_
|
||||
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,}
|
||||
});//动画效果,持续时间一秒
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
callback: (marker) => {
|
||||
return employee_
|
||||
//比较两次获取的人数的变动 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;
|
||||
}
|
||||
});
|
||||
that.userMaskerLayer.addMarker(iconTextMarker1);
|
||||
}
|
||||
|
||||
})*/
|
||||
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,6 +1561,7 @@
|
|||
});
|
||||
this.polygonMaskerLayer.addMarker(polygonMarker);
|
||||
},
|
||||
//危险作业图片标记
|
||||
showJobDomMarkers() {
|
||||
let domMarker = new jsmap.JSDomMarker({
|
||||
id: 'polygonmark',
|
||||
|
@ -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;
|
||||
|
|
|
@ -48,9 +48,7 @@
|
|||
></el-table-column>
|
||||
<el-table-column label="部门" prop="belong_dept" width="180">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.belong_dept_">{{
|
||||
scope.row.belong_dept_.name
|
||||
}}</span>
|
||||
<span v-if="scope.row.belong_dept_">{{scope.row.belong_dept_.name}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
|
@ -66,26 +64,23 @@
|
|||
size="small"
|
||||
@click="Addcertificate(scope.row)"
|
||||
>绑定证书
|
||||
</el-button
|
||||
>
|
||||
</el-button>
|
||||
<el-button
|
||||
text
|
||||
type="success"
|
||||
size="small"
|
||||
@click="handleForm('show', scope.row)"
|
||||
>查看
|
||||
</el-button
|
||||
>
|
||||
</el-button>
|
||||
<el-button
|
||||
text
|
||||
type="warning"
|
||||
size="small"
|
||||
@click="handleForm('edit', scope.row)"
|
||||
>编辑
|
||||
</el-button
|
||||
>
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="scope.row.third_info.id"
|
||||
v-if="scope.row.blt_"
|
||||
text
|
||||
type="primary"
|
||||
size="small"
|
||||
|
@ -126,7 +121,7 @@
|
|||
{{bindBltName}}
|
||||
</el-form-item>
|
||||
<el-form-item label="绑定卡号">
|
||||
<el-select v-model="form.blt" style="width: 100%">
|
||||
<el-select v-model="form.blt" style="width: 100%" :disabled="dis">
|
||||
<el-option
|
||||
v-for="item in bltList"
|
||||
:key="item.id"
|
||||
|
@ -159,21 +154,23 @@
|
|||
},
|
||||
apiObj: this.$API.hrm.employee.list,
|
||||
query: {},
|
||||
tdevice: [],
|
||||
selection: [],
|
||||
search: {
|
||||
keyword: null,
|
||||
},
|
||||
dis: false,
|
||||
showBindBlt: false,
|
||||
bltList:[],
|
||||
bindBltName:'',
|
||||
form:{
|
||||
bltList: [],
|
||||
bindBltName: '',
|
||||
form: {
|
||||
type: 10,
|
||||
blt:'',
|
||||
employee:'',
|
||||
blt: '',
|
||||
employee: '',
|
||||
},
|
||||
};
|
||||
},
|
||||
mounted(){
|
||||
mounted() {
|
||||
this.getBltList();
|
||||
},
|
||||
methods: {
|
||||
|
@ -301,24 +298,36 @@
|
|||
resetQuery() {
|
||||
this.query = {};
|
||||
},
|
||||
getBltList(){
|
||||
this.$API.third.tdevice.list.req({type:30,page:0}).then(res=>{
|
||||
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();
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue