Compare commits
2 Commits
66e0b31c86
...
98c00cd0fd
| Author | SHA1 | Date |
|---|---|---|
|
|
98c00cd0fd | |
|
|
4378557ef3 |
|
|
@ -18,11 +18,11 @@ export const option = {
|
||||||
navsCheckColor: '#0D2822',
|
navsCheckColor: '#0D2822',
|
||||||
navsCheckBackground: '#34FFE0',
|
navsCheckBackground: '#34FFE0',
|
||||||
navsArr: [
|
navsArr: [
|
||||||
{ label: '待研判', value: '0'},
|
{ label: '待研判', value: '0', sql: '' },
|
||||||
{ label: '待签收', value: '13'},
|
{ label: '待签收', value: '13', sql: '' },
|
||||||
{ label: '待处置', value: '0'},
|
{ label: '待处置', value: '0', sql: '' },
|
||||||
{ label: '待审核', value: '0'},
|
{ label: '待审核', value: '0', sql: '' },
|
||||||
{ label: '已完成', value: '99+'}
|
{ label: '已完成', value: '99+', sql: '' }
|
||||||
],
|
],
|
||||||
sectionDatas:[
|
sectionDatas:[
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,15 @@
|
||||||
import { PublicConfigClass } from '@/packages/public'
|
import { PublicConfigClass } from '@/packages/public'
|
||||||
import { chartInitConfig,requestSqlConfig } from '@/settings/designSetting'
|
import { chartInitConfig } from '@/settings/designSetting'
|
||||||
import { CreateComponentType } from '@/packages/index.d'
|
import { CreateComponentType } from '@/packages/index.d'
|
||||||
import { NowPositionConfig } from './index'
|
import { NowPositionConfig } from './index'
|
||||||
import cloneDeep from 'lodash/cloneDeep'
|
import cloneDeep from 'lodash/cloneDeep'
|
||||||
|
|
||||||
export const option = {
|
export const option = {
|
||||||
dataset: '',
|
|
||||||
borderColor: '#457453',
|
borderColor: '#457453',
|
||||||
|
socketSrc: 'ws://111.36.45.20:18088/uav/ws/v1/admin/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjdXJyZW50VXNlciI6IlRLNHp5OTMyME1tS3BzdE9zVkpmdDlXanlKMjhBSThKVnV2OU55UjU1Vmw3WWptVUFZUCsveVV3eU1PaUE1VEc5Ykt1bGNhTnNsc0l6dkQ5M0ZkWGhxNlYxVm44L0dUL2NNQ2JhYjhvV0hwQ3BmTGRyNk5IQnorcytGOXM4YmNVZy9CSDlPRGlHck9ZSDhwbkpIclNjM0pIdEZFa09iSTAyVjY4RFdwNG8wRWZqYjE5YjJVQTE2WGpmWEhZUWZvNVpmMnNERzlxMnNsQ1R5VmJVUlBaMTJ1M25EWGI2TnNnODRHblM1ZVdYZTNHaFJ6VmZkYWdSMGMraG9lWG9UVTFLei9yZU1JUzlvZ3Zyb0ZWLzNpdUF6c1B1MVlVcm9RT3RheDNRdlF4WllXdGM4RFhoYlFLRFFiVXlBMGtZR2JHajFKQ3B0VFI0Y1B0aGhlb3N2dnhQTnV1ZjcyWmFUbDR3amgzUENMZVdrNThTc0Z3SjFJNnJGa3lGYWlTVlpUUSs0RzhIV2phRlIzUG9DSkk0QzAvRnM1bU16YTR4dldzZlUyZTgvKzhzSE1iUUtOZWlacjJ0cUxoTlVvN0Y5OURrbEJHbzZMcmJsMXR1bVFHdlN1bGMxL1RoaEZ3WUx0cS8zRnVybTNuMEJQS21JT2dKRGlPUmtYR1lObE4wUy9DeU1qVlRpNzJWOHoxdHhDNWl5VzlmM29od0NjazZJaVhSK2lZeXJ6N2I3YWpkN3ZZUkdCNU8wRmxaOGJRaTZXVnM1STgzSDMwREcwNEtTdWFybnJpNncvNm83NkJrTW1RQnlwbzI3NnlUMnJmcnFlZ0xwM0I0VGIvQkx1cGpHMUtjL0pUNlg5bVlUcTlIZVQxU09IQmdkUGs3RzgyN3BPL3NPTTFqZkxFWE5VSjluZjRJQVFHQkJMVnFmMjVBYWVtVkNVN0ljaEIvYWh0WVVJdkZJZDBXdHE1aXdNbk9PZXFhNTFmTG5RSTIwN0x0c0ZMMWd2d2daUFBsQTdtbkpSMUQrMzBBbDV3UXFTai9WNXhRYXVXTkQ1Z0FDV0cxcGZXZFFoTkM1bnM4djQ4a2pkdmlNcmVTRHNTekUzU3ZSVjFLeDk5SnpJa1B1UmNQZXR3cVVWbGk1dU9vWlBJSXRWbjc1UjlzdHpneHNCeW1JdUhjSDJsWmdLSkhhUmpTWlE4cEQxRlIzUzZZeGtSWDlIa3lvUHE4S3lZNktGckREUW9OanJJVTEvQTg1M0cydyswaEl0QXdOQWZNaXdBbUMvbE1zLytBRk04cm5UcFVCdU9LYnNTSnBxanAzT1k2TitQZVFSZ3pxN1VJcnVlWFBMRXVjQkh4MXRpZkdMZXcvbENGa1pVMDAxNlBWcTNFMDl4TTZha0xLRExTUVcyU1gzZVRxcitVaExkWllvM1RqZEM1NVJ5OW1lZDZTSFNPbWxwcURSaTBvRnZyVXRyL0N4UExwaG1HK0RKd2oyazVHdFFkanJoNkF5RGlpWm5xejFNREFlczZvVkVhUW81MFpkSE5FRU16a25xcUZCWWY3eU5PTVFvOVg4dTdIV2dLZWFndGdjc21DZ1pqVmIrekFsTWpLMk1uSzZGQTY4TlYxV3kxZU41eHp4ZUpySnFoOFBHVHJrMUdPUmQzTjJFdTZOTVdXSzVPVDdWNmNQZzFtMm1WNFNIdnphSnBCYUp0dCs5dFhibkdCNThHOEFUV0g2Um5WRVFWeW1UTGhHK2I3UmE5Q0ZkaWMzWm0yams3K0VROU5LRWxRVWd0UkxhTFJJUnlvZXUzOXhnUWt2dVMvOXA2NHJzc1diUHFoRGw2OHlzK0luRFBIaEVKcFkxRk16aDlWcmZxY290OFJwMlNqbXI2clVOM25sVGpLYzRKR08yakZOTVB4ZXpzaFdsdHpKVjhZeGxJZ0tnZEtPT0kySm8yUTVhbkYxSTRtN01jQ2ZQIiwiZXhwIjoxNzQyNzg0MjU1fQ.p5g59OlxRrof3q-mRXErhyP21f3wkIpeSz3FNaJUGR8',
|
||||||
mapOptions:{
|
mapOptions:{
|
||||||
"scene": {
|
"scene": {
|
||||||
"center": {"lat":35.362625,"lng":118.033886,"alt":8306.3,"heading":360,"pitch":-45},
|
"center": {"lat":35.362625,"lng":118.033886,"alt":22306.3,"heading":360,"pitch":-70},
|
||||||
"scene3DOnly": false,
|
"scene3DOnly": false,
|
||||||
"shadows": false,
|
"shadows": false,
|
||||||
"removeDblClick": true,
|
"removeDblClick": true,
|
||||||
|
|
@ -125,6 +125,4 @@ export default class Config extends PublicConfigClass implements CreateComponent
|
||||||
public attr = { ...chartInitConfig, w: 343, h: 224, zIndex: -1 }
|
public attr = { ...chartInitConfig, w: 343, h: 224, zIndex: -1 }
|
||||||
public chartConfig = cloneDeep(NowPositionConfig)
|
public chartConfig = cloneDeep(NowPositionConfig)
|
||||||
public option = cloneDeep(option)
|
public option = cloneDeep(option)
|
||||||
public request = { ...requestSqlConfig, requestSQLContent: { sql: 'select * from ' }, }
|
|
||||||
public filter = "return res.result;"
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,15 @@
|
||||||
<template>
|
<template>
|
||||||
|
<!-- <CollapseItem name="内容" :expanded="true">
|
||||||
|
<SettingItemBox name="socket" :alone="true">
|
||||||
|
<n-input
|
||||||
|
size="small"
|
||||||
|
v-model:value="optionData.socketSrc"
|
||||||
|
:minlength="1"
|
||||||
|
type="text"
|
||||||
|
placeholder="请输入"
|
||||||
|
/>
|
||||||
|
</SettingItemBox>
|
||||||
|
</CollapseItem> -->
|
||||||
<SettingItemBox name="样式">
|
<SettingItemBox name="样式">
|
||||||
<SettingItem name="边框颜色">
|
<SettingItem name="边框颜色">
|
||||||
<n-color-picker
|
<n-color-picker
|
||||||
|
|
|
||||||
|
|
@ -21,27 +21,24 @@ const { w, h } = toRefs(props.chartConfig.attr)
|
||||||
const {
|
const {
|
||||||
borderColor,
|
borderColor,
|
||||||
mapOptions,
|
mapOptions,
|
||||||
dataset
|
|
||||||
} = toRefs(props.chartConfig.option)
|
} = toRefs(props.chartConfig.option)
|
||||||
|
|
||||||
let map: mars3d.Map; // 地图对象
|
let map: mars3d.Map; // 地图对象
|
||||||
const isFirstLoad = ref(true);
|
const isFirstLoad = ref(true);
|
||||||
const vChartRef = ref<HTMLElement>()
|
const vChartRef = ref<HTMLElement>()
|
||||||
|
let graphicLayer;
|
||||||
const initMap = (newData: any) => {
|
const initMap = (newData: any) => {
|
||||||
// 第一次加载
|
// 第一次加载
|
||||||
if(isFirstLoad.value){
|
if(isFirstLoad.value){
|
||||||
map = new mars3d.Map(vChartRef.value, newData);
|
map = new mars3d.Map(vChartRef.value, newData);
|
||||||
}else{ // 之后更新
|
}else{ // 之后更新
|
||||||
// map.setOptions(newData);
|
|
||||||
map.setSceneOptions(newData.scene);
|
map.setSceneOptions(newData.scene);
|
||||||
}
|
}
|
||||||
isFirstLoad.value = false;
|
isFirstLoad.value = false;
|
||||||
|
graphicLayer = new mars3d.layer.GraphicLayer();
|
||||||
|
map.addLayer(graphicLayer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
onMounted(()=>{
|
|
||||||
|
|
||||||
})
|
|
||||||
const stopWatch = watch(
|
const stopWatch = watch(
|
||||||
() => props.chartConfig.option.mapOptions,
|
() => props.chartConfig.option.mapOptions,
|
||||||
async option => {
|
async option => {
|
||||||
|
|
@ -55,16 +52,89 @@ const stopWatch = watch(
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// 预览
|
const myWebSocket = ref();
|
||||||
useChartDataFetch(props.chartConfig, useChartEditStore, (newData: any) => {
|
const lockReconnect = ref(false);
|
||||||
stopWatch()
|
const myWebSocketTimer = ref();
|
||||||
let arr = newData || [116.300467, 39.907761]
|
|
||||||
map.flyTo({
|
function websocketReconnect() {
|
||||||
center: arr, // 中心点
|
if (lockReconnect.value) {
|
||||||
zoom: 18, // 缩放比例
|
// 是否已经执行重连
|
||||||
pitch: 0 // 倾斜度
|
return;
|
||||||
})
|
}
|
||||||
})
|
lockReconnect.value = true;
|
||||||
|
// 没连接上会一直重连,设置延迟避免请求过多
|
||||||
|
let tt;
|
||||||
|
tt && clearTimeout(tt);
|
||||||
|
|
||||||
|
tt = setTimeout(function () {
|
||||||
|
initWebSocket();
|
||||||
|
lockReconnect.value = false;
|
||||||
|
}, 120000);
|
||||||
|
}
|
||||||
|
function initWebSocket() {
|
||||||
|
if ('WebSocket' in window) {
|
||||||
|
myWebSocket.value = new WebSocket('ws://111.36.45.20:18088/uav/ws/v1/admin/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjdXJyZW50VXNlciI6IlRLNHp5OTMyME1tS3BzdE9zVkpmdDlXanlKMjhBSThKVnV2OU55UjU1Vmw3WWptVUFZUCsveVV3eU1PaUE1VEc5Ykt1bGNhTnNsc0l6dkQ5M0ZkWGhxNlYxVm44L0dUL2NNQ2JhYjhvV0hwQ3BmTGRyNk5IQnorcytGOXM4YmNVZy9CSDlPRGlHck9ZSDhwbkpIclNjM0pIdEZFa09iSTAyVjY4RFdwNG8wRWZqYjE5YjJVQTE2WGpmWEhZUWZvNVpmMnNERzlxMnNsQ1R5VmJVUlBaMTJ1M25EWGI2TnNnODRHblM1ZVdYZTNHaFJ6VmZkYWdSMGMraG9lWG9UVTFLei9yZU1JUzlvZ3Zyb0ZWLzNpdUF6c1B1MVlVcm9RT3RheDNRdlF4WllXdGM4RFhoYlFLRFFiVXlBMGtZR2JHajFKQ3B0VFI0Y1B0aGhlb3N2dnhQTnV1ZjcyWmFUbDR3amgzUENMZVdrNThTc0Z3SjFJNnJGa3lGYWlTVlpUUSs0RzhIV2phRlIzUG9DSkk0QzAvRnM1bU16YTR4dldzZlUyZTgvKzhzSE1iUUtOZWlacjJ0cUxoTlVvN0Y5OURrbEJHbzZMcmJsMXR1bVFHdlN1bGMxL1RoaEZ3WUx0cS8zRnVybTNuMEJQS21JT2dKRGlPUmtYR1lObE4wUy9DeU1qVlRpNzJWOHoxdHhDNWl5VzlmM29od0NjazZJaVhSK2lZeXJ6N2I3YWpkN3ZZUkdCNU8wRmxaOGJRaTZXVnM1STgzSDMwREcwNEtTdWFybnJpNncvNm83NkJrTW1RQnlwbzI3NnlUMnJmcnFlZ0xwM0I0VGIvQkx1cGpHMUtjL0pUNlg5bVlUcTlIZVQxU09IQmdkUGs3RzgyN3BPL3NPTTFqZkxFWE5VSjluZjRJQVFHQkJMVnFmMjVBYWVtVkNVN0ljaEIvYWh0WVVJdkZJZDBXdHE1aXdNbk9PZXFhNTFmTG5RSTIwN0x0c0ZMMWd2d2daUFBsQTdtbkpSMUQrMzBBbDV3UXFTai9WNXhRYXVXTkQ1Z0FDV0cxcGZXZFFoTkM1bnM4djQ4a2pkdmlNcmVTRHNTekUzU3ZSVjFLeDk5SnpJa1B1UmNQZXR3cVVWbGk1dU9vWlBJSXRWbjc1UjlzdHpneHNCeW1JdUhjSDJsWmdLSkhhUmpTWlE4cEQxRlIzUzZZeGtSWDlIa3lvUHE4S3lZNktGckREUW9OanJJVTEvQTg1M0cydyswaEl0QXdOQWZNaXdBbUMvbE1zLytBRk04cm5UcFVCdU9LYnNTSnBxanAzT1k2TitQZVFSZ3pxN1VJcnVlWFBMRXVjQkh4MXRpZkdMZXcvbENGa1pVMDAxNlBWcTNFMDl4TTZha0xLRExTUVcyU1gzZVRxcitVaExkWllvM1RqZEM1NVJ5OW1lZDZTSFNPbWxwcURSaTBvRnZyVXRyL0N4UExwaG1HK0RKd2oyazVHdFFkanJoNkF5RGlpWm5xejFNREFlczZvVkVhUW81MFpkSE5FRU16a25xcUZCWWY3eU5PTVFvOVg4dTdIV2dLZWFndGdjc21DZ1pqVmIrekFsTWpLMk1uSzZGQTY4TlYxV3kxZU41eHp4ZUpySnFoOFBHVHJrMUdPUmQzTjJFdTZOTVdXSzVPVDdWNmNQZzFtMm1WNFNIdnphSnBCYUp0dCs5dFhibkdCNThHOEFUV0g2Um5WRVFWeW1UTGhHK2I3UmE5Q0ZkaWMzWm0yams3K0VROU5LRWxRVWd0UkxhTFJJUnlvZXUzOXhnUWt2dVMvOXA2NHJzc1diUHFoRGw2OHlzK0luRFBIaEVKcFkxRk16aDlWcmZxY290OFJwMlNqbXI2clVOM25sVGpLYzRKR08yakZOTVB4ZXpzaFdsdHpKVjhZeGxJZ0tnZEtPT0kySm8yUTVhbkYxSTRtN01jQ2ZQIiwiZXhwIjoxNzQyNzg0MjU1fQ.p5g59OlxRrof3q-mRXErhyP21f3wkIpeSz3FNaJUGR8');
|
||||||
|
myWebSocket.value.onopen = function () {
|
||||||
|
if (myWebSocketTimer.value) {
|
||||||
|
clearInterval(myWebSocketTimer.value);
|
||||||
|
}
|
||||||
|
webSocketHeart();
|
||||||
|
};
|
||||||
|
|
||||||
|
myWebSocket.value.onmessage = function (evt) {
|
||||||
|
const data = JSON.parse(evt.data);
|
||||||
|
createListeningEvent(data);
|
||||||
|
};
|
||||||
|
myWebSocket.value.onclose = function () {
|
||||||
|
// 如果断开则重新连接
|
||||||
|
websocketReconnect();
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
alert('您的浏览器不支持 WebSocket!');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function webSocketHeart() {
|
||||||
|
//长连接心跳检测
|
||||||
|
let total = 1;
|
||||||
|
myWebSocketTimer.value = setInterval(function () {
|
||||||
|
if (myWebSocket.value) {
|
||||||
|
total = total + 1;
|
||||||
|
}
|
||||||
|
}, 30000);
|
||||||
|
}
|
||||||
|
const createListeningEvent = (value) => {
|
||||||
|
if(value.type == 1 && value.isUavOn == 1){
|
||||||
|
handlerAddEntity(value.data)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// 添加Entity
|
||||||
|
const handlerAddEntity = (data) => {
|
||||||
|
let graphicOptions = {
|
||||||
|
id: data.siteId,
|
||||||
|
position: [parseFloat(data.longitude), parseFloat(data.latitude)],
|
||||||
|
style: {
|
||||||
|
image: '/src/assets/images/chart/equipment/wurenji.png',
|
||||||
|
clampToGround: true,
|
||||||
|
scale: 0.5,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let graphic = graphicLayer.getGraphicById(data.siteId);
|
||||||
|
|
||||||
|
if(graphic){
|
||||||
|
graphicLayer.removeGraphic(graphic);
|
||||||
|
graphic = new mars3d.graphic.BillboardEntity(graphicOptions);
|
||||||
|
graphicLayer.addGraphic(graphic);
|
||||||
|
}else{
|
||||||
|
graphic = new mars3d.graphic.BillboardEntity(graphicOptions);
|
||||||
|
graphicLayer.addGraphic(graphic);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onMounted(() => {
|
||||||
|
stopWatch();
|
||||||
|
initWebSocket();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,8 @@ export const option = {
|
||||||
desc: '2024.12.24 13:08:07'
|
desc: '2024.12.24 13:08:07'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '暸望塔',
|
title: '线索来源',
|
||||||
desc: '费县瞭望塔'
|
desc: '无人机上报'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="go-title-03">
|
<div class="go-title-03">
|
||||||
<div class="bannerbox">
|
<div class="bannerbox">
|
||||||
<a-carousel autoplay dots-class="slick-dots slick-thumb">
|
<a-carousel autoplay dots-class="slick-dots slick-thumb">
|
||||||
<div v-for="item in bannerArr">
|
<div v-for="item in bannerArr" @click="bannerClick(item)">
|
||||||
<img :src="item" />
|
<img :src="item" />
|
||||||
</div>
|
</div>
|
||||||
</a-carousel>
|
</a-carousel>
|
||||||
|
|
@ -17,10 +17,13 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- <div class="bigImgbox" v-if="bigImgVisible" @click="hideClick">
|
||||||
|
<img class="bigImg" :src="bigImgSrc" />
|
||||||
|
</div> -->
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { PropType, toRefs } from 'vue';
|
import { PropType, toRefs, ref } from 'vue';
|
||||||
import { CreateComponentType } from '@/packages/index.d';
|
import { CreateComponentType } from '@/packages/index.d';
|
||||||
import { useChartDataFetch } from '@/hooks';
|
import { useChartDataFetch } from '@/hooks';
|
||||||
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore';
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore';
|
||||||
|
|
@ -43,6 +46,16 @@ const {
|
||||||
dataset
|
dataset
|
||||||
} = toRefs(props.chartConfig.option)
|
} = toRefs(props.chartConfig.option)
|
||||||
|
|
||||||
|
const bigImgVisible = ref(false)
|
||||||
|
const bigImgSrc = ref()
|
||||||
|
const bannerClick = (item) =>{
|
||||||
|
console.log('iii', item);
|
||||||
|
bigImgSrc.value = item;
|
||||||
|
// bigImgVisible.value = true
|
||||||
|
}
|
||||||
|
const hideClick = ()=>{
|
||||||
|
bigImgVisible.value = false
|
||||||
|
}
|
||||||
// 数据callback处理(预览时触发)
|
// 数据callback处理(预览时触发)
|
||||||
useChartDataFetch(props.chartConfig, useChartEditStore, (resData: any[]) => {
|
useChartDataFetch(props.chartConfig, useChartEditStore, (resData: any[]) => {
|
||||||
props.chartConfig.option.dataset = resData;
|
props.chartConfig.option.dataset = resData;
|
||||||
|
|
@ -143,4 +156,18 @@ useChartDataFetch(props.chartConfig, useChartEditStore, (resData: any[]) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
.bigImgbox{
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
background: rgba(0,0,0,0.3);
|
||||||
|
display:flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.bigImg{
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue