Compare commits
2 Commits
35e9ffd026
...
8745189f5d
| Author | SHA1 | Date |
|---|---|---|
|
|
8745189f5d | |
|
|
cbec321e91 |
|
|
@ -13,22 +13,43 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="main-bottom"></div>
|
<div class="main-bottom"></div>
|
||||||
<!-- map -->
|
<!-- map -->
|
||||||
<Map ref="MapboxComponent" @showMonitor="showMonitorFunction" />
|
<Map ref="MapboxComponent" @showMonitor="showMonitorFunction" @handlerGetDetails="handlerGetDetails" />
|
||||||
|
|
||||||
<!-- layer controller -->
|
<!-- layer controller -->
|
||||||
<LayerControl @handlerLayerButtonClick="handlerLayerButtonClick"></LayerControl>
|
<LayerControl @handlerLayerButtonClick="handlerLayerButtonClick"></LayerControl>
|
||||||
|
|
||||||
<div class="data-container">
|
<div class="data-container">
|
||||||
|
|
||||||
<!-- case list -->
|
<!-- case list -->
|
||||||
<CaseList></CaseList>
|
<CaseList @handlerLayerButtonClick="handlerLayerButtonClick" @toPosition="toPosition"></CaseList>
|
||||||
<!-- uav -->
|
<!-- uav -->
|
||||||
<UAV @toPosition="toPosition" @handlerUpdateUavLayerData="handlerUpdateUavLayerData" @handlerLayerButtonClick="handlerLayerButtonClick"></UAV>
|
<UAV @toPosition="toPosition" @handlerUpdateUavLayerData="handlerUpdateUavLayerData" @handlerLayerButtonClick="handlerLayerButtonClick"></UAV>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Monitor :currentMonitor="monitorInfo" @register="registerModal" />
|
<Monitor :currentMonitor="monitorInfo" @register="registerModal" />
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<a-modal
|
||||||
|
style="width: 100vw; top: 0px; left: 0px; margin: 0px; padding: 0px"
|
||||||
|
wrap-class-name="full-modal"
|
||||||
|
v-model:open="showInfoOpen"
|
||||||
|
title="详情"
|
||||||
|
:footer="null"
|
||||||
|
:maskClosable="true"
|
||||||
|
:destroyOnClose="true"
|
||||||
|
@cancel="showInfoOpen = false"
|
||||||
|
>
|
||||||
|
<div class="modal-content">
|
||||||
|
<ShowInfoModal v-if="showInfoOpen" :showInfoData="showInfoData" />
|
||||||
|
</div>
|
||||||
|
</a-modal>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import ShowInfoModal from '@/views/demo/tiankongdi/curbspotcity/MapList/ShowInfoModal/index.vue';
|
||||||
import Map from './VideoSupervision/map/map.vue';
|
import Map from './VideoSupervision/map/map.vue';
|
||||||
import LayerControl from './VideoSupervision/layercontrol/index.vue';
|
import LayerControl from './VideoSupervision/layercontrol/index.vue';
|
||||||
import CaseList from './VideoSupervision/caselist/index.vue';
|
import CaseList from './VideoSupervision/caselist/index.vue';
|
||||||
|
|
@ -41,7 +62,7 @@
|
||||||
import { useI18n } from '@/hooks/web/useI18n';
|
import { useI18n } from '@/hooks/web/useI18n';
|
||||||
import { useMessage } from '@/hooks/web/useMessage';
|
import { useMessage } from '@/hooks/web/useMessage';
|
||||||
import { useMultipleTabStore } from '@/store/modules/multipleTab';
|
import { useMultipleTabStore } from '@/store/modules/multipleTab';
|
||||||
|
import { getLoadDroneCaseInfoDetail, getCaseInfoById } from '@/api/tiankongdi/index';
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { createConfirm } = useMessage();
|
const { createConfirm } = useMessage();
|
||||||
|
|
@ -49,7 +70,13 @@
|
||||||
const MapboxComponent = ref();
|
const MapboxComponent = ref();
|
||||||
|
|
||||||
function handlerLayerButtonClick(item) {
|
function handlerLayerButtonClick(item) {
|
||||||
MapboxComponent.value.handlerChangeLayerVisible(item.value, item.checked);
|
if(item.value == 'fufeilayer'){
|
||||||
|
MapboxComponent.value.handlerChangeLayerVisible("fufeiLayerLine", item.checked);
|
||||||
|
MapboxComponent.value.handlerChangeLayerVisible("fufeiLayerFill", item.checked);
|
||||||
|
}else{
|
||||||
|
MapboxComponent.value.handlerChangeLayerVisible(item.value, item.checked);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const fireUserLoginName = ref(localStorage.getItem('fireUserLoginName'));
|
const fireUserLoginName = ref(localStorage.getItem('fireUserLoginName'));
|
||||||
|
|
@ -113,6 +140,24 @@ function handlerUpdateUavLayerData(uavlist){
|
||||||
MapboxComponent.value.handlerUpdateUavLayer(uavLayerGeoJson);
|
MapboxComponent.value.handlerUpdateUavLayer(uavLayerGeoJson);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const showInfoOpen = ref<Boolean>(false);
|
||||||
|
const showInfoData = ref();
|
||||||
|
|
||||||
|
const getInfoList = (id) => {
|
||||||
|
getCaseInfoById({id:id}).then(res => {
|
||||||
|
if(res){
|
||||||
|
showInfoData.value = res
|
||||||
|
showInfoOpen.value = true;
|
||||||
|
}else{
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
function handlerGetDetails(e){
|
||||||
|
getInfoList(e.Id);
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// getWeather();
|
// getWeather();
|
||||||
getFireUserLoginName();
|
getFireUserLoginName();
|
||||||
|
|
@ -177,6 +222,7 @@ onMounted(() => {
|
||||||
top: 50%;
|
top: 50%;
|
||||||
right: 24px;
|
right: 24px;
|
||||||
transform: translate(0, -50%);
|
transform: translate(0, -50%);
|
||||||
|
z-index:9999999;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@
|
||||||
<div class="title">
|
<div class="title">
|
||||||
复飞核实
|
复飞核实
|
||||||
<div class="switch-button">
|
<div class="switch-button">
|
||||||
<a-switch v-model:checked="checked" />
|
<a-switch v-model:checked="fufeiLayer.checked" @change="handlerLayerButtonClick" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="case-list">
|
<div class="case-list">
|
||||||
<div class="case-item" v-for="item in list" :key="item.id">
|
<div class="case-item" v-for="item in list" :key="item.id" @click="toPosition(item)">
|
||||||
<img src="/statistical/prove-icon.png" alt="" />
|
<img src="/statistical/prove-icon.png" alt="" />
|
||||||
<span>{{ item.countyname }}{{ item.streetname }}*********拆除复耕</span>
|
<span>{{ item.countyname }}{{ item.streetname }}*********拆除复耕</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -15,10 +15,26 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, onMounted } from 'vue';
|
import { ref, onMounted,defineEmits } from 'vue';
|
||||||
import { reFlyVerifyPage } from '@/api/statistical';
|
import { reFlyVerifyPage } from '@/api/statistical';
|
||||||
|
|
||||||
const checked = ref<Boolean>(true);
|
const emits = defineEmits(["handlerLayerButtonClick","toPosition"]);
|
||||||
|
|
||||||
|
|
||||||
|
const checked = ref<Boolean>(true);
|
||||||
|
|
||||||
|
const fufeiLayer = ref({
|
||||||
|
lable:"复飞核实",
|
||||||
|
value:"fufeilayer",
|
||||||
|
checked:true,
|
||||||
|
})
|
||||||
|
|
||||||
|
function handlerLayerButtonClick(item){
|
||||||
|
fufeiLayer.value.checked = item;
|
||||||
|
emits("handlerLayerButtonClick",fufeiLayer.value);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
const list = ref<any>([]);
|
const list = ref<any>([]);
|
||||||
function getList() {
|
function getList() {
|
||||||
reFlyVerifyPage({}).then((res) => {
|
reFlyVerifyPage({}).then((res) => {
|
||||||
|
|
@ -26,9 +42,18 @@
|
||||||
list.value = res.items;
|
list.value = res.items;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function toPosition(item){
|
||||||
|
emits("toPosition",[item.lng,item.lat])
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style type="less" scoped>
|
<style type="less" scoped>
|
||||||
|
|
@ -79,6 +104,7 @@
|
||||||
height: 376px;
|
height: 376px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
.case-item {
|
.case-item {
|
||||||
|
cursor:pointer;
|
||||||
border-bottom: 1px dashed #1d60b4;
|
border-bottom: 1px dashed #1d60b4;
|
||||||
padding: 10px 0;
|
padding: 10px 0;
|
||||||
img {
|
img {
|
||||||
|
|
|
||||||
|
|
@ -654,6 +654,7 @@
|
||||||
// handlerLoadPolygon();
|
// handlerLoadPolygon();
|
||||||
handlerLoadMaskLayer();
|
handlerLoadMaskLayer();
|
||||||
loadMonitorLayer();
|
loadMonitorLayer();
|
||||||
|
loadFuFeiLayer();
|
||||||
emits('onload');
|
emits('onload');
|
||||||
map.on('click', (e) => {
|
map.on('click', (e) => {
|
||||||
var center = map.getCenter(); // 获取当前视图中心点
|
var center = map.getCenter(); // 获取当前视图中心点
|
||||||
|
|
@ -794,6 +795,100 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 复飞核实图斑
|
||||||
|
function loadFuFeiLayer(){
|
||||||
|
let sql_filter = '&filter="measure_name"=\'0\'';
|
||||||
|
|
||||||
|
if (map.getSource('fufeiSource')) {
|
||||||
|
map.removeLayer('fufeiLayerLine');
|
||||||
|
map.removeSource('fufeiLayerFill');
|
||||||
|
}
|
||||||
|
map.addLayer({
|
||||||
|
id: 'fufeiLayerLine',
|
||||||
|
type: 'line',
|
||||||
|
source: {
|
||||||
|
type: 'vector',
|
||||||
|
tiles: [
|
||||||
|
VITE_GLOB_API_URL_VAR.value +
|
||||||
|
'/api/DroneCaseInfoSingle/QueryVectorTileByTable?z={z}&x={x}&y={y}&table=view_drone_shp_data&' +
|
||||||
|
sql_filter +
|
||||||
|
'&field="gid","handle_status_id","is_illegal","measure_name","typename","Id",',
|
||||||
|
],
|
||||||
|
minzoom: 1,
|
||||||
|
maxzoom: 20,
|
||||||
|
},
|
||||||
|
'source-layer': 'view_drone_shp_data',
|
||||||
|
layout: {
|
||||||
|
'line-join': 'round',
|
||||||
|
'line-cap': 'round',
|
||||||
|
"visibility": "visible",
|
||||||
|
},
|
||||||
|
paint: {
|
||||||
|
'line-color': [
|
||||||
|
'case',
|
||||||
|
['all', ['==', ['get', 'is_illegal'], 0], ['==', ['get', 'handle_status_id'], 5]], //合法
|
||||||
|
'#0AF703',
|
||||||
|
['any', ['==', ['get', 'is_illegal'], 1], ['!=', ['get', 'handle_status_id'], 5]], //违法
|
||||||
|
'#F70303',
|
||||||
|
['all', ['==', ['get', 'is_illegal'], 2], ['==', ['get', 'handle_status_id'], 5]], //其他
|
||||||
|
'#0382F7',
|
||||||
|
['all', ['==', ['get', 'measure_name'], 0], ['==', ['get', 'handle_status_id'], 5]], //补办手续
|
||||||
|
'#AD04F4',
|
||||||
|
['all', ['==', ['get', 'measure_name'], 1], ['==', ['get', 'handle_status_id'], 5]], //拆除复耕
|
||||||
|
'#F4E004',
|
||||||
|
// 默认
|
||||||
|
'#F70303',
|
||||||
|
],
|
||||||
|
'line-width': 5,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
map.addLayer({
|
||||||
|
id: 'fufeiLayerFill',
|
||||||
|
type: 'fill',
|
||||||
|
source: {
|
||||||
|
type: 'vector',
|
||||||
|
tiles: [
|
||||||
|
VITE_GLOB_API_URL_VAR.value +
|
||||||
|
'/api/DroneCaseInfoSingle/QueryVectorTileByTable?z={z}&x={x}&y={y}&table=view_drone_shp_data' +
|
||||||
|
sql_filter +
|
||||||
|
'&field="gid","handle_status_id","is_illegal","measure_name","typename","Id",',
|
||||||
|
],
|
||||||
|
//
|
||||||
|
minzoom: 1,
|
||||||
|
maxzoom: 20,
|
||||||
|
},
|
||||||
|
'source-layer': 'view_drone_shp_data',
|
||||||
|
layout: {
|
||||||
|
visibility:"visible",
|
||||||
|
},
|
||||||
|
paint: {
|
||||||
|
'fill-color': [
|
||||||
|
'case',
|
||||||
|
['all', ['==', ['get', 'is_illegal'], 0], ['==', ['get', 'handle_status_id'], 5]], //合法
|
||||||
|
'#0AF703',
|
||||||
|
['any', ['==', ['get', 'is_illegal'], 1], ['!=', ['get', 'handle_status_id'], 5]], //违法
|
||||||
|
'#F70303',
|
||||||
|
['all', ['==', ['get', 'is_illegal'], 2], ['==', ['get', 'handle_status_id'], 5]], //其他
|
||||||
|
'#0382F7',
|
||||||
|
['all', ['==', ['get', 'measure_name'], 0], ['==', ['get', 'handle_status_id'], 5]], //补办手续
|
||||||
|
'#AD04F4',
|
||||||
|
['all', ['==', ['get', 'measure_name'], 1], ['==', ['get', 'handle_status_id'], 5]], //拆除复耕
|
||||||
|
'#F4E004',
|
||||||
|
// 默认
|
||||||
|
'#F70303',
|
||||||
|
],
|
||||||
|
'fill-opacity': 0.4,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
map.on('click', 'fufeiLayerFill', (e) => {
|
||||||
|
emits('handlerGetDetails', e.features[0].properties);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// 抛出函数
|
// 抛出函数
|
||||||
defineExpose({
|
defineExpose({
|
||||||
handlerChangeCounty, // 切换县区
|
handlerChangeCounty, // 切换县区
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
<div class="close-video-button" @click="closePlayer">
|
<div class="close-video-button" @click="closePlayer">
|
||||||
<CloseOutlined />
|
<CloseOutlined />
|
||||||
</div>
|
</div>
|
||||||
<video class="video-contain" id="video"></video>
|
<video class="video-contain" id="video" :key="Math.random()"></video>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -248,7 +248,9 @@ function handlerPlayVideo(item){
|
||||||
currentUav = phone;
|
currentUav = phone;
|
||||||
window.websocket.send(phone);
|
window.websocket.send(phone);
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
|
alert("http://live.hopetrytech.com/live/" + phone + ".flv")
|
||||||
if (player) {
|
if (player) {
|
||||||
|
alert("http://live.hopetrytech.com/live/" + phone + ".flv")
|
||||||
player.src("http://live.hopetrytech.com/live/" + phone + ".flv");
|
player.src("http://live.hopetrytech.com/live/" + phone + ".flv");
|
||||||
} else {
|
} else {
|
||||||
player = TCPlayer("video", {});
|
player = TCPlayer("video", {});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue