Merge branch 'ehs' of https://e.coding.net/ctcdevteam/ehs/ehs_web into ehs
This commit is contained in:
commit
32e3b828b9
|
@ -12,9 +12,38 @@ export default {
|
|||
);
|
||||
}
|
||||
},
|
||||
bltBind: {
|
||||
name: "绑定/解绑定位卡",
|
||||
req: async function(data){
|
||||
return await http.post(
|
||||
`${config.API_URL}/third/tdevice/blt_bind/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
},
|
||||
bltSync: {
|
||||
name: "同步标签mac至平台",
|
||||
req: async function(data){
|
||||
return await http.post(
|
||||
`${config.API_URL}/third/tdevice/blt_sync/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
},
|
||||
blt:{
|
||||
list:{
|
||||
name: "全部在线标签列表信息",
|
||||
req: async function(data){
|
||||
return await http.post(
|
||||
`${config.API_URL}/third/tdevice/blt/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
},
|
||||
all:{
|
||||
name: "全部在线标签列表信息",
|
||||
req: async function(data){
|
||||
|
@ -44,5 +73,14 @@ export default {
|
|||
}
|
||||
|
||||
},
|
||||
thirdLog:{
|
||||
name: "第三方日志",
|
||||
req: async function(data){
|
||||
return await http.get(
|
||||
`${config.API_URL}/third/tlog/`,
|
||||
data
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -528,6 +528,14 @@ const routes = [
|
|||
"icon": "el-icon-menu",
|
||||
},
|
||||
"component": "am/audio"
|
||||
},{
|
||||
"name": "blt",
|
||||
"path": "/am/blt",
|
||||
"meta": {
|
||||
"title": "定位标签",
|
||||
"icon": "el-icon-menu",
|
||||
},
|
||||
"component": "am/blt"
|
||||
},
|
||||
]
|
||||
},
|
||||
|
@ -672,15 +680,15 @@ const routes = [
|
|||
},
|
||||
"component": "ops/log_request"
|
||||
},
|
||||
/*{
|
||||
"name": "monitor",
|
||||
"path": "/ops/monitor",
|
||||
{
|
||||
"name": "thirdLogs",
|
||||
"path": "/ops/thirdLogs",
|
||||
"meta": {
|
||||
"title": "服务监控",
|
||||
"title": "第三方日志",
|
||||
"icon": "el-icon-fold",
|
||||
},
|
||||
"component": "ops/monitor"
|
||||
},*/
|
||||
"component": "ops/thirdLogs"
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
:title="areaName+'围栏设置'"
|
||||
v-model="visible"
|
||||
destroy-on-close
|
||||
:size="'80%'"
|
||||
@closed="closeDrawer"
|
||||
>
|
||||
<el-form
|
||||
|
@ -106,24 +107,6 @@
|
|||
});
|
||||
window.map.openMapById('0000');
|
||||
window.map.on('loadComplete', e => {
|
||||
console.log('Map loadComplete!');
|
||||
var pointMarker = new jsmap.JSPointMarker({
|
||||
color: '#00FF00', //填充颜色
|
||||
size: 10, //尺寸
|
||||
position: new jsmap.JSPoint(114.628074820438, 38.8157131095379, 0), //坐标
|
||||
floorId: 2, //楼层id,默认为1(地面)
|
||||
outlineColor: '#CD5C5C', //边线颜色
|
||||
outlineWidth: 2, //边线宽
|
||||
depthTest: true, //是否开启深度检测
|
||||
show: true, //是否显示
|
||||
allowPicking: true, //是否允许点击
|
||||
displayCondition: new jsmap.JSDisplayCondition(0.0, 1000), //可见范围
|
||||
nearFarScale: new jsmap.JSNearFarScale(0.0, 10.0, 500, 0.5), //比例缩放
|
||||
callback: (node) => {
|
||||
console.log(node);
|
||||
}//回调事件
|
||||
});
|
||||
window.map.addMarker(pointMarker);
|
||||
let drawTool2 = new jsmap.JSDrawToolControl({
|
||||
position: jsmap.JSControlPosition.RIGHT_TOP, //画图工具在容器中的相对位置,当前为右上
|
||||
offset: {
|
||||
|
@ -133,9 +116,9 @@
|
|||
drawMode: jsmap.JSDrawMode.POLYGON, //画图类型POINT:画点 POLYLINE:画线 POLYGON:画面
|
||||
//画图结束的回调,返回所画的面信息
|
||||
callback: (feature) => {
|
||||
console.log('add', feature);
|
||||
/*console.log('add', feature);
|
||||
console.log(feature.properties);//type:POLYGON;id:"";name:"";floorNo:"";floorId:""
|
||||
console.log(feature.geometry);//feature.geometry.coordinates:[[],[]]面数组
|
||||
console.log(feature.geometry);//feature.geometry.coordinates:[[],[]]面数组*/
|
||||
this.coordinates.floorNo = feature.properties.floorNo;
|
||||
this.coordinates.floorId = feature.properties.floorId;
|
||||
that.points = feature.geometry.coordinates[0];
|
||||
|
@ -168,9 +151,7 @@
|
|||
if(points.length>0){
|
||||
that.isSaveing = true;
|
||||
that.coordinates.color = 'rgba(255,0,0,.4)';
|
||||
debugger;
|
||||
points.forEach(item=>{
|
||||
debugger;
|
||||
let coordinate = {x:parseFloat(item[0]),y:parseFloat(item[1])};
|
||||
let pixel = tool.mapToScreenCoordinate(coordinate);
|
||||
pointXY.push(pixel);
|
||||
|
|
|
@ -0,0 +1,87 @@
|
|||
<template>
|
||||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<div class="right-panel-search">
|
||||
<el-button type="primary" icon="el-icon-search" @click="upsearch">同步</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<scTable ref="table" :apiObj="apiObj" row-key="id" @selection-change="selectionChange" stripe @resetQuery="resetQuery" >
|
||||
<el-table-column type="selection" width="50"></el-table-column>
|
||||
<el-table-column label="序号" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="喇叭名称" prop="name" min-width="150"></el-table-column>
|
||||
<el-table-column label="音量" prop="extra" min-width="100">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.extra&&scope.row.extra.player">{{scope.row.extra.player.EnvVolume}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="设备sn" prop="sn" min-width="90"></el-table-column>
|
||||
<el-table-column label="ip" prop="extra" min-width="90">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.extra">{{scope.row.extra.ip}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" prop="extra" min-width="90">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.extra">{{scope.row.extra.online}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--<el-table-column label="位置" prop="count_people" min-width="90"></el-table-column>-->
|
||||
<el-table-column label="所在区域" prop="create_time" min-width="180"></el-table-column>
|
||||
<el-table-column label="覆盖区域" prop="create_time" width="160"></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="center" width="160">
|
||||
<template #default="scope">
|
||||
<el-button-group>
|
||||
<el-button text type="primary" size="small" @click="handlePosition(scope.row)">标记位置</el-button>
|
||||
</el-button-group>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</el-main>
|
||||
</el-container>
|
||||
<channel-view v-if="dialogSave" ref="saveDialog" :channelType="50" :channelCode="channelCode" :channelName="channelName" @closed="dialogSave=false"></channel-view>
|
||||
</template>
|
||||
<script>
|
||||
import channelView from './vchannel_view'
|
||||
export default {
|
||||
name: 'blt',
|
||||
components: {
|
||||
channelView
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
apiObj: this.$API.third.blt.list,
|
||||
dialogSave: false,
|
||||
limitedVisible: false,
|
||||
query: {},
|
||||
selection: [],
|
||||
search: {
|
||||
keyword: null
|
||||
},
|
||||
channelCode:'',
|
||||
channelName:'',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handlePosition(row){
|
||||
this.channelCode = row.sn;
|
||||
this.channelName = row.name;
|
||||
this.dialogSave = true;
|
||||
},
|
||||
//表格选择后回调事件
|
||||
selectionChange(selection){
|
||||
this.selection = selection;
|
||||
},
|
||||
|
||||
//搜索
|
||||
upsearch(){
|
||||
},
|
||||
|
||||
resetQuery(){
|
||||
this.query = {}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -128,24 +128,7 @@
|
|||
});
|
||||
window.map.openMapById('0000');
|
||||
window.map.on('loadComplete', e => {
|
||||
console.log('Map loadComplete!');
|
||||
var pointMarker = new jsmap.JSPointMarker({
|
||||
color: '#00FF00', //填充颜色
|
||||
size: 10, //尺寸
|
||||
position: new jsmap.JSPoint(114.628074820438, 38.8157131095379, 0), //坐标
|
||||
floorId: 2, //楼层id,默认为1(地面)
|
||||
outlineColor: '#CD5C5C', //边线颜色
|
||||
outlineWidth: 2, //边线宽
|
||||
depthTest: true, //是否开启深度检测
|
||||
show: true, //是否显示
|
||||
allowPicking: true, //是否允许点击
|
||||
displayCondition: new jsmap.JSDisplayCondition(0.0, 1000), //可见范围
|
||||
nearFarScale: new jsmap.JSNearFarScale(0.0, 10.0, 500, 0.5), //比例缩放
|
||||
callback: (node) => {
|
||||
console.log(node);
|
||||
}//回调事件
|
||||
});
|
||||
window.map.addMarker(pointMarker);
|
||||
// console.log('Map loadComplete!');
|
||||
var drawTool = new jsmap.JSDrawToolControl({
|
||||
position: jsmap.JSControlPosition.RIGHT_TOP, //画图工具在容器中的相对位置,当前为右上
|
||||
offset: {
|
||||
|
@ -156,12 +139,10 @@
|
|||
|
||||
//画图结束的回调,返回所画的点的信息
|
||||
callback: (feature) => {
|
||||
debugger;
|
||||
console.log('add', feature);
|
||||
console.log(feature.properties);//type:POINT;id:"";name:"";floorNo:"";floorId:""
|
||||
console.log(feature.geometry);//type:POINT;coordinates:[114.63028499839209,38.81195080123784,0]
|
||||
//console.log('add', feature);
|
||||
//console.log(feature.properties);//type:POINT;id:"";name:"";floorNo:"";floorId:""
|
||||
//console.log(feature.geometry);//type:POINT;coordinates:[114.63028499839209,38.81195080123784,0]
|
||||
this.form.location = feature.geometry.coordinates;
|
||||
debugger;
|
||||
},
|
||||
//移除相应点的回调,返回相应点信息
|
||||
removeCallback: (feature) => {
|
||||
|
@ -196,7 +177,7 @@
|
|||
submit() {
|
||||
let that = this;
|
||||
let item = this.form.location;
|
||||
console.log(this.form.location);
|
||||
//console.log(this.form.location);
|
||||
that.form.code = that.channelCode;
|
||||
that.form.type = that.channelType;
|
||||
that.form.name = that.channelName;
|
||||
|
|
|
@ -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>
|
||||
|
@ -824,6 +833,7 @@
|
|||
userMaskerLayer: null,
|
||||
jobDomMarkerLayer: null,
|
||||
riskMarkerLayer: null,//风险区域
|
||||
areaMarkerLayer: null,//区域展示
|
||||
pointMarkerLayer: null,//点位图层
|
||||
polygonMaskerLayer: null,//危险作业
|
||||
cameraMaskerLayer: null,//摄像头
|
||||
|
@ -831,10 +841,12 @@
|
|||
carsMaskerLayer: null,//车辆
|
||||
manMaskerLayer: null,//人员
|
||||
flyManager: null,
|
||||
eareMarker: null,
|
||||
dropIndex: '1',
|
||||
countIndex: '2',
|
||||
markList: [false, false, false, false, false, false, false],
|
||||
autoRun: false,
|
||||
tracking: false,
|
||||
areaDetail: false,
|
||||
screenJob: false,
|
||||
screenUser: false,
|
||||
|
@ -845,13 +857,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,6 +915,7 @@
|
|||
mark: '1',
|
||||
},
|
||||
LBType: '1',
|
||||
userMarker: {},
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
@ -952,6 +965,8 @@
|
|||
this.polygonMarkerLayers();//危险作业
|
||||
this.speakersMaskerLayers();//喇叭
|
||||
this.jobDomMarkerLayers();//危险作业图片
|
||||
this.areaMarkerLayers();//危险作业图片
|
||||
|
||||
let compassControl = new jsmap.JSCompassControl({
|
||||
position: jsmap.JSControlPosition.LEFT_TOP,
|
||||
offset: {
|
||||
|
@ -968,7 +983,6 @@
|
|||
}
|
||||
});
|
||||
window.map.addControl(zoomControl);
|
||||
// this.pointMaskerLayers();//点
|
||||
});
|
||||
window.map.on('mapClickNode', event => {
|
||||
let item = event;
|
||||
|
@ -1050,6 +1064,10 @@
|
|||
//人员
|
||||
that.screenUserItem = item.properties.get("employee");
|
||||
that.screenUser = true;
|
||||
debugger;
|
||||
window.map.flyToMarker(that.userMarker[that.screenUserItem.mac],{
|
||||
duration:1000
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1062,13 +1080,6 @@
|
|||
} else {
|
||||
}
|
||||
});
|
||||
/*
|
||||
* <div class="v_title" style="width: 327px;height: 45px;padding: 10px 0;font-size: 16px;font-weight: 700;color: #fff;position: relative;padding-left: 8px;display: flex;justify-content: space-between">
|
||||
<div>`+event.markers[0].text+`</div><div style="width: 16px;height: 16px;background: url(.//public/img/close.png) no-repeat;background-size: 100% 100%;" @click="closeVideo"></div>
|
||||
</div>
|
||||
<div class="v_masker" style="width: 327px;height: 183px;background: url(.//public/img/v_mask.png) no-repeat;background-size: 100% 100%;" @click="playVideo()"></div>
|
||||
<div id="`+event.markers[0].id+`"></div>
|
||||
* */
|
||||
//左侧数据统计
|
||||
this.getManCount();//人员统计$$
|
||||
this.getWarnings();//报警统计$$
|
||||
|
@ -1082,58 +1093,94 @@
|
|||
this.getAllMen();//人员
|
||||
this.getAllPost();//岗位
|
||||
setInterval(function () {
|
||||
/*this.getManCount();//人员统计$$
|
||||
this.getWarnings();//报警统计$$
|
||||
this.getAreas();//区域*/
|
||||
},3000)
|
||||
|
||||
}, 3000)
|
||||
|
||||
},
|
||||
methods: {
|
||||
areaRowClick(){
|
||||
this.areaDetail = true;
|
||||
areaRowClick(data) {
|
||||
let that = this;
|
||||
that.areaDetail = true;
|
||||
// let points = data.third_info.xx_rail.detail.polygon.points[0];
|
||||
window.map.flyToPosition(new jsmap.JSPoint(114.63168864138028, 38.81254802029822, 0),{duration:1000});
|
||||
|
||||
/*debugger;
|
||||
let tool = new jsmap.JSMapCoordTool(map);
|
||||
let points = data.third_info.xx_rail.detail.polygon.points;
|
||||
let position = [];*/
|
||||
/*for(let i=0;i<points.length;i++){
|
||||
let item = tool.screenToMapCoordinate(points[i]);
|
||||
// let item = new jsmap.JSPoint(points[i].x, points[i].y, 0);
|
||||
position.push(item);
|
||||
}*/
|
||||
/*window.map.flyToPosition ({x: points[0].x, y: points[0].y, z:0},{
|
||||
duration:1000,
|
||||
offset:{
|
||||
rotate: 45,
|
||||
tilt: 60,
|
||||
range: 100
|
||||
}
|
||||
}*/
|
||||
/*that.eareMarker = new jsmap.JSPolygonMarker({
|
||||
id: data.id,//id
|
||||
position: [
|
||||
new jsmap.JSPoint(114.63168864138028, 38.81254802029822, 0),
|
||||
new jsmap.JSPoint(114.63185023632963, 38.81241816295427, 0),
|
||||
new jsmap.JSPoint(114.63160294240738, 38.812229296478634,0),
|
||||
new jsmap.JSPoint(114.63143965827588, 38.81235778393449, 0),
|
||||
|
||||
],//坐标集合
|
||||
// position:position,//坐标集合
|
||||
floorId: 1,//楼层id
|
||||
color: 'rgba(0,0,255,.44)',//填充颜色
|
||||
strokeColor: '#2bff1d',//边线颜色
|
||||
depthTest: false,//是否开启深度检测
|
||||
displayCondition: new jsmap.JSDisplayCondition(0.0, 1000), //可见范围
|
||||
});
|
||||
that.areaMarkerLayer.addMarker(that.eareMarker);*/
|
||||
},
|
||||
//岗位
|
||||
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 {
|
||||
|
@ -1181,17 +1228,18 @@
|
|||
},
|
||||
//获取人员列表(全部在线标签列表信息)
|
||||
getAllMen() {
|
||||
this.$API.third.blt.all.req().then(res => {
|
||||
let that = this;
|
||||
that.$API.third.blt.all.req().then(res => {
|
||||
if (res.err_msg) {
|
||||
} else {
|
||||
this.userList = res.filter(item => {
|
||||
that.userList = res.filter(item => {
|
||||
return item.my_info.employee
|
||||
});
|
||||
// console.log(this.userList)
|
||||
that.showUserMarkers(that.userList);
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCurrentChange(){
|
||||
handleCurrentChange() {
|
||||
this.getWarnings();
|
||||
},
|
||||
//获取报警列表
|
||||
|
@ -1229,7 +1277,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;
|
||||
})
|
||||
|
@ -1239,12 +1287,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() {
|
||||
|
@ -1290,6 +1338,16 @@
|
|||
window.map.addLayer(that.jobDomMarkerLayer);
|
||||
that.showJobDomMarkers();
|
||||
},
|
||||
//点击区域显示图层
|
||||
areaMarkerLayers() {
|
||||
let that = this;
|
||||
that.areaMarkerLayer = new jsmap.JSDomMarkerLayer({
|
||||
minimumLevel: 3,
|
||||
maxmumLevel: 22,
|
||||
show: true
|
||||
});
|
||||
window.map.addLayer(that.areaMarkerLayer);
|
||||
},
|
||||
//员工标记layer
|
||||
userMaskerLayers() {//图标文字
|
||||
let that = this;
|
||||
|
@ -1299,6 +1357,7 @@
|
|||
show: false
|
||||
});
|
||||
window.map.addLayer(that.userMaskerLayer);
|
||||
that.getAllMen();
|
||||
},
|
||||
//喇叭layer
|
||||
speakersMaskerLayers() {//消防物资
|
||||
|
@ -1423,14 +1482,21 @@
|
|||
})
|
||||
},
|
||||
//人员
|
||||
showUserMarkers() {
|
||||
showUserMarkers(userList) {
|
||||
|
||||
let that = this;
|
||||
let iconTextMarker = null;
|
||||
if(that.userList.length>0){
|
||||
let employee_ = that.userList[0].my_info.employee_;
|
||||
iconTextMarker = new jsmap.JSIconTextMarker({
|
||||
id: that.userList[0].my_info.code,
|
||||
position: {x: 114.6315404372349, y: 38.813557855009435, z: 0}, //坐标
|
||||
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: userList[0].my_info.code,
|
||||
position: {x: 114.62923138539462, y: 38.8133418942645, z: 0}, //坐标
|
||||
floorId: 1, //楼层id,默认为1(地面)
|
||||
image: "/img/user.png",
|
||||
text: employee_.name,
|
||||
|
@ -1450,128 +1516,73 @@
|
|||
properties: {
|
||||
employee: employee_
|
||||
},
|
||||
callback: (marker) => {
|
||||
return employee_
|
||||
}
|
||||
});
|
||||
|
||||
that.userMaskerLayer.addMarker(iconTextMarker);
|
||||
setTimeout(function () {
|
||||
console.log(that.userMaskerLayer);
|
||||
that.userMaskerLayer.updateMarkerPosition(iconTextMarker,{
|
||||
floorId:1,
|
||||
position: {x:114.62923138539462, y:38.8133418942642, z:0},
|
||||
animate: true
|
||||
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: 10000,}
|
||||
});//动画效果,持续时间一秒
|
||||
},3000);
|
||||
setTimeout(function () {
|
||||
console.log(that.userMaskerLayer);
|
||||
that.userMaskerLayer.updateMarkerPosition(iconTextMarker,{
|
||||
floorId:1,
|
||||
position: {x:114.6315404372349, y: 38.813557855009435, z:0},
|
||||
animate: true
|
||||
});//动画效果,持续时间一秒
|
||||
},6000);
|
||||
debugger;
|
||||
/*let employee_1 = that.userList[1].my_info.employee_;
|
||||
iconTextMarker1 = new jsmap.JSIconTextMarker({
|
||||
id: that.userList[1].my_info.code,
|
||||
position: {x: 114.62923138539462, y: 38.8133418942642, z: 0}, //坐标
|
||||
floorId: 1, //楼层id,默认为1(地面)
|
||||
image: "/img/user.png",
|
||||
text: employee_1.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_1
|
||||
},
|
||||
callback: (marker) => {
|
||||
return employee_1
|
||||
}
|
||||
});
|
||||
that.userMaskerLayer.addMarker(iconTextMarker1);
|
||||
setTimeout(function () {
|
||||
that.userMaskerLayer.updateMarkerPosition(jsmap.JSIconTextMarker,{
|
||||
floorId:1,
|
||||
position: {x:114.6315404372349, y:38.813557855009435, z:0},
|
||||
animate: true
|
||||
});//动画效果,持续时间一秒
|
||||
|
||||
},3000)*/
|
||||
}else{
|
||||
},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() {
|
||||
|
@ -1599,9 +1610,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,
|
||||
|
@ -1737,17 +1749,7 @@
|
|||
that.riskMarkerLayer.show = false;
|
||||
}
|
||||
if (that.markList[6]) {
|
||||
that.$API.third.blt.all.req().then(res => {
|
||||
if (res.err_msg) {
|
||||
} else {
|
||||
that.userMaskerLayer.show = true;
|
||||
that.userList = res.filter(item=>{
|
||||
return item.my_info.code
|
||||
});
|
||||
// this.showUserMarkers();
|
||||
that.showUserMarkers();
|
||||
}
|
||||
})
|
||||
that.userMaskerLayer.show = true;
|
||||
} else {
|
||||
that.userMaskerLayer.show = false;
|
||||
}
|
||||
|
@ -1801,19 +1803,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) {
|
||||
|
@ -2813,6 +2823,7 @@
|
|||
border-radius: 4px;
|
||||
transition: .5s;
|
||||
z-index: 10;
|
||||
|
||||
.drop-content-item {
|
||||
color: #fff;
|
||||
position: relative;
|
||||
|
|
|
@ -1,247 +1,335 @@
|
|||
<template>
|
||||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="handleForm('add')"
|
||||
></el-button>
|
||||
<!--
|
||||
<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
|
||||
<el-button type="primary" plain :disabled="selection.length!=1" @click="permission">权限设置</el-button> -->
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<div class="right-panel-search">
|
||||
<el-input
|
||||
v-model="search.keyword"
|
||||
placeholder="姓名/手机号"
|
||||
clearable
|
||||
@click="upsearch"
|
||||
></el-input>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
@click="upsearch"
|
||||
></el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<scTable
|
||||
ref="table"
|
||||
:apiObj="apiObj"
|
||||
row-key="id"
|
||||
@selection-change="selectionChange"
|
||||
stripe
|
||||
@resetQuery="resetQuery"
|
||||
>
|
||||
<el-table-column type="selection" width="50"></el-table-column>
|
||||
<el-table-column label="#" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="姓名" prop="name" width="150"></el-table-column>
|
||||
<el-table-column label="证件照" prop="photo" width="200">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="手机号"
|
||||
prop="phone"
|
||||
width="120"
|
||||
></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>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
prop="create_time"
|
||||
width="180"
|
||||
></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="left" width="170">
|
||||
<template #default="scope">
|
||||
<el-button-group>
|
||||
<el-button
|
||||
text
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="Addcertificate(scope.row)"
|
||||
>绑定证书</el-button
|
||||
>
|
||||
<el-button
|
||||
text
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="handleForm('show', scope.row)"
|
||||
>查看</el-button
|
||||
>
|
||||
<el-button
|
||||
text
|
||||
type="warning"
|
||||
size="small"
|
||||
@click="handleForm('edit', scope.row)"
|
||||
>编辑</el-button
|
||||
>
|
||||
<!-- <el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
|
||||
<template #reference>
|
||||
<el-button text type="danger" size="small">删除</el-button>
|
||||
</template>
|
||||
</el-popconfirm> -->
|
||||
</el-button-group>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</el-main>
|
||||
</el-container>
|
||||
<save-dialog
|
||||
v-if="dialog.save"
|
||||
ref="saveDialog"
|
||||
@success="handleSaveSuccess"
|
||||
@closed="dialog.save = false"
|
||||
></save-dialog>
|
||||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="handleForm('add')"
|
||||
></el-button>
|
||||
<!--
|
||||
<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
|
||||
<el-button type="primary" plain :disabled="selection.length!=1" @click="permission">权限设置</el-button> -->
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<div class="right-panel-search">
|
||||
<el-input
|
||||
v-model="search.keyword"
|
||||
placeholder="姓名/手机号"
|
||||
clearable
|
||||
@click="upsearch"
|
||||
></el-input>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
@click="upsearch"
|
||||
></el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<scTable
|
||||
ref="table"
|
||||
:apiObj="apiObj"
|
||||
row-key="id"
|
||||
@selection-change="selectionChange"
|
||||
stripe
|
||||
@resetQuery="resetQuery"
|
||||
>
|
||||
<el-table-column type="selection" width="50"></el-table-column>
|
||||
<el-table-column label="#" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="姓名" prop="name" width="150"></el-table-column>
|
||||
<el-table-column label="证件照" prop="photo" width="200">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="手机号"
|
||||
prop="phone"
|
||||
width="120"
|
||||
></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>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
prop="create_time"
|
||||
width="180"
|
||||
></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="left" width="170">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
text
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="Addcertificate(scope.row)"
|
||||
>绑定证书
|
||||
</el-button>
|
||||
<el-button
|
||||
text
|
||||
type="success"
|
||||
size="small"
|
||||
@click="handleForm('show', scope.row)"
|
||||
>查看
|
||||
</el-button>
|
||||
<el-button
|
||||
text
|
||||
type="warning"
|
||||
size="small"
|
||||
@click="handleForm('edit', scope.row)"
|
||||
>编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="scope.row.blt_"
|
||||
text
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="handleBindBlt(20, scope.row)"
|
||||
>解绑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-else
|
||||
text
|
||||
type="primary"
|
||||
size="small"
|
||||
@click="handleBindBlt(10, scope.row)"
|
||||
>绑定
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</el-main>
|
||||
</el-container>
|
||||
<save-dialog
|
||||
v-if="dialog.save"
|
||||
ref="saveDialog"
|
||||
@success="handleSaveSuccess"
|
||||
@closed="dialog.save = false"
|
||||
></save-dialog>
|
||||
<el-Dialog
|
||||
title="绑定定位卡"
|
||||
v-model="showBindBlt"
|
||||
destroy-on-close
|
||||
@closed="closeDrawer"
|
||||
>
|
||||
<el-form
|
||||
ref="dialogForm"
|
||||
:model="form"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-form-item label="姓名">
|
||||
{{bindBltName}}
|
||||
</el-form-item>
|
||||
<el-form-item label="绑定卡号">
|
||||
<el-select v-model="form.blt" style="width: 100%" :disabled="dis">
|
||||
<el-option
|
||||
v-for="item in bltList"
|
||||
:key="item.id"
|
||||
:label="item.id"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button v-if="form.type===10" type="primary" @click="submitBindBlt">绑定</el-button>
|
||||
<el-button v-if="form.type===20" type="primary" @click="submitBindBlt">解绑</el-button>
|
||||
<el-button @click="showBindBlt = false">取消</el-button>
|
||||
</template>
|
||||
</el-Dialog>
|
||||
</template>
|
||||
<script>
|
||||
import saveDialog from "./ep_form.vue";
|
||||
export default {
|
||||
name: "employee",
|
||||
components: {
|
||||
saveDialog,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialog: {
|
||||
save: false,
|
||||
permission: false,
|
||||
},
|
||||
apiObj: this.$API.hrm.employee.list,
|
||||
query: {},
|
||||
selection: [],
|
||||
search: {
|
||||
keyword: null,
|
||||
},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
//人员证书添加
|
||||
Addcertificate(row) {
|
||||
this.$router.push({
|
||||
name: "certificate",
|
||||
query: {
|
||||
id: row.id,
|
||||
},
|
||||
});
|
||||
},
|
||||
//添加
|
||||
handleForm(type, row) {
|
||||
this.dialog.save = true;
|
||||
this.$nextTick(() => {
|
||||
if (type === "add") {
|
||||
this.$refs.saveDialog.open(type);
|
||||
} else {
|
||||
this.$refs.saveDialog.open(type).setData(row);
|
||||
}
|
||||
});
|
||||
},
|
||||
<script>
|
||||
import saveDialog from "./ep_form.vue";
|
||||
|
||||
/*//添加
|
||||
add(){
|
||||
this.dialog.save = true
|
||||
export default {
|
||||
name: "employee",
|
||||
components: {
|
||||
saveDialog,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialog: {
|
||||
save: false,
|
||||
permission: false,
|
||||
},
|
||||
apiObj: this.$API.hrm.employee.list,
|
||||
query: {},
|
||||
tdevice: [],
|
||||
selection: [],
|
||||
search: {
|
||||
keyword: null,
|
||||
},
|
||||
dis: false,
|
||||
showBindBlt: false,
|
||||
bltList: [],
|
||||
bindBltName: '',
|
||||
form: {
|
||||
type: 10,
|
||||
blt: '',
|
||||
employee: '',
|
||||
},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.getBltList();
|
||||
},
|
||||
methods: {
|
||||
//人员证书添加
|
||||
Addcertificate(row) {
|
||||
this.$router.push({
|
||||
name: "certificate",
|
||||
query: {
|
||||
id: row.id,
|
||||
},
|
||||
});
|
||||
},
|
||||
//添加
|
||||
handleForm(type, row) {
|
||||
this.dialog.save = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.saveDialog.open('add')
|
||||
if (type === "add") {
|
||||
this.$refs.saveDialog.open(type);
|
||||
} else {
|
||||
this.$refs.saveDialog.open(type).setData(row);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/*//添加
|
||||
add(){
|
||||
this.dialog.save = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.saveDialog.open('add')
|
||||
})
|
||||
},
|
||||
//编辑
|
||||
table_edit(row){
|
||||
this.dialog.save = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.saveDialog.open('edit').setData(row)
|
||||
})
|
||||
},
|
||||
//查看
|
||||
table_show(row){
|
||||
this.dialog.save = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.saveDialog.open('show').setData(row)
|
||||
})
|
||||
},*/
|
||||
//权限设置
|
||||
permission() {
|
||||
this.dialog.permission = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.permissionDialog.open();
|
||||
});
|
||||
},
|
||||
//删除
|
||||
async table_del(row) {
|
||||
await this.$API.hrm.employee.create.req(row.id).then((res) => {
|
||||
if (res.err_msg) {
|
||||
this.$message.error(res.err_msg);
|
||||
} else {
|
||||
this.$refs.table.refresh();
|
||||
this.$message.success("删除成功");
|
||||
}
|
||||
});
|
||||
},
|
||||
//批量删除
|
||||
async batch_del() {
|
||||
this.$confirm(
|
||||
`确定删除选中的 ${this.selection.length} 项吗?如果删除项中含有子集将会被一并删除`,
|
||||
"提示",
|
||||
{
|
||||
type: "warning",
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
const loading = this.$loading();
|
||||
this.$refs.table.refresh();
|
||||
loading.close();
|
||||
this.$message.success("操作成功");
|
||||
})
|
||||
.catch(() => {
|
||||
});
|
||||
},
|
||||
//表格选择后回调事件
|
||||
selectionChange(selection) {
|
||||
this.selection = selection;
|
||||
},
|
||||
//表格内开关
|
||||
changeSwitch(val, row) {
|
||||
row.status = row.status == "1" ? "0" : "1";
|
||||
row.$switch_status = true;
|
||||
setTimeout(() => {
|
||||
delete row.$switch_status;
|
||||
row.status = val;
|
||||
this.$message.success("操作成功");
|
||||
}, 500);
|
||||
},
|
||||
//搜索
|
||||
upsearch() {
|
||||
},
|
||||
//根据ID获取树结构
|
||||
filterTree(id) {
|
||||
var target = null;
|
||||
|
||||
function filter(tree) {
|
||||
tree.forEach((item) => {
|
||||
if (item.id == id) {
|
||||
target = item;
|
||||
}
|
||||
if (item.children) {
|
||||
filter(item.children);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
filter(this.$refs.table.tableData);
|
||||
return target;
|
||||
},
|
||||
//本地更新数据
|
||||
handleSaveSuccess(data, mode) {
|
||||
if (mode == "add") {
|
||||
this.$refs.table.refresh();
|
||||
} else if (mode == "edit") {
|
||||
this.$refs.table.refresh();
|
||||
}
|
||||
},
|
||||
resetQuery() {
|
||||
this.query = {};
|
||||
},
|
||||
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);
|
||||
})
|
||||
},
|
||||
//编辑
|
||||
table_edit(row){
|
||||
this.dialog.save = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.saveDialog.open('edit').setData(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() {
|
||||
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();
|
||||
}
|
||||
})
|
||||
},
|
||||
//查看
|
||||
table_show(row){
|
||||
this.dialog.save = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.saveDialog.open('show').setData(row)
|
||||
})
|
||||
},*/
|
||||
//权限设置
|
||||
permission() {
|
||||
this.dialog.permission = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.permissionDialog.open();
|
||||
});
|
||||
},
|
||||
//删除
|
||||
async table_del(row) {
|
||||
await this.$API.hrm.employee.create.req(row.id).then((res) => {
|
||||
if (res.err_msg) {
|
||||
this.$message.error(res.err_msg);
|
||||
} else {
|
||||
this.$refs.table.refresh();
|
||||
this.$message.success("删除成功");
|
||||
}
|
||||
});
|
||||
},
|
||||
//批量删除
|
||||
async batch_del() {
|
||||
this.$confirm(
|
||||
`确定删除选中的 ${this.selection.length} 项吗?如果删除项中含有子集将会被一并删除`,
|
||||
"提示",
|
||||
{
|
||||
type: "warning",
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
const loading = this.$loading();
|
||||
this.$refs.table.refresh();
|
||||
loading.close();
|
||||
this.$message.success("操作成功");
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
//表格选择后回调事件
|
||||
selectionChange(selection) {
|
||||
this.selection = selection;
|
||||
},
|
||||
//表格内开关
|
||||
changeSwitch(val, row) {
|
||||
row.status = row.status == "1" ? "0" : "1";
|
||||
row.$switch_status = true;
|
||||
setTimeout(() => {
|
||||
delete row.$switch_status;
|
||||
row.status = val;
|
||||
this.$message.success("操作成功");
|
||||
}, 500);
|
||||
},
|
||||
//搜索
|
||||
upsearch() {},
|
||||
//根据ID获取树结构
|
||||
filterTree(id) {
|
||||
var target = null;
|
||||
function filter(tree) {
|
||||
tree.forEach((item) => {
|
||||
if (item.id == id) {
|
||||
target = item;
|
||||
}
|
||||
if (item.children) {
|
||||
filter(item.children);
|
||||
}
|
||||
});
|
||||
}
|
||||
filter(this.$refs.table.tableData);
|
||||
return target;
|
||||
},
|
||||
//本地更新数据
|
||||
handleSaveSuccess(data, mode) {
|
||||
if (mode == "add") {
|
||||
this.$refs.table.refresh();
|
||||
} else if (mode == "edit") {
|
||||
this.$refs.table.refresh();
|
||||
}
|
||||
},
|
||||
resetQuery() {
|
||||
this.query = {};
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -3,7 +3,9 @@
|
|||
<el-descriptions :column="1" border size="small">
|
||||
<el-descriptions-item label="请求接口">{{data.path}}</el-descriptions-item>
|
||||
<el-descriptions-item label="请求方法">{{data.method}}</el-descriptions-item>
|
||||
<el-descriptions-item label="状态代码">{{data.status_code}}</el-descriptions-item>
|
||||
<el-descriptions-item v-if="data.target" label="target">{{data.target}}</el-descriptions-item>
|
||||
<el-descriptions-item v-if="data.result" label="状态代码">{{data.result}}</el-descriptions-item>
|
||||
<el-descriptions-item v-if="data.status_code" label="状态代码">{{data.status_code}}</el-descriptions-item>
|
||||
<el-descriptions-item label="日志id">{{data.id}}</el-descriptions-item>
|
||||
<el-descriptions-item label="日志时间">{{data.requested_at}}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
@ -32,15 +34,17 @@
|
|||
methods: {
|
||||
setData(data){
|
||||
this.data = data;
|
||||
// debugger;
|
||||
console.log(data);
|
||||
let dataStr = '';
|
||||
for (let i in data) {
|
||||
let X = i + ':' + data[i]+'<br>';
|
||||
let X='';
|
||||
if(typeof data[i] ==='object'){
|
||||
let temp =JSON.stringify(data[i]);
|
||||
X ='<span style="color: #43e669;margin-right: 6px;">'+i+'</span>'+ ':' + temp+'<br>';
|
||||
}else{
|
||||
X ='<span style="color: #43e669;margin-right: 6px;">'+i+'</span>'+ ':' + data[i]+'<br>';
|
||||
}
|
||||
dataStr += X;
|
||||
console.log(i);
|
||||
}
|
||||
console.log(dataStr);
|
||||
this.dataStr = dataStr;
|
||||
document.getElementById("logDetail").innerHTML = dataStr;
|
||||
}
|
||||
|
@ -50,7 +54,7 @@
|
|||
|
||||
<style scoped>
|
||||
.code {
|
||||
background: #848484;
|
||||
background: #0F0F0F;
|
||||
padding:15px;
|
||||
color: #fff;
|
||||
font-size: 12px;
|
||||
|
|
|
@ -11,16 +11,25 @@
|
|||
<el-main class="nopadding">
|
||||
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe highlightCurrentRow @row-click="rowClick">
|
||||
<el-table-column label="#" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="id" prop="id" min-width="250"></el-table-column>
|
||||
<el-table-column label="method" prop="method" min-width="80"></el-table-column>
|
||||
<el-table-column label="id" prop="id" min-width="200"></el-table-column>
|
||||
<el-table-column label="路径" prop="path" min-width="150"></el-table-column>
|
||||
<el-table-column label="view" prop="view" min-width="150"></el-table-column>
|
||||
<el-table-column label="method" prop="method" min-width="150"></el-table-column>
|
||||
|
||||
<el-table-column label="状态码" prop="status_code" min-width="80">
|
||||
<template #default="scope">
|
||||
<el-tag class="ml-2" type="success" v-if="scope.row.status_code>=200&&scope.row.status_code<300">{{scope.row.status_code}}</el-tag>
|
||||
<el-tag class="ml-2" type="warning" v-if="scope.row.status_code>=400&&scope.row.status_code<500">{{scope.row.status_code}}</el-tag>
|
||||
<el-tag class="ml-2" type="danger" v-if="scope.row.status_code>=500">{{scope.row.status_code}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作时间" prop="requested_at" min-width="150"></el-table-column>
|
||||
<el-table-column label="操作" align="center" width="100">
|
||||
<el-button type="text" size="small">查看详情</el-button>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</el-main>
|
||||
<el-drawer v-model="infoDrawer" title="日志详情" :size="600" destroy-on-close>
|
||||
<el-drawer v-model="infoDrawer" title="日志详情" :size="'50%'" destroy-on-close>
|
||||
<logInfo ref="logInfo"></logInfo>
|
||||
</el-drawer>
|
||||
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
<template>
|
||||
<el-container>
|
||||
<el-header>
|
||||
<div class="left-panel">
|
||||
<div class="right-panel-search">
|
||||
<el-input v-model="search.id" placeholder="logId" clearable></el-input>
|
||||
<el-button type="primary" icon="el-icon-search" @click="getSearch"></el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe highlightCurrentRow @row-click="rowClick">
|
||||
<el-table-column label="#" type="index" width="50"></el-table-column>
|
||||
<el-table-column label="method" prop="method" min-width="80"></el-table-column>
|
||||
<el-table-column label="id" prop="id" min-width="200"></el-table-column>
|
||||
<el-table-column label="路径" prop="path" min-width="150"></el-table-column>
|
||||
<el-table-column label="target" prop="target" min-width="80"></el-table-column>
|
||||
<el-table-column label="状态" prop="status_code" min-width="80">
|
||||
<template #default="scope">
|
||||
<el-tag class="ml-2" type="success" v-if="scope.row.result==='success'">成功</el-tag>
|
||||
<el-tag class="ml-2" type="warning" v-if="scope.row.result==='fail'">报错</el-tag>
|
||||
<el-tag class="ml-2" type="danger" v-if="scope.row.result==='error'">失败</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作时间" prop="requested_at" min-width="150"></el-table-column>
|
||||
<el-table-column label="操作" align="center" width="100">
|
||||
<el-button type="text" size="small">查看详情</el-button>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</el-main>
|
||||
<el-drawer v-model="infoDrawer" title="日志详情" :size="'50%'" destroy-on-close>
|
||||
<logInfo ref="logInfo"></logInfo>
|
||||
</el-drawer>
|
||||
|
||||
</el-container>
|
||||
</template>
|
||||
<script>
|
||||
import logInfo from './logInfo'
|
||||
export default {
|
||||
name: 'thirdLogs',
|
||||
components: {
|
||||
logInfo
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
apiObj: this.$API.third.thirdLog,
|
||||
search:{
|
||||
id:null,
|
||||
},
|
||||
logLists:[],
|
||||
infoDrawer:false,
|
||||
logDetailVisible:false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
getSearch(){
|
||||
this.$refs.table.reload(this.search);
|
||||
},
|
||||
rowClick(row){
|
||||
this.infoDrawer = true;
|
||||
this.$nextTick(() => {
|
||||
this.$refs.logInfo.setData(row)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.treeMain {height:280px;overflow: auto;border: 1px solid #dcdfe6;margin-bottom: 10px;}
|
||||
</style>
|
Loading…
Reference in New Issue