|
|
@@ -0,0 +1,345 @@
|
|
|
+<template>
|
|
|
+ <div class="full" style="background: #235e70">
|
|
|
+
|
|
|
+ <dv-loading v-if="false" style="color: #dddddd"> 数据加载中 </dv-loading>
|
|
|
+ <map3-d ref="map" @MonitorClick="handleMonitorClick" ></map3-d>
|
|
|
+ <div class="center title" style="width: 100%;height: 7%;position: absolute;top: 0">
|
|
|
+ <div style="width: 30%;height: 100%" >
|
|
|
+ <time-bar></time-bar>
|
|
|
+ </div>
|
|
|
+ <div style="width: 40%;height: 100%" class="center">郑州运营指挥中心</div>
|
|
|
+ <dv-border-box-5 :reverse="true" style="width: 30%;font-size: 20px" :color="['#49baa5', '#dddddd']" backgroundColor="rgba(0, 0, 0, 0.5)">
|
|
|
+ <div class="full center">
|
|
|
+ <top-menu></top-menu>
|
|
|
+ </div>
|
|
|
+ </dv-border-box-5>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+ <!-- 数据面板1 -->
|
|
|
+ <dv-border-box-7 :color="['#49baa5', 'white']" backgroundColor="rgba(0, 0, 0, 0.5)" style="position:absolute;width: 20%;height: 25%;top: 10%;left: 10px">
|
|
|
+ <div id="community-tendency" style="height: 100%;width: 100%;" ></div>
|
|
|
+ </dv-border-box-7>
|
|
|
+
|
|
|
+ <!-- 数据面板2 -->
|
|
|
+ <dv-border-box-7 :color="['#49baa5', 'white']" backgroundColor="rgba(0, 0, 0, 0.5)" style="position:absolute;width: 20%;height: 50%;top: 37%;left: 10px">
|
|
|
+ <div class="full center" style="flex-direction: column">
|
|
|
+ <div style="width: 90%;height: 7%;font-size: 20px;color: white;justify-content: left" class="center"> 事件记录</div>
|
|
|
+ <dv-scroll-board :config="dataConfigA" style="width: 98%;height: 88%" />
|
|
|
+ </div>
|
|
|
+ </dv-border-box-7>
|
|
|
+
|
|
|
+ <!-- 数据面板3 -->
|
|
|
+ <dv-border-box-7 :color="['#49baa5', 'white']" backgroundColor="rgba(0, 0, 0, 0.5)" style="position:absolute;width: 20%;height: 25%;top: 10%;right: 10px">
|
|
|
+ <div class="full center" style="height: 100%">
|
|
|
+ <div style="position: absolute;width: 100%;height: 20%;color: white;top:0;font-size: 18px" class="center">公共设施</div>
|
|
|
+ <div style="width: 250px;height: 100%;" class="center">
|
|
|
+ <dv-decoration-9 :color="['#90d24b', '#319898']" style="width:180px;height:180px;color: #dddddd;font-size: 30px">66</dv-decoration-9>
|
|
|
+ </div>
|
|
|
+ <div style="width: 250px;height: 100%;flex-direction: column;color: white" class="center" >
|
|
|
+ <dv-decoration-11 v-for="(item,index) of deviceList" style="width:100%;height:70px;cursor: pointer" class="click">{{item}}</dv-decoration-11>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </dv-border-box-7>
|
|
|
+
|
|
|
+ <!-- 数据面板4 -->
|
|
|
+ <dv-border-box-7 :color="['#49baa5', 'white']" backgroundColor="rgba(0, 0, 0, 0.5)" style="position:absolute;width: 20%;height: 25%;top: 37%;right: 10px">
|
|
|
+ <div id="accident" style="height: 100%;width: 100%;"></div>
|
|
|
+ </dv-border-box-7>
|
|
|
+
|
|
|
+ <!-- 数据面板5 -->
|
|
|
+ <dv-border-box-7 :color="['#49baa5', 'white']" backgroundColor="rgba(0, 0, 0, 0.5)" style="position:absolute;width: 20%;height: 28%;top: 64%;right: 10px">
|
|
|
+ <div class="full center" style="flex-direction: column">
|
|
|
+ <div style="width: 90%;height: 10%;justify-content: left;color: white;font-size: 20px" class="center">
|
|
|
+ 郑州市社区人口数量Top
|
|
|
+ </div>
|
|
|
+ <dv-capsule-chart :config="dataConfigB" style="width:90%;height:88%" />
|
|
|
+ </div>
|
|
|
+ </dv-border-box-7>
|
|
|
+
|
|
|
+ <!-- 数据面板6 -->
|
|
|
+ <div style="position:absolute;width: 60%;height: 15%;top: 80%;right: 20%;color: white">
|
|
|
+ <div class="full center">
|
|
|
+ <dv-border-box-7 style="cursor: pointer;width: 200px;height: 60px" class="center click" :color="['#58d9c5', 'white']" backgroundColor="rgba(0, 0, 0, 0.8)">
|
|
|
+ <div class="full center " @click="handleDevice(0)">监控</div>
|
|
|
+ </dv-border-box-7>
|
|
|
+ <dv-border-box-7 style="cursor: pointer;width: 200px;height: 60px" class="center click" :color="['#58d9c5', 'white']" backgroundColor="rgba(0, 0, 0, 0.8)">
|
|
|
+ <div class="full center ">交通情况</div>
|
|
|
+ </dv-border-box-7>
|
|
|
+ <dv-border-box-7 style="cursor: pointer;width: 200px;height: 60px" class="center click" :color="['#58d9c5', 'white']" backgroundColor="rgba(0, 0, 0, 0.8)">
|
|
|
+ <div class="full center " @click="handleDevice(1)">事件处理</div>
|
|
|
+ </dv-border-box-7>
|
|
|
+ <dv-border-box-7 style="cursor: pointer;width: 200px;height: 60px" class="center click" :color="['#58d9c5', 'white']" backgroundColor="rgba(0, 0, 0, 0.8)">
|
|
|
+ <div class="full center ">调度中心</div>
|
|
|
+ </dv-border-box-7>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 视屏面板 -->
|
|
|
+ <dv-border-box-10 class="videoPan" v-if="videoShow" :color="['#49baa5', 'white']" backgroundColor="rgba(0, 0, 0, 0.5)" style="position:absolute;width: 50%;height: 50%;top: 20%;right: 25%">
|
|
|
+ <div style="width: 100%;flex-direction: column;" class="full center">
|
|
|
+ <div class="center closeButton" style="cursor: pointer;width: 98%;height: 10%;color: white;font-size: 24px;border-radius: 10px;margin-top: 5px"
|
|
|
+ @click="videoShow=!videoShow"
|
|
|
+ >关闭</div>
|
|
|
+ <div style="width: 98%;height: 85%;">
|
|
|
+ <cstor-live-player :audio="true" style="height: 100%;width: 100%" src="http://36.103.228.148:8888/live/64010500011327385808.flv"/>
|
|
|
+<!-- <iframe src="https://www.zhihu.com/video/1333044671954403328" allowfullscreen> </iframe>-->
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </dv-border-box-10>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Map3D from "../../components/3DMap/Map3D";
|
|
|
+import Charts, {changeDefaultConfig} from "@jiaminghi/charts";
|
|
|
+import CstorLivePlayer from 'cstor-live-player'
|
|
|
+import 'cstor-live-player/dist/cstor-live-player.css';
|
|
|
+import TimeBar from "../../components/3DMap/TimeBar";
|
|
|
+import TopMenu from "../../page/index/top/top-menu";
|
|
|
+export default {
|
|
|
+ name: "mainScreen",
|
|
|
+ components: {TopMenu, TimeBar, Map3D,CstorLivePlayer},
|
|
|
+ mounted() {
|
|
|
+ this.initCharts();
|
|
|
+ this.onload();
|
|
|
+ },
|
|
|
+ data(){
|
|
|
+ return{
|
|
|
+ deviceList: ['监控设备','消防点','医院'],
|
|
|
+ communityTendency: {},
|
|
|
+ accident: {},
|
|
|
+ videoShow: false,
|
|
|
+ dataConfigA: {
|
|
|
+ rowNum: 10,
|
|
|
+ header: ['事件类型','负责人','时间','状态'],
|
|
|
+ headerBGC: '#ab9d3a',
|
|
|
+ data: [
|
|
|
+ ['公共卫生事件', '张**', '2021-4-24','处理中'],
|
|
|
+ ['自然灾害', '张**', '2021-4-24','处理中'],
|
|
|
+ ['民众纠纷', '张**', '2021-4-24','处理中'],
|
|
|
+ ['公共卫生事件', '张**', '2021-4-24','处理中'],
|
|
|
+ ['自然灾害', '张**', '2021-4-24','处理中'],
|
|
|
+ ['民众纠纷', '张**', '2021-4-24','处理中'],
|
|
|
+ ['公共卫生事件', '张**', '2021-4-24','处理中'],
|
|
|
+ ['自然灾害', '张**', '2021-4-24','处理中'],
|
|
|
+ ['民众纠纷', '张**', '2021-4-24','处理中'],
|
|
|
+ ['公共卫生事件', '张**', '2021-4-24','处理中'],
|
|
|
+ ['自然灾害', '张**', '2021-4-24','处理中'],
|
|
|
+ ['民众纠纷', '张**', '2021-4-24','处理中'],
|
|
|
+ ],
|
|
|
+ oddRowBGC: 'rgba(103,97,41,0.7)',
|
|
|
+ evenRowBGC: 'rgba(110,86,4,0.7)',
|
|
|
+ },
|
|
|
+ dataConfigB: {
|
|
|
+ rowNum: 7,
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ name: '阅海万家',
|
|
|
+ value: 550
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '幸福里',
|
|
|
+ value: 480
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '安康区',
|
|
|
+ value: 477
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '跑马地花园',
|
|
|
+ value: 460
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '鑫海家园',
|
|
|
+ value: 440
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '浦新城',
|
|
|
+ value: 436
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '乐昌新区',
|
|
|
+ value: 360
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ personData: [
|
|
|
+ {agencyName: '重点人员',personNum: 443},
|
|
|
+ {agencyName: '流动人员',personNum: 563},
|
|
|
+ {agencyName: '高龄人员',personNum: 356},
|
|
|
+ {agencyName: '吸毒人员',personNum: 443},
|
|
|
+ {agencyName: '前科人员',personNum: 563},
|
|
|
+ {agencyName: '留守人员',personNum: 356},
|
|
|
+ ],
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ async onload(){
|
|
|
+ changeDefaultConfig('color',['rgb(208,200,21)','#747373','#6e6138','rgba(70,103,83,0.59)','#674a2c','#621752']);
|
|
|
+ this.setPersonOption(this.personData);
|
|
|
+ this.setAccidentOption(this.personData);
|
|
|
+ },
|
|
|
+ handleMonitorClick(){
|
|
|
+ this.videoShow = true;
|
|
|
+ },
|
|
|
+ initCharts(){
|
|
|
+ this.newCharts("community-tendency","communityTendency");
|
|
|
+ this.newCharts("accident","accident");
|
|
|
+ },
|
|
|
+ newCharts(id,propertyName){
|
|
|
+ const container = document.getElementById(id)
|
|
|
+ let myChart = new Charts(container);
|
|
|
+ this[propertyName] = myChart;
|
|
|
+ },
|
|
|
+ setPersonOption(list){
|
|
|
+ const _this =this;
|
|
|
+ let nameList = [];
|
|
|
+ let valueList = [];
|
|
|
+ list.forEach(item => {
|
|
|
+ nameList.push(item.agencyName);
|
|
|
+ valueList.push(item.personNum);
|
|
|
+ })
|
|
|
+ this.communityTendency.setOption({
|
|
|
+ title: {
|
|
|
+ text: '人口分布',
|
|
|
+ style: {
|
|
|
+ fill: '#dddddd',
|
|
|
+ fontSize: 17,
|
|
|
+ fontWeight: 'bold',
|
|
|
+ textAlign: 'center',
|
|
|
+ textBaseline: 'bottom'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ xAxis: {
|
|
|
+ name: '分类',
|
|
|
+ data: nameList ,
|
|
|
+ nameTextStyle: {
|
|
|
+ fill: '#dddddd',
|
|
|
+ fontSize: 10
|
|
|
+ },
|
|
|
+ axisLabel:{
|
|
|
+ style: {
|
|
|
+ fill: '#4be0e0',
|
|
|
+ fontSize: 15
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ yAxis: {
|
|
|
+ name: '人口数',
|
|
|
+ data: 'value',
|
|
|
+ nameTextStyle: {
|
|
|
+ fill: '#dddddd',
|
|
|
+ fontSize: 10
|
|
|
+ },
|
|
|
+ axisLabel:{
|
|
|
+ style: {
|
|
|
+ fill: '#dddddd',
|
|
|
+ fontSize: 12
|
|
|
+ }}
|
|
|
+ },
|
|
|
+ legend: {
|
|
|
+ show:true
|
|
|
+ },
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ data: valueList,
|
|
|
+ type: 'bar'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ });
|
|
|
+ },
|
|
|
+ setAccidentOption(list){
|
|
|
+ this.accident.setOption({
|
|
|
+ title: {
|
|
|
+ text: '交通事故/事件发生',
|
|
|
+ style: {
|
|
|
+ fill: '#dddddd',
|
|
|
+ fontSize: 17,
|
|
|
+ fontWeight: 'bold',
|
|
|
+ textAlign: 'center',
|
|
|
+ textBaseline: 'bottom'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ xAxis: {
|
|
|
+ name: '第二周',
|
|
|
+ data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
|
|
|
+ nameTextStyle: {
|
|
|
+ fill: '#dddddd',
|
|
|
+ fontSize: 10
|
|
|
+ },
|
|
|
+ axisLabel:{
|
|
|
+ style: {
|
|
|
+ fill: '#dddddd',
|
|
|
+ fontSize: 12
|
|
|
+ }}
|
|
|
+ },
|
|
|
+ yAxis: {
|
|
|
+ name: '数量',
|
|
|
+ data: 'value',
|
|
|
+ nameTextStyle: {
|
|
|
+ fill: '#dddddd',
|
|
|
+ fontSize: 10
|
|
|
+ },
|
|
|
+ axisLabel:{
|
|
|
+ style: {
|
|
|
+ fill: '#dddddd',
|
|
|
+ fontSize: 12
|
|
|
+ }}
|
|
|
+ },
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ data: [1200, 2230, 1900, 2100, 3500, 4200, 3985],
|
|
|
+ type: 'line',
|
|
|
+ lineArea: {
|
|
|
+ show: true,
|
|
|
+ gradient: ['rgba(55, 162, 218, 0.6)', 'rgba(55, 162, 218, 0)']
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ });
|
|
|
+ },
|
|
|
+ handleDevice(index){
|
|
|
+ console.log(index)
|
|
|
+ switch (index){
|
|
|
+ case 0:
|
|
|
+ this.$refs['map'].toLayer('monitoring');
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ this.$refs['map'].toLayer('event');
|
|
|
+ break;
|
|
|
+ default: ;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+ .full{
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ .center{
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ .title{
|
|
|
+ color: white;
|
|
|
+ font-size: 40px;
|
|
|
+ }
|
|
|
+ .demo{
|
|
|
+ color: rgba(0, 100, 100, 0.5);
|
|
|
+ }
|
|
|
+ .closeButton{
|
|
|
+ background:rgba(84,36,17,0.5) ;
|
|
|
+ }
|
|
|
+ .closeButton:hover{
|
|
|
+ background:rgba(84,36,17,0.8) ;
|
|
|
+ }
|
|
|
+ .click:hover{
|
|
|
+ transform: translate(2px,2px);
|
|
|
+ }
|
|
|
+</style>
|