From 7982ad84d121235b5838370b47a310101958a511 Mon Sep 17 00:00:00 2001
From: gongjiale <942894820@qq.com>
Date: Thu, 24 Nov 2022 15:59:20 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/pages/area/index.vue | 508 +++++++++++++++++++--------------
1 file changed, 291 insertions(+), 217 deletions(-)
diff --git a/src/views/pages/area/index.vue b/src/views/pages/area/index.vue
index 0fe8324..d3cf109 100644
--- a/src/views/pages/area/index.vue
+++ b/src/views/pages/area/index.vue
@@ -38,7 +38,10 @@
累计事件数量(2022.05.25-至今)
-
{{ allListDataNum }}件
+
+ {{ allListDataNum }}件
+
@@ -48,16 +51,23 @@
+
-
+
-
+
+
+
+
+
+
+
-
+
@@ -75,33 +85,45 @@
地图显示
-
+
重点区域
-
+
-
+
- 人流热力
+
+ 人流热力
+
-
+
全市
本地
外地
-
+
@@ -113,16 +135,25 @@ import { searchCamera } from "@/api/videoSurveillance/index";
import bus from "@/views/layout/bus";
import complaintEvent from "./components/ComplaintEvent";
import EarlyWarning from "./components/EarlyWarning";
-import VideoPlay from './components/VideoPlay'
+import VideoPlay from "./components/VideoPlay";
import VideoListRight from "./components/VideoListRight";
+import VideoListLeft from "./components/VideoListLeft";
import SiteListMore from "./components/SiteListMore";
import { selectByJdWd } from "@/api/construction/index";
-import { createSiteListPop,createCameraDetailsPop,createEventListDetailsPop,createImportantAreaPop } from "@/supermap/createMarkerPopup";
-import { listPassengerFlow, listPassengerFlowByAllNums } from "@/api/civilizedCity.js";
+import {
+ createSiteListPop,
+ createCameraDetailsPop,
+ createEventListDetailsPop,
+ createImportantAreaPop,
+} from "@/supermap/createMarkerPopup";
+import {
+ listPassengerFlow,
+ listPassengerFlowByAllNums,
+} from "@/api/civilizedCity.js";
import { selectByAreaEvent, selectKeyArea } from "@/api/area";
import { gcjLL2wgs84LL } from "@/utils/coordinateSystemTransform";
// 时间轴
-import HorizonTimeLine from './components/HorizonTimeLine'
+import HorizonTimeLine from "./components/HorizonTimeLine";
export default {
data() {
return {
@@ -131,16 +162,22 @@ export default {
state: "",
constructionSiteData: [],
- changeLayerBtnList: ['AI事件','视频监控', '聚集区'],
- changeLayerBtnListArea: ['公园广场','商业街区','景区景点','海水浴场','窗口单位'],
- changeLayerBtnListHot: ['全市','本市','外地',],
+ changeLayerBtnList: ["AI事件", "视频监控", "聚集区"],
+ changeLayerBtnListArea: [
+ "公园广场",
+ "商业街区",
+ "景区景点",
+ "海水浴场",
+ "窗口单位",
+ ],
+ changeLayerBtnListHot: ["全市", "本市", "外地"],
changeLayerBtnGroup: [],
- thermodynamicPeopleType: '',
+ thermodynamicPeopleType: "",
thermodynamicPeopleAll: [],
thermodynamicPeopleLocal: [],
thermodynamicPeopleNoLocal: [],
- allListDataNum: '',
+ allListDataNum: "",
openVideo: false,
channelCode: [],
hotDataNum: [],
@@ -148,13 +185,14 @@ export default {
timelineData: [],
// 热力图当日数据
hotDataAll: {},
- keyAreasShow:false, //是否显示重点区域。
+ keyAreasShow: false, //是否显示重点区域。
};
},
components: {
TiledMap,
complaintEvent,
VideoListRight,
+ VideoListLeft,
SiteListMore,
VideoPlay,
HorizonTimeLine,
@@ -168,16 +206,16 @@ export default {
this.hiMapFun
);
- bus.$off('openCurrentVideoSurveillance')
- bus.$on('openCurrentVideoSurveillance', (channelCode) => {
- this.openVideo = true
- this.channelCode.unshift(channelCode)
- })
- bus.$off('openCurrentVideoWaterPoint')
- bus.$on('openCurrentVideoWaterPoint', channelCode => {
- this.openVideo = true
- this.channelCode.unshift(channelCode)
- })
+ bus.$off("openCurrentVideoSurveillance");
+ bus.$on("openCurrentVideoSurveillance", (channelCode) => {
+ this.openVideo = true;
+ this.channelCode.unshift(channelCode);
+ });
+ bus.$off("openCurrentVideoWaterPoint");
+ bus.$on("openCurrentVideoWaterPoint", (channelCode) => {
+ this.openVideo = true;
+ this.channelCode.unshift(channelCode);
+ });
// 根据经纬度查询半径内所有的工地
bus.$off("openCauseAnalysis");
bus.$on("openCauseAnalysis", (row) => {
@@ -188,11 +226,13 @@ export default {
// this.circle(latLng);
this.hiMap.mapObj.map.flyTo({ lat: row.wd, lng: row.jd });
// this.WithinRadiusSite(latLng);
- let dataEvent = [{
+ let dataEvent = [
+ {
latLng: { lat: row.wd, lng: row.jd },
data: row,
type: "site",
- }]
+ },
+ ];
this.hiMapFun.addPointsToMap(
dataEvent,
"construction.png",
@@ -200,117 +240,117 @@ export default {
createSiteListPop
);
});
-
+
bus.$off("roadOnMap");
- bus.$on("roadOnMap",(roadData) => {
+ bus.$on("roadOnMap", (roadData) => {
this.roadOnMap(roadData);
- })
+ });
bus.$off("removeCameraLayer");
- bus.$on("removeCameraLayer",(type) => {
- this.hiMapFun.removeLayerByLayerName(type)
- })
-
- bus.$off("CameraSingleDataOnMap");
- bus.$on("CameraSingleDataOnMap",(labelName,data) => {
- this.addResourceTomap(labelName,data);
- })
+ bus.$on("removeCameraLayer", (type) => {
+ this.hiMapFun.removeLayerByLayerName(type);
+ });
- this.thermodynamic()
- this.personToday()
- this.getCurrentTime()
+ bus.$off("CameraSingleDataOnMap");
+ bus.$on("CameraSingleDataOnMap", (labelName, data) => {
+ this.addResourceTomap(labelName, data);
+ });
+
+ this.thermodynamic();
+ this.personToday();
+ this.getCurrentTime();
// 获取当日全部数据
for (let i = 0; i < this.timelineData.length; i++) {
- this.todayAllData(this.timelineData[i].timeId)
+ this.todayAllData(this.timelineData[i].timeId);
}
- },
+ },
methods: {
// 获取年月日
- getCurrentTime () {
- const yy = new Date().getFullYear()
- const m = new Date().getMonth() + 1
- const mm = m < 10 ? '0' + m : m
+ getCurrentTime() {
+ const yy = new Date().getFullYear();
+ const m = new Date().getMonth() + 1;
+ const mm = m < 10 ? "0" + m : m;
const dd =
new Date().getDate() < 10
- ? '0' + new Date().getDate()
- : new Date().getDate()
+ ? "0" + new Date().getDate()
+ : new Date().getDate();
- this.gettime = yy + mm + dd
+ this.gettime = yy + mm + dd;
// console.log(this.gettime);
for (let i = 8; i <= 20; i++) {
if (i < 10) {
this.timelineData.push({
- timeId: this.gettime + '0' + i + '00',
- year: i
- })
+ timeId: this.gettime + "0" + i + "00",
+ year: i,
+ });
} else {
this.timelineData.push({
- timeId: this.gettime + i + '00',
- year: i
- })
+ timeId: this.gettime + i + "00",
+ year: i,
+ });
}
}
// console.log(this.timelineData);
},
// 全部
- todayAllData (val) {
+ todayAllData(val) {
const params = {
- timeId: val
- }
- this.hotDataAll[val] = []
+ timeId: val,
+ };
+ this.hotDataAll[val] = [];
listPassengerFlow(params).then((res) => {
// console.log(res.data);
// this.hotDataAll.params = res.data;
- this.hotDataAll[val] = res.data
- })
+ this.hotDataAll[val] = res.data;
+ });
// console.log(this.hotDataAll);
},
// 热力图点击事件
- timeIdData (val) {
+ timeIdData(val) {
// 清除实时热力图
- this.hiMapFun.removeLayerByLayerName('thermodynamic')
- this.hiMapFun.removeLayerByLayerName('types')
- const dataA = []
- const dataNumber = []
- const dataMax = []
+ this.hiMapFun.removeLayerByLayerName("thermodynamic");
+ this.hiMapFun.removeLayerByLayerName("types");
+ const dataA = [];
+ const dataNumber = [];
+ const dataMax = [];
- const listB = this.hotDataAll[val]
- console.log(listB)
+ const listB = this.hotDataAll[val];
+ console.log(listB);
// 最大值
for (let num = 0; num < listB.length; num++) {
- dataNumber.push(listB[num].allNums)
+ dataNumber.push(listB[num].allNums);
}
- const max = Math.max.apply(null, dataNumber)
- console.log(max) // 16617
+ const max = Math.max.apply(null, dataNumber);
+ console.log(max); // 16617
listB.forEach((item) => {
- const arr = [0, 0.0, '', '0', '0.0']
+ const arr = [0, 0.0, "", "0", "0.0"];
if (arr.indexOf(item.latitude) == -1) {
dataA.push([
Number(item.latitude),
Number(item.longitude),
- Number((item.allNums / max).toFixed(1))
- ])
+ Number((item.allNums / max).toFixed(1)),
+ ]);
}
- })
+ });
// 筛选
dataA.forEach((item) => {
if (item[2] > 0.1) {
- dataMax.push(item)
+ dataMax.push(item);
}
- })
+ });
- this.hiMapFun.thermodynamic(dataMax, 25, 'types')
+ this.hiMapFun.thermodynamic(dataMax, 25, "types");
// });
},
// 获取热力图的按钮
- hotName (item) {
+ hotName(item) {
// console.log(item);
if (this.checkList.indexOf(item) == -1) {
- this.checkList.push(item)
- this.bottomTabList[3].img = this.bottomTabList[3].imgActive
+ this.checkList.push(item);
+ this.bottomTabList[3].img = this.bottomTabList[3].imgActive;
}
- console.log(this.checkList)
+ console.log(this.checkList);
},
querySearchAsync(queryString, cb) {
if (queryString.length > 0) {
@@ -320,10 +360,10 @@ export default {
}
},
// 人口聚集今日事件大于5000
- personToday () {
+ personToday() {
listPassengerFlowByAllNums().then((res) => {
- this.hotDataNum = res.data
- })
+ this.hotDataNum = res.data;
+ });
},
handleSelect(item) {
this.hiMapFun.clearAllLayers();
@@ -428,70 +468,74 @@ export default {
if (this.changeLayerBtnGroup.indexOf(item) !== -1) {
switch (item) {
case "AI事件":
- this.hiMapFun.removeLayerByLayerName('EventListDetail')
+ this.hiMapFun.removeLayerByLayerName("EventListDetail");
selectByAreaEvent().then((res) => {
const dataEvent = [];
res.data.data.events.forEach((item) => {
- dataEvent.push(
- {
- latLng: { lat: item.latitude, lng: item.longitude },
- data: item,
- type: "eventList",
- }
- )
- })
- this.hiMapFun.addResourceOnMapWithoutSuperMapCluster(dataEvent, "poi-event.png", "EventListDetail", createEventListDetailsPop)
- })
+ dataEvent.push({
+ latLng: { lat: item.latitude, lng: item.longitude },
+ data: item,
+ type: "eventList",
+ });
+ });
+ this.hiMapFun.addResourceOnMapWithoutSuperMapCluster(
+ dataEvent,
+ "poi-event.png",
+ "EventListDetail",
+ createEventListDetailsPop
+ );
+ });
break;
case "视频监控":
- this.addResourceTomap('全部',this.$refs.videoListRef.cameraAllData)
+ this.addResourceTomap(
+ "全部",
+ this.$refs.videoListRef.cameraAllData
+ );
break;
case "聚集区":
- this.hiMapFun.removeLayerByLayerName('PersonHotDetail')
- const hotEventListDetail = []
+ this.hiMapFun.removeLayerByLayerName("PersonHotDetail");
+ const hotEventListDetail = [];
this.hotDataNum.forEach((item) => {
hotEventListDetail.push({
latLng: { lat: item.latitude, lng: item.longitude },
data: item,
- type: 'personHot'
- })
- })
+ type: "personHot",
+ });
+ });
this.hiMapFun.addPointsToMap(
hotEventListDetail,
- 'poi-blue.png',
- 'PersonHotDetail'
- )
+ "poi-blue.png",
+ "PersonHotDetail"
+ );
break;
case "公园广场":
case "商业街区":
case "景区景点":
case "海水浴场":
case "窗口单位":
- this.hiMapFun.removeLayerByLayerName(item)
- selectKeyArea({ type: item}).then((res) => {
- if(item === '商业街区') {
+ this.hiMapFun.removeLayerByLayerName(item);
+ selectKeyArea({ type: item }).then((res) => {
+ if (item === "商业街区") {
res.data.data.forEach((newItem) => {
- if(newItem.point) {
- let arr = JSON.parse(newItem.point)
- let areaLatLng = []
+ if (newItem.point) {
+ let arr = JSON.parse(newItem.point);
+ let areaLatLng = [];
arr.forEach((pointItem) => {
let lonLat = gcjLL2wgs84LL(pointItem[0], pointItem[1]);
- areaLatLng.push([lonLat[1],lonLat[0]])
- })
- this.hiMapFun.addAreaToMap(areaLatLng)
+ areaLatLng.push([lonLat[1], lonLat[0]]);
+ });
+ this.hiMapFun.addAreaToMap(areaLatLng);
}
- })
+ });
} else {
const dataEvent = [];
res.data.data.forEach((item) => {
- dataEvent.push(
- {
- latLng: { lat: item.latitude, lng: item.longitude },
- data: item,
- type: "site",
- }
- )
- })
+ dataEvent.push({
+ latLng: { lat: item.latitude, lng: item.longitude },
+ data: item,
+ type: "site",
+ });
+ });
this.hiMapFun.addPointsToMap(
dataEvent,
"poi-red.png",
@@ -499,7 +543,7 @@ export default {
createImportantAreaPop
);
}
- })
+ });
break;
default:
break;
@@ -511,19 +555,19 @@ export default {
case "景区景点":
case "海水浴场":
case "窗口单位":
- if(item === '商业街区') {
- this.hiMapFun.removerPolygon()
+ if (item === "商业街区") {
+ this.hiMapFun.removerPolygon();
}
- this.hiMapFun.removeLayerByLayerName(item)
+ this.hiMapFun.removeLayerByLayerName(item);
break;
case "AI事件":
- this.hiMapFun.removeLayerByLayerName('EventListDetail')
+ this.hiMapFun.removeLayerByLayerName("EventListDetail");
break;
case "视频监控":
- this.hiMapFun.removeLayerByLayerName('全部')
+ this.hiMapFun.removeLayerByLayerName("全部");
break;
case "聚集区":
- this.hiMapFun.removeLayerByLayerName('PersonHotDetail')
+ this.hiMapFun.removeLayerByLayerName("PersonHotDetail");
break;
default:
break;
@@ -531,20 +575,24 @@ export default {
}
},
- addResourceTomap(type,data) {
+ addResourceTomap(type, data) {
const dataEvent = [];
data.forEach((item) => {
- const arr = [0,0.0,'','0','0.0']
- if(arr.indexOf(item.gpsX) == -1){
+ const arr = [0, 0.0, "", "0", "0.0"];
+ if (arr.indexOf(item.gpsX) == -1) {
dataEvent.push({
latLng: { lat: Number(item.gpsY), lng: Number(item.gpsX) },
data: item,
- type: 'videoSurveillance'
+ type: "videoSurveillance",
});
}
-
});
- this.hiMapFun.addResourceOnMapWithoutSuperMapCluster(dataEvent, "videoSurveillance.png", type, createCameraDetailsPop)
+ this.hiMapFun.addResourceOnMapWithoutSuperMapCluster(
+ dataEvent,
+ "videoSurveillance.png",
+ type,
+ createCameraDetailsPop
+ );
},
thermodynamic() {
@@ -552,97 +600,114 @@ export default {
let dataNumberLocal = [];
let dataNumberNoLocal = [];
listPassengerFlow().then((res) => {
- const data = res.data;
- // 最大值
- for (let num = 0; num < data.length; num++) {
- dataNumber.push(data[num].allNums);
- dataNumberLocal.push(data[num].localNums);
- dataNumberNoLocal.push(data[num].nonlocalNums);
- }
- let max = Math.max.apply(null, dataNumber);
- let maxLocal = Math.max.apply(null, dataNumberLocal);
- let maxNoLocal = Math.max.apply(null, dataNumberNoLocal);
- data.forEach((item) => {
- const arr = [0, 0.0, "", "0", "0.0"];
- if (arr.indexOf(item.latitude) == -1 && arr.indexOf(item.longitude) == -1) {
- //全部
- if(item.allNums !== '0'){
- let allNums = Number((item.allNums / max).toFixed(1))
- if(allNums > 0.1){
- this.thermodynamicPeopleAll.push([
- Number(item.latitude),
- Number(item.longitude),
- allNums
- ]);
- }
- }
- //本地
- if(item.localNums !== '0'){
- let localNums = Number((item.localNums / maxLocal).toFixed(1))
- if(localNums > 0.1){
- this.thermodynamicPeopleLocal.push([
- Number(item.latitude),
- Number(item.longitude),
- localNums
- ]);
- }
- }
- //外地
- if(item.nonlocalNums !== '0'){
- let nonlocalNums = Number((item.nonlocalNums / maxNoLocal).toFixed(1))
- if(nonlocalNums > 0.1){
- this.thermodynamicPeopleNoLocal.push([
- Number(item.latitude),
- Number(item.longitude),
- nonlocalNums
- ]);
- }
+ const data = res.data;
+ // 最大值
+ for (let num = 0; num < data.length; num++) {
+ dataNumber.push(data[num].allNums);
+ dataNumberLocal.push(data[num].localNums);
+ dataNumberNoLocal.push(data[num].nonlocalNums);
+ }
+ let max = Math.max.apply(null, dataNumber);
+ let maxLocal = Math.max.apply(null, dataNumberLocal);
+ let maxNoLocal = Math.max.apply(null, dataNumberNoLocal);
+ data.forEach((item) => {
+ const arr = [0, 0.0, "", "0", "0.0"];
+ if (
+ arr.indexOf(item.latitude) == -1 &&
+ arr.indexOf(item.longitude) == -1
+ ) {
+ //全部
+ if (item.allNums !== "0") {
+ let allNums = Number((item.allNums / max).toFixed(1));
+ if (allNums > 0.1) {
+ this.thermodynamicPeopleAll.push([
+ Number(item.latitude),
+ Number(item.longitude),
+ allNums,
+ ]);
}
}
- });
+ //本地
+ if (item.localNums !== "0") {
+ let localNums = Number((item.localNums / maxLocal).toFixed(1));
+ if (localNums > 0.1) {
+ this.thermodynamicPeopleLocal.push([
+ Number(item.latitude),
+ Number(item.longitude),
+ localNums,
+ ]);
+ }
+ }
+ //外地
+ if (item.nonlocalNums !== "0") {
+ let nonlocalNums = Number(
+ (item.nonlocalNums / maxNoLocal).toFixed(1)
+ );
+ if (nonlocalNums > 0.1) {
+ this.thermodynamicPeopleNoLocal.push([
+ Number(item.latitude),
+ Number(item.longitude),
+ nonlocalNums,
+ ]);
+ }
+ }
+ }
});
+ });
},
// 清除热力图
clearThermodynamic() {
this.hiMapFun.removeLayerByLayerName("types");
this.hiMapFun.removeLayerByLayerName("thermodynamic");
- this.thermodynamicPeopleType = ''
+ this.thermodynamicPeopleType = "";
},
changeThermodynamicPeopleType(value) {
this.hiMapFun.removeLayerByLayerName("types");
switch (value) {
- case 'all':
+ case "all":
this.hiMapFun.removeLayerByLayerName("thermodynamic");
- this.hiMapFun.thermodynamic(this.thermodynamicPeopleAll, 25, "thermodynamic");
+ this.hiMapFun.thermodynamic(
+ this.thermodynamicPeopleAll,
+ 25,
+ "thermodynamic"
+ );
break;
- case 'local':
+ case "local":
this.hiMapFun.removeLayerByLayerName("thermodynamic");
- this.hiMapFun.thermodynamic(this.thermodynamicPeopleLocal, 25, "thermodynamic");
+ this.hiMapFun.thermodynamic(
+ this.thermodynamicPeopleLocal,
+ 25,
+ "thermodynamic"
+ );
break;
- case 'noLocal':
+ case "noLocal":
this.hiMapFun.removeLayerByLayerName("thermodynamic");
- this.hiMapFun.thermodynamic(this.thermodynamicPeopleNoLocal, 25, "thermodynamic");
+ this.hiMapFun.thermodynamic(
+ this.thermodynamicPeopleNoLocal,
+ 25,
+ "thermodynamic"
+ );
break;
}
},
- removeRoadCauseAnalysis () {
- this.hiMapFun.removerPolygon()
- this.hiMapFun.removeLayerByLayerName('roadPoint')
- this.hiMapFun.removeLayerByLayerName('EventListDetail')
- this.hiMapFun.removeLayerByLayerName('PersonHotDetail')
+ removeRoadCauseAnalysis() {
+ this.hiMapFun.removerPolygon();
+ this.hiMapFun.removeLayerByLayerName("roadPoint");
+ this.hiMapFun.removeLayerByLayerName("EventListDetail");
+ this.hiMapFun.removeLayerByLayerName("PersonHotDetail");
this.hiMapFun.removeLayerByLayerName("thermodynamic");
this.hiMapFun.removeLayerByLayerName("types");
- this.hiMapFun.removeLayerByLayerName('全部')
- this.hiMapFun.removeLayerByLayerName('公园广场')
- this.hiMapFun.removeLayerByLayerName('商业街区')
- this.hiMapFun.removeLayerByLayerName('景区景点')
- this.hiMapFun.removeLayerByLayerName('海水浴场')
- this.hiMapFun.removeLayerByLayerName('窗口单位')
+ this.hiMapFun.removeLayerByLayerName("全部");
+ this.hiMapFun.removeLayerByLayerName("公园广场");
+ this.hiMapFun.removeLayerByLayerName("商业街区");
+ this.hiMapFun.removeLayerByLayerName("景区景点");
+ this.hiMapFun.removeLayerByLayerName("海水浴场");
+ this.hiMapFun.removeLayerByLayerName("窗口单位");
},
//点击是否显示重点区域。
- handleKeyArea(){
- this.keyAreasShow=!this.keyAreasShow;
- }
+ handleKeyArea() {
+ this.keyAreasShow = !this.keyAreasShow;
+ },
},
beforeDestroy() {},
};
@@ -749,14 +814,23 @@ export default {
background: rgba($color: #05213b, $alpha: .85)
}
.complaintContent1 {
- position: absolute;
+ position: absolute;
z-index: 1000;
right: 10px;
top: 90px;
- height:980px;
+ height:660px;
width: 478px;
background: rgba($color: #05213b, $alpha: .85)
}
+ .mainVideoList{
+ position: absolute;
+ z-index: 10;
+ right: 10px;
+ top: 760px;
+ width: 478px;
+ height:200px;
+ background: rgba($color: #05213b, $alpha: .85);
+}
.eventNum {
width: 245px;
height: 92px;