|
@ -13,8 +13,7 @@ |
|
|
</header> |
|
|
</header> |
|
|
</div> |
|
|
</div> |
|
|
<div> |
|
|
<div> |
|
|
<a-radio-group default-value="satellite" button-style="solid" size="small" @change="radioChange" |
|
|
<a-radio-group default-value="satellite" button-style="solid" size="small" @change="radioChange" class="radioBtn" v-show="radioBtnShow"> |
|
|
class="radioBtn" v-show="radioBtnShow"> |
|
|
|
|
|
<a-radio-button value="satellite"> 卫星影像</a-radio-button> |
|
|
<a-radio-button value="satellite"> 卫星影像</a-radio-button> |
|
|
<a-radio-button value="vector"> 矢量地图</a-radio-button> |
|
|
<a-radio-button value="vector"> 矢量地图</a-radio-button> |
|
|
</a-radio-group> |
|
|
</a-radio-group> |
|
@ -30,8 +29,14 @@ |
|
|
<a-button @click="roamPathSet()">视频融合</a-button> |
|
|
<a-button @click="roamPathSet()">视频融合</a-button> |
|
|
</div> |
|
|
</div> |
|
|
<!-- 视频融合 --> |
|
|
<!-- 视频融合 --> |
|
|
<VideoFusionWin v-if="VideoFusionWinShow" :cameraList="cameraList" :monitorPosition="monitorPosition" |
|
|
<VideoFusionWin |
|
|
:updateModel="toItemObj.updateModel" :isUpdate="toItemObj.isUpdate" :userSave="toItemObj.userSave"> |
|
|
v-if="VideoFusionWinShow" |
|
|
|
|
|
:cameraList="cameraList" |
|
|
|
|
|
:monitorPosition="monitorPosition" |
|
|
|
|
|
:updateModel="toItemObj.updateModel" |
|
|
|
|
|
:isUpdate="toItemObj.isUpdate" |
|
|
|
|
|
:userSave="toItemObj.userSave" |
|
|
|
|
|
> |
|
|
</VideoFusionWin> |
|
|
</VideoFusionWin> |
|
|
<!-- 地标弹窗 --> |
|
|
<!-- 地标弹窗 --> |
|
|
<!-- <div id="poiModal" class="poiModal" v-show="poiModalShow" ref="poiModal"> |
|
|
<!-- <div id="poiModal" class="poiModal" v-show="poiModalShow" ref="poiModal"> |
|
@ -50,17 +55,35 @@ |
|
|
</audio> |
|
|
</audio> |
|
|
|
|
|
|
|
|
<!-- 云台控制弹窗 --> |
|
|
<!-- 云台控制弹窗 --> |
|
|
<video-window :id="videoWindowProps.id" :visible.sync="videoWindowProps.visible" :title="videoWindowProps.title" |
|
|
<video-window |
|
|
:videoUrl="videoWindowProps.videoUrl" :cameraIp="videoWindowProps.cameraIp" |
|
|
:id="videoWindowProps.id" |
|
|
:cameraUser="videoWindowProps.cameraUser" :cameraPwd="videoWindowProps.cameraPwd" |
|
|
:visible.sync="videoWindowProps.visible" |
|
|
:isAlarm="videoWindowProps.isAlarm" :playRecord="videoWindowProps.playRecord" |
|
|
:title="videoWindowProps.title" |
|
|
:warnTime="videoWindowProps.warnTime" :warnEvent="videoWindowProps.warnEvent" /> |
|
|
:videoUrl="videoWindowProps.videoUrl" |
|
|
|
|
|
:cameraIp="videoWindowProps.cameraIp" |
|
|
|
|
|
:cameraUser="videoWindowProps.cameraUser" |
|
|
|
|
|
:cameraPwd="videoWindowProps.cameraPwd" |
|
|
|
|
|
:isAlarm="videoWindowProps.isAlarm" |
|
|
|
|
|
:playRecord="videoWindowProps.playRecord" |
|
|
|
|
|
:warnTime="videoWindowProps.warnTime" |
|
|
|
|
|
:warnEvent="videoWindowProps.warnEvent" |
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
<!-- 左侧操作栏 --> |
|
|
<!-- 左侧操作栏 --> |
|
|
<Toolbar v-if="toolbarShow" :setLabelStatus="setLabelStatus"></Toolbar> |
|
|
<Toolbar v-if="toolbarShow" :setLabelStatus="setLabelStatus"></Toolbar> |
|
|
<AddModelWin v-if="addModelWinShow" :setLabelStatus="setLabelStatus" :czmObject="czmObject" :node="node" |
|
|
<AddModelWin |
|
|
:type="type" :lineId="lineId" :areaCode="areaCode" :areaByNodeId="areaByNodeIdModel" |
|
|
v-if="addModelWinShow" |
|
|
:setIconByRef="setIconByRef" :el="el" :eidtId="eidtId"></AddModelWin> |
|
|
:setLabelStatus="setLabelStatus" |
|
|
|
|
|
:czmObject="czmObject" |
|
|
|
|
|
:node="node" |
|
|
|
|
|
:type="type" |
|
|
|
|
|
:lineId="lineId" |
|
|
|
|
|
:areaCode="areaCode" |
|
|
|
|
|
:areaByNodeId="areaByNodeIdModel" |
|
|
|
|
|
:setIconByRef="setIconByRef" |
|
|
|
|
|
:el="el" |
|
|
|
|
|
:eidtId="eidtId" |
|
|
|
|
|
></AddModelWin> |
|
|
<AddRoamVideo v-if="addRoamVideoShow"></AddRoamVideo> |
|
|
<AddRoamVideo v-if="addRoamVideoShow"></AddRoamVideo> |
|
|
</div> |
|
|
</div> |
|
|
</template> |
|
|
</template> |
|
@ -85,12 +108,12 @@ import $mitt from '@/utils/earthMap/mitt'; |
|
|
import { drawInit } from '@/utils/earthMap/earthDraw'; |
|
|
import { drawInit } from '@/utils/earthMap/earthDraw'; |
|
|
import { keyControlInit } from '@/utils/earthMap/keyControlInit'; |
|
|
import { keyControlInit } from '@/utils/earthMap/keyControlInit'; |
|
|
import redFlag from '@/assets/earthMap/redFlag.png'; |
|
|
import redFlag from '@/assets/earthMap/redFlag.png'; |
|
|
import { addModel, addPin, addViewShedRadar, addShipGroundImg, addShipTrack } from '@/utils/earthMap/earthObj'; |
|
|
import { addModel, addPin, addViewShedRadar, addShipTrack } from '@/utils/earthMap/earthObj'; |
|
|
import { drawAllShips } from '@/utils/earthMap/shipDraw'; |
|
|
import { drawAllShips } from '@/utils/earthMap/shipDraw'; |
|
|
import hidePng from '@/assets/earthMap/hide.png'; |
|
|
import hidePng from '@/assets/earthMap/hide.png'; |
|
|
import alarmImg from '@/assets/earthMap/alarm.gif'; |
|
|
import alarmImg from '@/assets/earthMap/alarm.gif'; |
|
|
import VideoFusionWin from './components/VideoFusionWin.vue'; |
|
|
import VideoFusionWin from './components/VideoFusionWin.vue'; |
|
|
import { useMessage } from "/@/hooks/web/useMessage"; |
|
|
import { useMessage } from '/@/hooks/web/useMessage'; |
|
|
|
|
|
|
|
|
import circleDot2 from '@/assets/earthMap/circleDot2.png'; |
|
|
import circleDot2 from '@/assets/earthMap/circleDot2.png'; |
|
|
import circleDot1 from '@/assets/earthMap/circleDot1.png'; |
|
|
import circleDot1 from '@/assets/earthMap/circleDot1.png'; |
|
@ -100,10 +123,8 @@ const userStore = useUserStore(); |
|
|
const store = useEarthMapStore(); |
|
|
const store = useEarthMapStore(); |
|
|
const { proxy } = getCurrentInstance(); |
|
|
const { proxy } = getCurrentInstance(); |
|
|
const { createMessage } = useMessage(); |
|
|
const { createMessage } = useMessage(); |
|
|
const audio = ref() //警示音频组件 |
|
|
const audio = ref(); //警示音频组件 |
|
|
const props = defineProps({ |
|
|
const props = defineProps({}); |
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
class HandleNodeType { |
|
|
class HandleNodeType { |
|
|
#sn; |
|
|
#sn; |
|
@ -246,7 +267,6 @@ _pin = undefined; |
|
|
let _handler: any = undefined; |
|
|
let _handler: any = undefined; |
|
|
sceneTree: any = sceneTree; |
|
|
sceneTree: any = sceneTree; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let url: any = { |
|
|
let url: any = { |
|
|
queryLabelList: 'military/msMapLabel/queryLabelAndDeviceList', |
|
|
queryLabelList: 'military/msMapLabel/queryLabelAndDeviceList', |
|
|
queryLineList: 'military/msMapLine/list', |
|
|
queryLineList: 'military/msMapLine/list', |
|
@ -371,18 +391,15 @@ cameraList: any = []; |
|
|
// 监控相机位置 |
|
|
// 监控相机位置 |
|
|
monitorPosition: any = []; |
|
|
monitorPosition: any = []; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
onMounted(async () => { |
|
|
onMounted(async () => { |
|
|
window.XE.ready().then(() => { |
|
|
window.XE.ready() |
|
|
|
|
|
.then(() => { |
|
|
// 加载标绘插件 |
|
|
// 加载标绘插件 |
|
|
return window.XE.HTML.loadJS('/earthsdk/XbsjEarth-Plugins/plottingSymbol/plottingSymbol.js'); |
|
|
return window.XE.HTML.loadJS('/earthsdk/XbsjEarth-Plugins/plottingSymbol/plottingSymbol.js'); |
|
|
}).then(async () => { |
|
|
}) |
|
|
|
|
|
.then(async () => { |
|
|
//地图初始化 |
|
|
//地图初始化 |
|
|
await initMap() |
|
|
await initMap(); |
|
|
//随机数 |
|
|
//随机数 |
|
|
window.guid = guid; |
|
|
window.guid = guid; |
|
|
//获取实时日期时间 |
|
|
//获取实时日期时间 |
|
@ -394,8 +411,9 @@ onMounted(async () => { |
|
|
return false; |
|
|
return false; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
return true |
|
|
return true; |
|
|
}).then(() => { |
|
|
}) |
|
|
|
|
|
.then(() => { |
|
|
//将回调延迟到下次 DOM 更新循环之后执行(针对由jq动态增加的元素绑定事件) |
|
|
//将回调延迟到下次 DOM 更新循环之后执行(针对由jq动态增加的元素绑定事件) |
|
|
nextTick(() => { |
|
|
nextTick(() => { |
|
|
{ |
|
|
{ |
|
@ -414,7 +432,7 @@ onMounted(async () => { |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
return true |
|
|
return true; |
|
|
}) |
|
|
}) |
|
|
.then(() => { |
|
|
.then(() => { |
|
|
// 轮询 |
|
|
// 轮询 |
|
@ -428,10 +446,9 @@ onMounted(async () => { |
|
|
radarAlarmTimeOutCheck(); |
|
|
radarAlarmTimeOutCheck(); |
|
|
}, 6 * 1000); |
|
|
}, 6 * 1000); |
|
|
} |
|
|
} |
|
|
return true |
|
|
return true; |
|
|
|
|
|
}); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
//地图初始化 |
|
|
//地图初始化 |
|
|
function initMap() { |
|
|
function initMap() { |
|
@ -478,7 +495,6 @@ async function fly() { |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 保存更改的ref到模型和后台数据中; |
|
|
* 保存更改的ref到模型和后台数据中; |
|
|
* @param {Object} model 当前模型 |
|
|
* @param {Object} model 当前模型 |
|
@ -541,11 +557,7 @@ function roamPathSet() { |
|
|
cameraModalShow.value = false; |
|
|
cameraModalShow.value = false; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function listenMittHandler(earthUI = null) { |
|
|
function listenMittHandler(earthUI = null) { |
|
|
|
|
|
|
|
|
$mitt.on('winShow', function (e: any) { |
|
|
$mitt.on('winShow', function (e: any) { |
|
|
VideoFusionWinShow.value = e; |
|
|
VideoFusionWinShow.value = e; |
|
|
}); |
|
|
}); |
|
@ -599,11 +611,8 @@ function listenMittHandler(earthUI = null) { |
|
|
$mitt.on('deviceCmd', (message: any) => { |
|
|
$mitt.on('deviceCmd', (message: any) => { |
|
|
drawAllShips(message); |
|
|
drawAllShips(message); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 告警模型显示/隐藏 |
|
|
// 告警模型显示/隐藏 |
|
|
function showAlarmPin(show) { |
|
|
function showAlarmPin(show) { |
|
|
alarmInfoMap.forEach((item, _index) => { |
|
|
alarmInfoMap.forEach((item, _index) => { |
|
@ -801,7 +810,6 @@ function setLoginPoint(data: any) { |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//加载相机 |
|
|
//加载相机 |
|
|
function getCameraInfo(models, type) { |
|
|
function getCameraInfo(models, type) { |
|
|
return new Promise((resolve, reject) => { |
|
|
return new Promise((resolve, reject) => { |
|
@ -817,7 +825,6 @@ function getCameraInfo(models, type) { |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getPatrolRouteInfo(models) { |
|
|
function getPatrolRouteInfo(models) { |
|
|
return new Promise((resolve, reject) => { |
|
|
return new Promise((resolve, reject) => { |
|
|
//执勤巡逻路线 |
|
|
//执勤巡逻路线 |
|
@ -859,7 +866,6 @@ function removeHandler() { |
|
|
_handler.removeInputAction(window.Cesium.ScreenSpaceEventType.LEFT_CLICK); //移除鼠标事件 |
|
|
_handler.removeInputAction(window.Cesium.ScreenSpaceEventType.LEFT_CLICK); //移除鼠标事件 |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function radioChange(e) { |
|
|
function radioChange(e) { |
|
|
loadingStatus(); |
|
|
loadingStatus(); |
|
|
if (`${e.target.value}` == 'satellite') { |
|
|
if (`${e.target.value}` == 'satellite') { |
|
@ -890,7 +896,6 @@ function closeClient() { |
|
|
chrome.call('close'); |
|
|
chrome.call('close'); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function setLabelStatus(device, labelCode, id, code) { |
|
|
function setLabelStatus(device, labelCode, id, code) { |
|
|
const args = { |
|
|
const args = { |
|
|
device: device, |
|
|
device: device, |
|
@ -1186,8 +1191,6 @@ function showOrHideChild(clickNode, earthUI, parentChecked) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* websocket-start */ |
|
|
/* websocket-start */ |
|
|
function initWebSocket(configName) { |
|
|
function initWebSocket(configName) { |
|
|
if ('WebSocket' in window) { |
|
|
if ('WebSocket' in window) { |
|
@ -1602,7 +1605,6 @@ function websocketdosend(configName) { |
|
|
} |
|
|
} |
|
|
/* websocket-end */ |
|
|
/* websocket-end */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function radarAlarmTimeOutCheck() { |
|
|
function radarAlarmTimeOutCheck() { |
|
|
const now = Date.now(); |
|
|
const now = Date.now(); |
|
|
const timeout = 5 * 60 * 1000; |
|
|
const timeout = 5 * 60 * 1000; |
|
@ -1644,7 +1646,6 @@ function clearAlarmModel(eventNum) { |
|
|
clearRadarAlarmModel(radarAlarmDataMap, eventNum); |
|
|
clearRadarAlarmModel(radarAlarmDataMap, eventNum); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 根据经纬度获取高度 |
|
|
// 根据经纬度获取高度 |
|
|
async function getHeigthByLonLat(lon = 88.8296258, lat = 27.4061859) { |
|
|
async function getHeigthByLonLat(lon = 88.8296258, lat = 27.4061859) { |
|
|
var positions = [window.Cesium.Cartographic.fromDegrees(lon, lat)]; |
|
|
var positions = [window.Cesium.Cartographic.fromDegrees(lon, lat)]; |
|
@ -1801,7 +1802,8 @@ function setAllLabelStatus(selectRef, item, wbUnifiedResponse) { |
|
|
{ |
|
|
{ |
|
|
url: url.setDefenseArea, |
|
|
url: url.setDefenseArea, |
|
|
params: args, |
|
|
params: args, |
|
|
}, { isTransformResponse: false } |
|
|
}, |
|
|
|
|
|
{ isTransformResponse: false } |
|
|
) |
|
|
) |
|
|
.then((response) => { |
|
|
.then((response) => { |
|
|
if (!response.success) { |
|
|
if (!response.success) { |
|
@ -1888,8 +1890,6 @@ function setAllLabelStatus(selectRef, item, wbUnifiedResponse) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 资源销毁 |
|
|
// 资源销毁 |
|
|
onBeforeUnmount(() => { |
|
|
onBeforeUnmount(() => { |
|
|
// vue程序销毁时,需要清理相关资源 |
|
|
// vue程序销毁时,需要清理相关资源 |
|
@ -1899,6 +1899,5 @@ onBeforeUnmount(() => { |
|
|
clearInterval(timer); |
|
|
clearInterval(timer); |
|
|
clearInterval(timer2); |
|
|
clearInterval(timer2); |
|
|
clearInterval(alarmTrackClearTimer); |
|
|
clearInterval(alarmTrackClearTimer); |
|
|
}) |
|
|
}); |
|
|
</script> |
|
|
</script> |
|
|
|
|
|
|
|
|