Merge branch 'ehs' of https://e.coding.net/ctcdevteam/ehs/ehs_web into ehs
This commit is contained in:
commit
219047e8a6
|
@ -6,7 +6,7 @@
|
|||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= VUE_APP_TITLE %></title>
|
||||
<script src="./jsmap/jsmap.js"> </script>
|
||||
<!-- <script src="./jsmap/jsmap.js"> </script> -->
|
||||
<link type="text/css" href="./jsmap/jsmap.css" rel="stylesheet"/>
|
||||
<script type="text/javascript">
|
||||
document.write("<script src='config.js?"+new Date().getTime()+"'><\/script>");
|
||||
|
|
|
@ -11,6 +11,22 @@ export default {
|
|||
}
|
||||
}
|
||||
},
|
||||
dbbackup: {
|
||||
list: {
|
||||
url: `${config.API_URL}/monitor/dbbackup/`,
|
||||
name: "数据库备份",
|
||||
req: async function(data){
|
||||
return await http.get(this.url, data);
|
||||
}
|
||||
},
|
||||
deletes: {
|
||||
url: `${config.API_URL}/monitor/dbbackup/`,
|
||||
name: "数据库备份",
|
||||
req: async function(data){
|
||||
return await http.delete(this.url, data);
|
||||
}
|
||||
}
|
||||
},
|
||||
file_logs: {
|
||||
list: {
|
||||
url: `${config.API_URL}/monitor/log/`,
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -310,12 +310,43 @@ export default {
|
|||
areaPoints:[],
|
||||
areaFloorId:1,
|
||||
cate_: { post: "岗位", org: "单位", people: "人员" },
|
||||
canUseMap:false,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
let that = this;
|
||||
let host = window.location.host;
|
||||
let jsUrl = host.indexOf('localhost')>-1?'http://222.222.144.147:6013/jsmap/jsmap.js':host+'/jsmap/jsmap.js';
|
||||
that.loadScript('mapId',jsUrl, () => {
|
||||
that.canUseMap = true;
|
||||
})
|
||||
// this.getAccessList();
|
||||
},
|
||||
methods: {
|
||||
loadScript(id, url, callback) {
|
||||
debugger;
|
||||
//如果已经存在这个id,则证明已经加载过,已经有这个js文件了,可以直接执行回调里面的操作
|
||||
if (document.querySelector(`#${id}`)) {
|
||||
callback && callback()
|
||||
return;
|
||||
}
|
||||
//第一次加载,先创建 script 标签
|
||||
const script = document.createElement('script');
|
||||
script.src = url;
|
||||
//创建id属性
|
||||
script.setAttribute('id', id);
|
||||
//获取第一个script标签
|
||||
const firstScript = document.getElementsByTagName('script')[0];
|
||||
//获取第一个script标签的父节点 BODY,在body的第一个script引用之前插入,即把这个动态的js文件放在第一个调用
|
||||
firstScript.parentNode.insertBefore(script, firstScript);
|
||||
//script 一加载就执行
|
||||
script.onload = script.onreadystatechange = function() {
|
||||
// 加载完成
|
||||
if (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete') {
|
||||
callback && callback()
|
||||
}
|
||||
};
|
||||
},
|
||||
//添加/编辑区域
|
||||
handleForm(type, row) {
|
||||
this.dialog.save = true;
|
||||
|
@ -358,7 +389,12 @@ export default {
|
|||
}
|
||||
this.areaId = row.id;
|
||||
this.areaName = row.name;
|
||||
this.dialog.saveRail = true;
|
||||
if(this.canUseMap){
|
||||
this.dialog.saveRail = true;
|
||||
}else{
|
||||
this.$message("地图组件加载中,请稍后")
|
||||
}
|
||||
|
||||
},
|
||||
//删除区域
|
||||
handleDel(row) {
|
||||
|
|
|
@ -5,17 +5,6 @@
|
|||
<el-button type="primary" icon="el-icon-refresh" @click="syncData" :syncLoading="syncLoading">同步</el-button>
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<!-- <el-input
|
||||
v-model="query.code"
|
||||
placeholder="编号"
|
||||
clearable
|
||||
@click="handleQuery"
|
||||
></el-input>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
@click="handleQuery"
|
||||
></el-button> -->
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
|
@ -96,11 +85,44 @@ export default {
|
|||
channelName: "",
|
||||
channelArea: '',
|
||||
channelAreas: [],
|
||||
canUseMap:false
|
||||
};
|
||||
},
|
||||
mounted(){
|
||||
let that = this;
|
||||
let host = window.location.host;
|
||||
let jsUrl = host.indexOf('localhost')>-1?'http://222.222.144.147:6013/jsmap/jsmap.js':host+'/jsmap/jsmap.js';
|
||||
that.loadScript('mapId',jsUrl, () => {
|
||||
that.canUseMap = true;
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
loadScript(id, url, callback) {
|
||||
debugger;
|
||||
//如果已经存在这个id,则证明已经加载过,已经有这个js文件了,可以直接执行回调里面的操作
|
||||
if (document.querySelector(`#${id}`)) {
|
||||
callback && callback()
|
||||
return;
|
||||
}
|
||||
//第一次加载,先创建 script 标签
|
||||
const script = document.createElement('script');
|
||||
script.src = url;
|
||||
//创建id属性
|
||||
script.setAttribute('id', id);
|
||||
//获取第一个script标签
|
||||
const firstScript = document.getElementsByTagName('script')[0];
|
||||
//获取第一个script标签的父节点 BODY,在body的第一个script引用之前插入,即把这个动态的js文件放在第一个调用
|
||||
firstScript.parentNode.insertBefore(script, firstScript);
|
||||
//script 一加载就执行
|
||||
script.onload = script.onreadystatechange = function() {
|
||||
// 加载完成
|
||||
if (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete') {
|
||||
callback && callback()
|
||||
}
|
||||
};
|
||||
},
|
||||
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;
|
||||
|
@ -108,7 +130,11 @@ export default {
|
|||
this.channelAreas = row.my_info.areas ? row.my_info.areas : [];
|
||||
this.channelLocation = row.my_info.location ? row.my_info.location : {};
|
||||
this.channelName = row.name;
|
||||
this.dialogSave = true;
|
||||
if(this.canUseMap){
|
||||
this.dialogSave = true;
|
||||
}else{
|
||||
this.$message("地图组件加载中,请稍后")
|
||||
}
|
||||
}else{
|
||||
this.$message.error("请先完成设备同步");
|
||||
}
|
||||
|
|
|
@ -148,6 +148,7 @@ export default {
|
|||
2: "球机",
|
||||
3: "半球",
|
||||
},
|
||||
canUseMap:false,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
|
@ -159,8 +160,38 @@ export default {
|
|||
},
|
||||
mounted(){
|
||||
this.getArea();
|
||||
let that = this;
|
||||
let host = window.location.host;
|
||||
let jsUrl = host.indexOf('localhost')>-1?'http://222.222.144.147:6013/jsmap/jsmap.js':host+'/jsmap/jsmap.js';
|
||||
that.loadScript('mapId',jsUrl, () => {
|
||||
that.canUseMap = true;
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
loadScript(id, url, callback) {
|
||||
debugger;
|
||||
//如果已经存在这个id,则证明已经加载过,已经有这个js文件了,可以直接执行回调里面的操作
|
||||
if (document.querySelector(`#${id}`)) {
|
||||
callback && callback()
|
||||
return;
|
||||
}
|
||||
//第一次加载,先创建 script 标签
|
||||
const script = document.createElement('script');
|
||||
script.src = url;
|
||||
//创建id属性
|
||||
script.setAttribute('id', id);
|
||||
//获取第一个script标签
|
||||
const firstScript = document.getElementsByTagName('script')[0];
|
||||
//获取第一个script标签的父节点 BODY,在body的第一个script引用之前插入,即把这个动态的js文件放在第一个调用
|
||||
firstScript.parentNode.insertBefore(script, firstScript);
|
||||
//script 一加载就执行
|
||||
script.onload = script.onreadystatechange = function() {
|
||||
// 加载完成
|
||||
if (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete') {
|
||||
callback && callback()
|
||||
}
|
||||
};
|
||||
},
|
||||
getAllVchannel(){
|
||||
debugger;
|
||||
this.$API.am.video.list.req({pageSize:999}).then(res=>{
|
||||
|
@ -175,20 +206,6 @@ export default {
|
|||
that.channelCode = row.channelCode;
|
||||
that.channelName = row.channelName;
|
||||
that.limitedVisible = true;
|
||||
|
||||
// that.$API.am.video.item.req(this.params).then((res) => {
|
||||
// this.url = res.url;
|
||||
// if (flvjs.isSupported()) {
|
||||
// let videoElement = document.getElementById("videoElement");
|
||||
// that.flvPlayer = flvjs.createPlayer({
|
||||
// type: "flv",
|
||||
// url: res.url,
|
||||
// });
|
||||
// that.flvPlayer.attachMediaElement(videoElement);
|
||||
// that.flvPlayer.load();
|
||||
// that.flvPlayer.play();
|
||||
// }
|
||||
// });
|
||||
},
|
||||
viewClose() {
|
||||
this.limitedVisible = false;
|
||||
|
@ -208,7 +225,12 @@ export default {
|
|||
this.channelAreas = row.my_info.areas ? row.my_info.areas : [];
|
||||
this.channelLocation = row.my_info.location ? row.my_info.location : {};
|
||||
this.channelName = row.channelName;
|
||||
this.dialogSave = true;
|
||||
if(this.canUseMap){
|
||||
this.dialogSave = true;
|
||||
}else{
|
||||
this.$message("地图组件加载中,请稍后")
|
||||
}
|
||||
|
||||
}else{
|
||||
this.$message.error("请先完成设备同步");
|
||||
}
|
||||
|
|
|
@ -773,7 +773,7 @@ export default {
|
|||
audioList:{},
|
||||
employeeScroll:0,
|
||||
searchKeyWord:'',
|
||||
|
||||
ElLoading:null
|
||||
}
|
||||
},
|
||||
// created() {
|
||||
|
@ -793,198 +793,204 @@ export default {
|
|||
that.timerTime = setInterval(() => {
|
||||
that.showTime();
|
||||
}, 1000);
|
||||
window.map = new jsmap.JSMap({
|
||||
mapType: jsmap.JSMapType.MAP_3D,
|
||||
container: 'mapContainer',
|
||||
mapServerURL: 'data/map',
|
||||
enableShadows: false, //是否开启阴影 默认false
|
||||
enableLighting: false, //是否开发光照 默认false
|
||||
showBuildingMarker: true,
|
||||
// showNavigationDisplay: true,
|
||||
mapScaleLevelRange: [16, 23],//比例尺级别范围, 16级到23级,默认[1,24]
|
||||
floorControlOptions: {
|
||||
floorHeight: 20,//楼层间距
|
||||
position: jsmap.JSControlPosition.RIGHT_TOP,//控件位置
|
||||
offset: {
|
||||
x: 50,
|
||||
y: 200,
|
||||
}//控件偏移位置
|
||||
},
|
||||
imageryProvider: jsmap.JSImageryProviderType.IMAGE_TDT,
|
||||
backgroundColor: '#3798ff', //背景颜色
|
||||
viewOptions: {
|
||||
//屏幕中心坐标
|
||||
center: { x: 114.63059258861512, y: 38.81407163905287, z: 1 },
|
||||
// center: {x:120,y:30,z:10},
|
||||
//相机距屏幕中心点距离(单位m)
|
||||
distance: 550,
|
||||
// 旋转角(单位°)
|
||||
rotate: 0,
|
||||
//倾斜角(单位°)
|
||||
tilt: 45,
|
||||
}
|
||||
});
|
||||
window.map.openMapById('0000');
|
||||
window.map.on('loadComplete', e => {
|
||||
that.riskMaskerLayers();//风险区域
|
||||
that.userMaskerLayers();//人员
|
||||
that.cameraMaskerLayers();//摄像头
|
||||
that.domMarkerLayers();//监控视频
|
||||
that.polygonMarkerLayers();//危险作业
|
||||
that.speakersMaskerLayers();//喇叭
|
||||
// that.jobDomMarkerLayers();//危险作业图片
|
||||
that.areaMarkerLayers();//危险作业图片
|
||||
let compassControl = new jsmap.JSCompassControl({
|
||||
position: jsmap.JSControlPosition.LEFT_TOP,
|
||||
offset: {
|
||||
x: 420,
|
||||
y: 50
|
||||
let host = window.location.host;
|
||||
// let jsUrl = host.indexOf('localhost')>-1?'http://222.222.144.147:6013/jsmap/jsmap.js':host+'/jsmap/jsmap.js';
|
||||
let jsUrl = '/jsmap/jsmap.js';
|
||||
that.loadScript('mapId',jsUrl, () => {
|
||||
window.map = new jsmap.JSMap({
|
||||
mapType: jsmap.JSMapType.MAP_3D,
|
||||
container: 'mapContainer',
|
||||
mapServerURL: 'data/map',
|
||||
enableShadows: false, //是否开启阴影 默认false
|
||||
enableLighting: false, //是否开发光照 默认false
|
||||
showBuildingMarker: true,
|
||||
// showNavigationDisplay: true,
|
||||
mapScaleLevelRange: [16, 23],//比例尺级别范围, 16级到23级,默认[1,24]
|
||||
floorControlOptions: {
|
||||
floorHeight: 20,//楼层间距
|
||||
position: jsmap.JSControlPosition.RIGHT_TOP,//控件位置
|
||||
offset: {
|
||||
x: 50,
|
||||
y: 200,
|
||||
}//控件偏移位置
|
||||
},
|
||||
imageryProvider: jsmap.JSImageryProviderType.IMAGE_TDT,
|
||||
backgroundColor: '#3798ff', //背景颜色
|
||||
viewOptions: {
|
||||
//屏幕中心坐标
|
||||
center: { x: 114.63059258861512, y: 38.81407163905287, z: 1 },
|
||||
// center: {x:120,y:30,z:10},
|
||||
//相机距屏幕中心点距离(单位m)
|
||||
distance: 550,
|
||||
// 旋转角(单位°)
|
||||
rotate: 0,
|
||||
//倾斜角(单位°)
|
||||
tilt: 45,
|
||||
}
|
||||
});
|
||||
window.map.addControl(compassControl);
|
||||
let zoomControl = new jsmap.JSZoomControl({
|
||||
position: jsmap.JSControlPosition.LEFT_TOP,
|
||||
offset: {
|
||||
x: 450,
|
||||
y: 5
|
||||
}
|
||||
});
|
||||
window.map.addControl(zoomControl);
|
||||
});
|
||||
window.map.on('mapClickNode', event => {
|
||||
let item = event;
|
||||
let that = this;
|
||||
let type = event.nodeType.toString();
|
||||
console.log(type === 'Symbol(icontextmaker)');
|
||||
if (item.markers.length > 0) {
|
||||
if (type === 'Symbol(boxmarker)') {
|
||||
let areaId = item.properties.get("areaId");
|
||||
console.log(areaId);
|
||||
that.$API.am.area.item.req(areaId).then(res=>{
|
||||
that.areaItemDetail = res;
|
||||
that.screenJob = false;
|
||||
that.screenWarning = false;
|
||||
that.screenRisk = true;
|
||||
})
|
||||
//风险区域
|
||||
} else if (type === 'Symbol(icontextmaker)') {
|
||||
//摄像头和人员
|
||||
if (document.getElementById(item.markers[0].id) === null) {
|
||||
if (item.markers[0].image === "/img/camera.svg") {
|
||||
//摄像头
|
||||
this.params.json.data.channelId = item.markers[0].id;
|
||||
let domMarker = new jsmap.JSDomMarker({
|
||||
id: item.markers[0].id + 'mark',
|
||||
position: new jsmap.JSPoint(item.markers[0].position.x, item.markers[0].position.y, 0),
|
||||
floorId: 1,
|
||||
depthTest: true,
|
||||
content: `<div id="` + item.markers[0].id + `" style="display: block;position:absolute;z-index: 10;top: 0;background: rgba(24,36,51,.7);padding: 0 16px 16px;box-sizing: border-box" id="vchannelWrap"></div>`,
|
||||
offset: jsmap.JSControlPosition.RIGHT_CENTER,
|
||||
displayCondition: new jsmap.JSDisplayCondition(0.0, 1000),
|
||||
marginOffset: {
|
||||
x: 30,
|
||||
y: -50
|
||||
},
|
||||
properties: {
|
||||
type: 0,
|
||||
},
|
||||
callback: (node) => {
|
||||
console.log(node);
|
||||
}
|
||||
});
|
||||
this.domMarkerLayer.addMarker(domMarker);
|
||||
var otest = document.getElementById(item.markers[0].id);
|
||||
// 创建一个新dom,并设置icon,绑定点击事件
|
||||
let newEle = document.createElement("div");
|
||||
newEle.className = "v_title";
|
||||
newEle.setAttribute("style", "display:flex;justify-content: space-between;padding:10px 0");
|
||||
let title = document.createElement("div");
|
||||
title.innerText = "实时监控";
|
||||
newEle.style.color = "#ffffff";
|
||||
let close = document.createElement("div");
|
||||
close.className = "v_close";
|
||||
close.setAttribute("style", "width: 16px;height: 16px;background: url(/img/close.png) no-repeat;background-size: 100% 100%;");
|
||||
newEle.appendChild(title);
|
||||
newEle.appendChild(close);
|
||||
let newEle2 = document.createElement("video");
|
||||
newEle2.id = item.markers[0].id + 'videoPlayer';
|
||||
newEle2.setAttribute("style", "width: 327px;height:183px;background:url('/img/v_mask.png') no-repeat;background-size: 100% 100%;");
|
||||
// 在对应dom 下追加创建的dom
|
||||
otest.appendChild(newEle);
|
||||
otest.appendChild(newEle2);
|
||||
newEle2.onclick = () => {
|
||||
newEle2.setAttribute("style", "width: 327px;height:183px;background:url(/img/rotate_line.png) no-repeat;background-size:60px 60px;background-position:center center;");
|
||||
this.$API.am.video.item.req(this.params).then(res => {
|
||||
console.log(res);
|
||||
this.url = res.url;
|
||||
let URLS = res.url.replace('192.168.10.253',sysConfig.VUE_APP_VIDEOHOST);
|
||||
if (flvjs.isSupported()) {
|
||||
let videoElement = document.getElementById(item.markers[0].id + 'videoPlayer');
|
||||
var mediaDataSource = {
|
||||
type: 'flv',
|
||||
hasAudio:false,
|
||||
hasVideo:true,
|
||||
isLive:false,
|
||||
withCredentials:false,
|
||||
url:URLS
|
||||
};
|
||||
let flvPlayer = flvjs.createPlayer(mediaDataSource, {
|
||||
enableWorker: false,
|
||||
lazyLoadMaxDuration: 3 * 60,
|
||||
seekType: 'range',
|
||||
});
|
||||
flvPlayer.attachMediaElement(videoElement);
|
||||
newEle2.setAttribute("style", "width: 327px;height:183px;background:url(/img/rotate_line.png) no-repeat;background-size:60px 60px;background-position:center center;");
|
||||
flvPlayer.load();
|
||||
}
|
||||
})
|
||||
};
|
||||
close.onclick = () => {
|
||||
let nodeMark = document.getElementById(item.markers[0].id);
|
||||
nodeMark.remove();
|
||||
}
|
||||
} else {
|
||||
//人员
|
||||
that.screenUserItem = item.properties.get("employee");
|
||||
that.screenUser = true;
|
||||
// debugger;
|
||||
window.map.flyToMarker(that.userMarker[that.screenUserItem.mac], {
|
||||
duration: 1000,
|
||||
range: 200
|
||||
})
|
||||
}
|
||||
window.map.openMapById('0000');
|
||||
window.map.on('loadComplete', e => {
|
||||
that.riskMaskerLayers();//风险区域
|
||||
that.userMaskerLayers();//人员
|
||||
that.cameraMaskerLayers();//摄像头
|
||||
that.domMarkerLayers();//监控视频
|
||||
that.polygonMarkerLayers();//危险作业
|
||||
that.speakersMaskerLayers();//喇叭
|
||||
// that.jobDomMarkerLayers();//危险作业图片
|
||||
that.areaMarkerLayers();//危险作业图片
|
||||
let compassControl = new jsmap.JSCompassControl({
|
||||
position: jsmap.JSControlPosition.LEFT_TOP,
|
||||
offset: {
|
||||
x: 420,
|
||||
y: 50
|
||||
}
|
||||
} else if (type === 'Symbol(polygonmarker)') {
|
||||
//危险作业
|
||||
that.screenRisk = false;
|
||||
that.screenWarning = false;
|
||||
that.areaDetailId = item.properties.get("area");
|
||||
let areaWork = that.areaList.filter(area=>{
|
||||
return area.id==that.areaDetailId
|
||||
});
|
||||
|
||||
that.areaRowClick(areaWork[0]);
|
||||
});
|
||||
window.map.addControl(compassControl);
|
||||
let zoomControl = new jsmap.JSZoomControl({
|
||||
position: jsmap.JSControlPosition.LEFT_TOP,
|
||||
offset: {
|
||||
x: 450,
|
||||
y: 5
|
||||
}
|
||||
});
|
||||
window.map.addControl(zoomControl);
|
||||
});
|
||||
window.map.on('mapClickNode', event => {
|
||||
let item = event;
|
||||
let that = this;
|
||||
let type = event.nodeType.toString();
|
||||
console.log(type === 'Symbol(icontextmaker)');
|
||||
if (item.markers.length > 0) {
|
||||
if (type === 'Symbol(boxmarker)') {
|
||||
let areaId = item.properties.get("areaId");
|
||||
console.log(areaId);
|
||||
that.$API.am.area.item.req(areaId).then(res=>{
|
||||
that.areaItemDetail = res;
|
||||
that.screenJob = false;
|
||||
that.screenWarning = false;
|
||||
that.screenRisk = true;
|
||||
})
|
||||
//风险区域
|
||||
} else if (type === 'Symbol(icontextmaker)') {
|
||||
//摄像头和人员
|
||||
if (document.getElementById(item.markers[0].id) === null) {
|
||||
if (item.markers[0].image === "/img/camera.svg") {
|
||||
//摄像头
|
||||
this.params.json.data.channelId = item.markers[0].id;
|
||||
let domMarker = new jsmap.JSDomMarker({
|
||||
id: item.markers[0].id + 'mark',
|
||||
position: new jsmap.JSPoint(item.markers[0].position.x, item.markers[0].position.y, 0),
|
||||
floorId: 1,
|
||||
depthTest: true,
|
||||
content: `<div id="` + item.markers[0].id + `" style="display: block;position:absolute;z-index: 10;top: 0;background: rgba(24,36,51,.7);padding: 0 16px 16px;box-sizing: border-box" id="vchannelWrap"></div>`,
|
||||
offset: jsmap.JSControlPosition.RIGHT_CENTER,
|
||||
displayCondition: new jsmap.JSDisplayCondition(0.0, 1000),
|
||||
marginOffset: {
|
||||
x: 30,
|
||||
y: -50
|
||||
},
|
||||
properties: {
|
||||
type: 0,
|
||||
},
|
||||
callback: (node) => {
|
||||
console.log(node);
|
||||
}
|
||||
});
|
||||
this.domMarkerLayer.addMarker(domMarker);
|
||||
var otest = document.getElementById(item.markers[0].id);
|
||||
// 创建一个新dom,并设置icon,绑定点击事件
|
||||
let newEle = document.createElement("div");
|
||||
newEle.className = "v_title";
|
||||
newEle.setAttribute("style", "display:flex;justify-content: space-between;padding:10px 0");
|
||||
let title = document.createElement("div");
|
||||
title.innerText = "实时监控";
|
||||
newEle.style.color = "#ffffff";
|
||||
let close = document.createElement("div");
|
||||
close.className = "v_close";
|
||||
close.setAttribute("style", "width: 16px;height: 16px;background: url(/img/close.png) no-repeat;background-size: 100% 100%;");
|
||||
newEle.appendChild(title);
|
||||
newEle.appendChild(close);
|
||||
let newEle2 = document.createElement("video");
|
||||
newEle2.id = item.markers[0].id + 'videoPlayer';
|
||||
newEle2.setAttribute("style", "width: 327px;height:183px;background:url('/img/v_mask.png') no-repeat;background-size: 100% 100%;");
|
||||
// 在对应dom 下追加创建的dom
|
||||
otest.appendChild(newEle);
|
||||
otest.appendChild(newEle2);
|
||||
newEle2.onclick = () => {
|
||||
newEle2.setAttribute("style", "width: 327px;height:183px;background:url(/img/rotate_line.png) no-repeat;background-size:60px 60px;background-position:center center;");
|
||||
this.$API.am.video.item.req(this.params).then(res => {
|
||||
console.log(res);
|
||||
this.url = res.url;
|
||||
let URLS = res.url.replace('192.168.10.253',sysConfig.VUE_APP_VIDEOHOST);
|
||||
if (flvjs.isSupported()) {
|
||||
let videoElement = document.getElementById(item.markers[0].id + 'videoPlayer');
|
||||
var mediaDataSource = {
|
||||
type: 'flv',
|
||||
hasAudio:false,
|
||||
hasVideo:true,
|
||||
isLive:false,
|
||||
withCredentials:false,
|
||||
url:URLS
|
||||
};
|
||||
let flvPlayer = flvjs.createPlayer(mediaDataSource, {
|
||||
enableWorker: false,
|
||||
lazyLoadMaxDuration: 3 * 60,
|
||||
seekType: 'range',
|
||||
});
|
||||
flvPlayer.attachMediaElement(videoElement);
|
||||
newEle2.setAttribute("style", "width: 327px;height:183px;background:url(/img/rotate_line.png) no-repeat;background-size:60px 60px;background-position:center center;");
|
||||
flvPlayer.load();
|
||||
}
|
||||
})
|
||||
};
|
||||
close.onclick = () => {
|
||||
let nodeMark = document.getElementById(item.markers[0].id);
|
||||
nodeMark.remove();
|
||||
}
|
||||
} else {
|
||||
//人员
|
||||
that.screenUserItem = item.properties.get("employee");
|
||||
that.screenUser = true;
|
||||
// debugger;
|
||||
window.map.flyToMarker(that.userMarker[that.screenUserItem.mac], {
|
||||
duration: 1000,
|
||||
range: 200
|
||||
})
|
||||
}
|
||||
}
|
||||
} else if (type === 'Symbol(polygonmarker)') {
|
||||
//危险作业
|
||||
that.screenRisk = false;
|
||||
that.screenWarning = false;
|
||||
that.areaDetailId = item.properties.get("area");
|
||||
let areaWork = that.areaList.filter(area=>{
|
||||
return area.id==that.areaDetailId
|
||||
});
|
||||
|
||||
that.areaRowClick(areaWork[0]);
|
||||
}
|
||||
} else {
|
||||
}
|
||||
} else {
|
||||
}
|
||||
});
|
||||
//左侧数据统计
|
||||
this.getManCount();//人员统计$$
|
||||
this.getWarnings();//报警统计$$
|
||||
this.getAreaList();//区域/风险区域$$
|
||||
this.getGroup();//部门$$
|
||||
//右上展示数据
|
||||
this.getWarningTotal();//事件统计
|
||||
this.getWarningType();//事件类型
|
||||
let pageHeight = document.getElementsByClassName('screen-cockpit')[0].clientHeight;
|
||||
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;
|
||||
// debugger;
|
||||
let domHeight = pageHeight - height1 - 310 - 84;
|
||||
let areaTableHeight = domHeight - height3 - 50;
|
||||
this.areaTableHeight = areaTableHeight;
|
||||
document.getElementsByClassName('cockpit-info')[0].style.height = domHeight + 'px';
|
||||
});
|
||||
|
||||
})
|
||||
//左侧数据统计
|
||||
this.getManCount();//人员统计$$
|
||||
this.getWarnings();//报警统计$$
|
||||
this.getAreaList();//区域/风险区域$$
|
||||
this.getGroup();//部门$$
|
||||
//右上展示数据
|
||||
this.getWarningTotal();//事件统计
|
||||
this.getWarningType();//事件类型
|
||||
let pageHeight = document.getElementsByClassName('screen-cockpit')[0].clientHeight;
|
||||
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;
|
||||
// debugger;
|
||||
let domHeight = pageHeight - height1 - 310 - 84;
|
||||
let areaTableHeight = domHeight - height3 - 50;
|
||||
this.areaTableHeight = areaTableHeight;
|
||||
document.getElementsByClassName('cockpit-info')[0].style.height = domHeight + 'px';
|
||||
// document.getElementsByClassName('area-info-body')[0].style.height = simpleBodyHeight + 'px';
|
||||
},
|
||||
computed:{
|
||||
|
@ -1007,6 +1013,43 @@ export default {
|
|||
clearInterval(this.eventAudioTimer)//事件
|
||||
},
|
||||
methods: {
|
||||
loadScript(id, url, callback) {
|
||||
debugger;
|
||||
let that = this;
|
||||
//如果已经存在这个id,则证明已经加载过,已经有这个js文件了,可以直接执行回调里面的操作
|
||||
if (document.querySelector(`#${id}`)) {
|
||||
that.ElLoading = null;
|
||||
callback && callback()
|
||||
return;
|
||||
}else{
|
||||
that.ElLoading = this.$loading({
|
||||
lock: true,
|
||||
text: '地图资源加载中...',
|
||||
background: 'rgba(0, 0, 0, 0)',
|
||||
})
|
||||
}
|
||||
|
||||
//第一次加载,先创建 script 标签
|
||||
const script = document.createElement('script');
|
||||
script.src = url;
|
||||
//创建id属性
|
||||
script.setAttribute('id', id);
|
||||
//获取第一个script标签
|
||||
const firstScript = document.getElementsByTagName('script')[0];
|
||||
//获取第一个script标签的父节点 BODY,在body的第一个script引用之前插入,即把这个动态的js文件放在第一个调用
|
||||
firstScript.parentNode.insertBefore(script, firstScript);
|
||||
//script 一加载就执行
|
||||
script.onload = script.onreadystatechange = function() {
|
||||
that.ElLoading.close();
|
||||
// that.ElLoading = null;
|
||||
|
||||
// 加载完成
|
||||
if (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete') {
|
||||
callback && callback()
|
||||
|
||||
}
|
||||
};
|
||||
},
|
||||
//查询某个人员
|
||||
searchOne(keyword){
|
||||
let that = this;
|
||||
|
@ -1034,13 +1077,8 @@ export default {
|
|||
},
|
||||
handleChange(item, check,item2,item3) {
|
||||
let that = this;
|
||||
// debugger;
|
||||
// console.log(check)
|
||||
|
||||
this.deptChecked = check.checkedKeys;
|
||||
this.userParams.depts = check.checkedKeys;
|
||||
// that.userMaskerLayer.removeAllIconTextMark();
|
||||
// this.refreshUserMarker();
|
||||
},
|
||||
//人员类型选择
|
||||
userFilter() {
|
||||
|
@ -1055,19 +1093,14 @@ export default {
|
|||
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;
|
||||
},
|
||||
//
|
||||
audioFinished(){
|
||||
|
@ -1136,14 +1169,14 @@ export default {
|
|||
if(item.id==that.audioList.id){
|
||||
}else{
|
||||
that.audioList = item;
|
||||
that.audioSrc=item.voice_f;
|
||||
that.audioSrc=item.voice;
|
||||
if(item.location){
|
||||
window.map.flyToPosition(new jsmap.JSPoint(item.location.longitude, item.location.latitude), { range: 200,duration: 1000 });
|
||||
}
|
||||
}
|
||||
}else{
|
||||
that.audioList = item;
|
||||
that.audioSrc = item.voice_f;
|
||||
that.audioSrc = item.voice;
|
||||
that.music.play();//播放
|
||||
}
|
||||
}
|
||||
|
@ -2244,7 +2277,6 @@ export default {
|
|||
},
|
||||
speakerPlay(){
|
||||
this.speakerPlayStatus = true;
|
||||
// this.music.src = this.warningData.list[0].voice_f;
|
||||
this.music.play();//播放
|
||||
},
|
||||
},
|
||||
|
@ -2289,6 +2321,14 @@ export default {
|
|||
background: rgba(48, 255, 220, 0.35);
|
||||
}
|
||||
|
||||
.el-loading-spinner .el-loading-text{
|
||||
color: #Ffa500;
|
||||
}
|
||||
|
||||
.el-loading-spinner .path{
|
||||
stroke: #Ffa500;
|
||||
}
|
||||
|
||||
.el-radio.el-radio--small .el-radio__label {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
@ -3792,6 +3832,7 @@ export default {
|
|||
#mapContainer {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #49a1ff;
|
||||
}
|
||||
|
||||
#bigScreenUserTable {
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
<el-table-column label="事件标记" prop="mark">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.mark == 20" type="warning" effect="plain">误报</el-tag>
|
||||
<el-tag v-else type="success" effect="plain">正常</el-tag>
|
||||
<el-tag v-else type="success" effect="plain">正确</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="处理超时">
|
||||
|
|
|
@ -261,7 +261,11 @@ export default {
|
|||
});
|
||||
},
|
||||
onSubmit() {
|
||||
this.$API.ecm.event.handle.req(this.form.id, this.form).then((res) => {
|
||||
let params = {};
|
||||
params.mark = this.form.mark;
|
||||
params.handle_desc = this.form.handle_desc;
|
||||
|
||||
this.$API.ecm.event.handle.req(this.form.id, params).then((res) => {
|
||||
this.$emit("success");
|
||||
this.$message.success("操作成功");
|
||||
return res;
|
||||
|
|
|
@ -39,7 +39,8 @@
|
|||
</div>
|
||||
-->
|
||||
<div class="login-oauth">
|
||||
<el-button type="success" @click="appDown">安卓APP</el-button>
|
||||
<el-button type="success" @click="appDown" style="background-color:#2cd4f9;border-color:#2cd4f9">安卓APP</el-button>
|
||||
<el-button type="primary" @click="MonitorOpen" style="background-color:orange;border-color:orange">监控视频</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -61,7 +62,8 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import passwordForm from './components/passwordForm'
|
||||
import { Monitor } from '@element-plus/icons-vue'
|
||||
import passwordForm from './components/passwordForm'
|
||||
import phoneForm from './components/phoneForm'
|
||||
|
||||
export default {
|
||||
|
@ -122,6 +124,9 @@
|
|||
appDown() {
|
||||
this.showApp = true;
|
||||
},
|
||||
MonitorOpen(){
|
||||
window.open('http://10.99.5.79:5515/')
|
||||
},
|
||||
configDark(){
|
||||
this.config.dark = this.config.dark ? false : true
|
||||
},
|
||||
|
|
|
@ -48,6 +48,41 @@
|
|||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-card>
|
||||
<scTable
|
||||
ref="table"
|
||||
:apiObj="apiObj"
|
||||
row-key="id"
|
||||
stripe
|
||||
highlightCurrentRow
|
||||
hidePagination
|
||||
@resetQuery="resetQuery"
|
||||
>
|
||||
<el-table-column label="#" type="index" width="50"></el-table-column>
|
||||
<el-table-column
|
||||
label="文件地址"
|
||||
prop="filepath"
|
||||
min-width="200"
|
||||
></el-table-column>
|
||||
<el-table-column
|
||||
label="大小(MB)"
|
||||
prop="size"
|
||||
min-width="150"
|
||||
></el-table-column>
|
||||
<el-table-column label="操作" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<el-popconfirm
|
||||
title="确定删除吗?"
|
||||
@confirm="table_del(scope.row, scope.$index)"
|
||||
>
|
||||
<template #reference>
|
||||
<el-button type="danger" size="small">删除</el-button>
|
||||
</template>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</scTable>
|
||||
</el-card>
|
||||
</el-main>
|
||||
</el-container>
|
||||
</template>
|
||||
|
@ -59,6 +94,8 @@ export default {
|
|||
cpuData: {},
|
||||
diskData: {},
|
||||
memoryData: {},
|
||||
apiObj: this.$API.ops.dbbackup.list,
|
||||
query: {},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
|
@ -79,6 +116,22 @@ export default {
|
|||
this.loading = false;
|
||||
});
|
||||
},
|
||||
resetQuery() {
|
||||
this.query = {};
|
||||
},
|
||||
//删除
|
||||
async table_del(row) {
|
||||
this.$API.ops.dbbackup.deletes
|
||||
.req({filepaths: [row.filepath]})
|
||||
.then((res) => {
|
||||
this.$message.success("删除成功");
|
||||
this.$refs.table.refresh();
|
||||
return res;
|
||||
})
|
||||
.catch((err) => {
|
||||
return err;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
|
@ -128,7 +128,7 @@
|
|||
hidePagination
|
||||
hideDo
|
||||
stripe
|
||||
style="height: 300px"
|
||||
style="height: 680px"
|
||||
>
|
||||
<el-table-column
|
||||
label="#"
|
||||
|
@ -224,7 +224,7 @@
|
|||
hidePagination
|
||||
hideDo
|
||||
stripe
|
||||
style="height: 300px"
|
||||
style="height: 680px"
|
||||
>
|
||||
<el-table-column
|
||||
label="#"
|
||||
|
@ -636,8 +636,9 @@ export default {
|
|||
//提交,创建工单
|
||||
submitTicketCreate(id) {
|
||||
let ticket = {};
|
||||
ticket.title = this.rpjform.name;
|
||||
ticket.workflow = this.initForm.workflow;
|
||||
ticket.ticket_data = { rpj: this.rpjId };
|
||||
ticket.ticket_data = { rpj: this.rpjId ,name:this.rpjform.name};
|
||||
ticket.transition = id;
|
||||
this.$API.wf.ticket.create.req(ticket).then((res) => {
|
||||
this.$message.success("提交成功");
|
||||
|
|
|
@ -130,7 +130,7 @@
|
|||
link
|
||||
size="small"
|
||||
@click="formSetting(scope.row)"
|
||||
v-auth="'user.create'"
|
||||
v-auth="'user.update'"
|
||||
>
|
||||
设置
|
||||
</el-button>
|
||||
|
|
|
@ -90,7 +90,7 @@
|
|||
<el-table-column
|
||||
label="来访单位"
|
||||
prop="company"
|
||||
min-width="180"
|
||||
min-width="220"
|
||||
fixed="left"
|
||||
></el-table-column>
|
||||
<el-table-column label="项目状态" prop="state" min-width="80">
|
||||
|
|
|
@ -244,7 +244,7 @@
|
|||
</el-col>
|
||||
<el-col :md="12" :sm="12" :xs="24">
|
||||
<el-form-item label="来源地" prop="come_place">
|
||||
<el-input v-model="formpeople.come_place" type="text" clearable></el-input>
|
||||
<sc-address :Address="formpeople.come_place" @selectedAddress="selectedAddress"></sc-address>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :md="12" :sm="12" :xs="24">
|
||||
|
@ -252,6 +252,11 @@
|
|||
<el-input v-model="formpeople.trip_desc" type="text" clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :md="12" :sm="12" :xs="24">
|
||||
<el-form-item label="详细地址" prop="come_place_detail">
|
||||
<el-input v-model="formpeople.come_place_detail" type="text" clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :md="12" :sm="12" :xs="24">
|
||||
<el-form-item label="管控措施" prop="measure">
|
||||
<el-select v-model="formpeople.measure" style="width:100%" placeholder="选择来访事由">
|
||||
|
@ -340,6 +345,7 @@
|
|||
</style>
|
||||
<script>
|
||||
import { genTree } from "@/utils/verificate";
|
||||
import scAddress from "@/components/scAddress/SelectAddress.vue";
|
||||
|
||||
const defaultformworker = {
|
||||
duty: "",
|
||||
|
@ -348,6 +354,9 @@ const defaultformworker = {
|
|||
};
|
||||
export default {
|
||||
name: "vistoradd",
|
||||
components:{
|
||||
scAddress
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
measureOptions: ['集中隔离','居家隔离','居家健康检测','排除风险'],
|
||||
|
@ -367,6 +376,7 @@ export default {
|
|||
search: {
|
||||
keyword: null,
|
||||
},
|
||||
come_place:'',
|
||||
dialog: {
|
||||
save: false,
|
||||
permission: false,
|
||||
|
@ -382,6 +392,7 @@ export default {
|
|||
visitor: '',
|
||||
return_date: '',
|
||||
come_place: '',
|
||||
come_place_detail:'',
|
||||
trip_desc: '',
|
||||
test_date:'',
|
||||
measure: '',
|
||||
|
@ -403,6 +414,7 @@ export default {
|
|||
visitor: [{ required: true, message: "请选择来访人员" }],
|
||||
return_date: [{ required: true, message: "请选择返乡日期" }],
|
||||
come_place: [{ required: true, message: "请填写来源地" }],
|
||||
come_place_detail: [{ required: true, message: "请填写来源地详细地址" }],
|
||||
trip_desc: [{ required: true, message: "请填写行程轨迹" }],
|
||||
test_date: [{ required: true, message: "请选择核酸日期" }],
|
||||
measure: [{ required: true, message: "请选择管控措施" }],
|
||||
|
@ -425,6 +437,11 @@ export default {
|
|||
this.getvisitorlist();
|
||||
},
|
||||
methods: {
|
||||
selectedAddress(data){
|
||||
// debugger;
|
||||
console.log(data)
|
||||
this.formpeople.come_place=data;
|
||||
},
|
||||
//访问项目基本信息
|
||||
getRpj() {
|
||||
this.$API.vm.visit.read.req(this.visitid).then((res) => {
|
||||
|
@ -462,7 +479,7 @@ export default {
|
|||
this.$refs.dialogForm.validate(async (valid) => {
|
||||
if (valid) {
|
||||
if(this.visitid){
|
||||
this.$API.vm.visit.update
|
||||
this.$API.vm.visit.update
|
||||
.req(this.visitid, this.form)
|
||||
.then((res) => {
|
||||
this.$message.success("基本信息更新成功");
|
||||
|
@ -516,6 +533,15 @@ this.$API.vm.visit.update
|
|||
submitpeople() {
|
||||
let that = this;
|
||||
that.formpeople.visit = this.visitid;
|
||||
let addressObj = that.formpeople.come_place;
|
||||
let addressStr = '';
|
||||
that.formpeople.come_place = '';
|
||||
for(let key in addressObj){
|
||||
addressStr =addressStr+addressObj[key];
|
||||
}
|
||||
that.formpeople.come_place = addressStr;
|
||||
// debugger;
|
||||
console.log(addressStr)
|
||||
that.$refs.formpeople.validate((valid) => {
|
||||
if (valid) {
|
||||
that.isSaveing = true;
|
||||
|
@ -552,8 +578,9 @@ this.$API.vm.visit.update
|
|||
//提交工单
|
||||
submitticket(id){
|
||||
this.ticket={};
|
||||
this.ticket.title = this.form.name;
|
||||
this.ticket.workflow=this.initform.workflow;
|
||||
this.ticket.ticket_data={visit:this.visitid};
|
||||
this.ticket.ticket_data={visit:this.visitid,name:this.form.name};
|
||||
this.ticket.transition=id;
|
||||
this.$API.wf.ticket.create.req(this.ticket).then((res) => {
|
||||
this.$message.success("提交成功");
|
||||
|
|
Loading…
Reference in New Issue