|
@@ -5,14 +5,14 @@
|
|
<div class="con_left con_left_js">
|
|
<div class="con_left con_left_js">
|
|
<div class="list_tit">基本信息</div>
|
|
<div class="list_tit">基本信息</div>
|
|
<div class="info-list_left">
|
|
<div class="info-list_left">
|
|
- <p>用户总数:257005户</p>
|
|
|
|
- <p>管线总长:930公里</p>
|
|
|
|
- <p>商业用户:3999户 </p>
|
|
|
|
- <p>中压长度:186.707公里</p>
|
|
|
|
- <p>居民用户:252906户 </p>
|
|
|
|
- <p>次高压长度:65.9公里</p>
|
|
|
|
- <p>工业用户:100户 </p>
|
|
|
|
- <p>低压长度:577公里</p>
|
|
|
|
|
|
+ <p>用户总数:{{totalUsers}}户</p>
|
|
|
|
+ <p>管线总长:{{totalLength}}公里</p>
|
|
|
|
+ <p>商业用户:{{businessUsers}}户 </p>
|
|
|
|
+ <p>中压长度:{{centerPressLength}}公里</p>
|
|
|
|
+ <p>居民用户:{{civilUsers}}户 </p>
|
|
|
|
+ <p>次高压长度:{{secondaryPressLength}}公里</p>
|
|
|
|
+ <p>工业用户:{{industryUsers}}户 </p>
|
|
|
|
+ <p>低压长度:{{lowPressLength}}公里</p>
|
|
</div>
|
|
</div>
|
|
<div class="list_tit">监测长度</div>
|
|
<div class="list_tit">监测长度</div>
|
|
<div class="cd_fx" ref="jccd"></div>
|
|
<div class="cd_fx" ref="jccd"></div>
|
|
@@ -197,10 +197,11 @@
|
|
<div class="yh_fx" ref="yhfx"></div>
|
|
<div class="yh_fx" ref="yhfx"></div>
|
|
<div class="list_tit">事件分析</div>
|
|
<div class="list_tit">事件分析</div>
|
|
<div class="info-list_right">
|
|
<div class="info-list_right">
|
|
- <p>报警累计:6</p>
|
|
|
|
- <p>已处理:6,未处理:0</p>
|
|
|
|
- <p>泄露:3,震动:1</p>
|
|
|
|
- <p>位移:2,超限:0</p>
|
|
|
|
|
|
+ <p>报警累计:{{eventTotal}}</p>
|
|
|
|
+ <p>已处理:{{eventTotal}},未处理:0</p>
|
|
|
|
+ <p style="width:100%">
|
|
|
|
+ <span style="margin-right: 20px;" v-for="item in eventNumberList">{{item.eventTypeName.substring(0,2)}}:{{item.countSum}}</span>
|
|
|
|
+ </p>
|
|
</div>
|
|
</div>
|
|
<div class="sj_fx" ref="sjfx"></div>
|
|
<div class="sj_fx" ref="sjfx"></div>
|
|
</div>
|
|
</div>
|
|
@@ -216,7 +217,11 @@
|
|
getUserProfile
|
|
getUserProfile
|
|
} from "@/api/system/user";
|
|
} from "@/api/system/user";
|
|
import {
|
|
import {
|
|
- getEventList,
|
|
|
|
|
|
+ getPipeLengthByPressureLevel,
|
|
|
|
+ userStats
|
|
|
|
+ } from "@/api/data";
|
|
|
|
+ import {
|
|
|
|
+ getEventList, getStatisticByEventType,
|
|
getStatisticByMonth
|
|
getStatisticByMonth
|
|
} from "@/api/event";
|
|
} from "@/api/event";
|
|
|
|
|
|
@@ -225,6 +230,7 @@
|
|
selectConfigKey
|
|
selectConfigKey
|
|
} from "@/api/system/config";
|
|
} from "@/api/system/config";
|
|
import * as echarts from 'echarts'
|
|
import * as echarts from 'echarts'
|
|
|
|
+ import {countByBrand} from "@/api/sentinel";
|
|
|
|
|
|
|
|
|
|
const cityOptions1_1 = [{ type: '企业', url: '' }, { type: '厂站', url: '' }, { type: '阀门', url: '' }, { type: '次高压管网', url: '/3D-huashengranqi-2/rest/realspace' }, { type: '中压管网', url: '' }];
|
|
const cityOptions1_1 = [{ type: '企业', url: '' }, { type: '厂站', url: '' }, { type: '阀门', url: '' }, { type: '次高压管网', url: '/3D-huashengranqi-2/rest/realspace' }, { type: '中压管网', url: '' }];
|
|
@@ -252,13 +258,16 @@
|
|
|
|
|
|
},
|
|
},
|
|
mounted() {
|
|
mounted() {
|
|
|
|
+ this.userStats();
|
|
|
|
+ this.getPipeLengthByPressureLevel();
|
|
this.jccdChart();
|
|
this.jccdChart();
|
|
this.sbfxChart();
|
|
this.sbfxChart();
|
|
- this.yhfxChart();
|
|
|
|
this.sjfxChart();
|
|
this.sjfxChart();
|
|
|
|
+ this.getStatisticByEventType();
|
|
// 初始化地图数据
|
|
// 初始化地图数据
|
|
// this.getSuperMapUrl();
|
|
// this.getSuperMapUrl();
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
|
|
+
|
|
this.title = '四平市智慧哨兵监管平台'
|
|
this.title = '四平市智慧哨兵监管平台'
|
|
}, 1000);
|
|
}, 1000);
|
|
|
|
|
|
@@ -279,10 +288,52 @@
|
|
currentTab: 0,
|
|
currentTab: 0,
|
|
currentClass: 0,
|
|
currentClass: 0,
|
|
tabList:[ '四平市', '铁东区', '铁西区'],
|
|
tabList:[ '四平市', '铁东区', '铁西区'],
|
|
|
|
+
|
|
|
|
+ /** 用户数量信息 **/
|
|
|
|
+ totalUsers:0,
|
|
|
|
+ businessUsers:0,
|
|
|
|
+ civilUsers:0,
|
|
|
|
+ industryUsers:0,
|
|
|
|
+ /** 用户数量信息 **/
|
|
|
|
+ /** 管线长度数量信息 **/
|
|
|
|
+ centerPressLength:0,
|
|
|
|
+ lowPressLength:0,
|
|
|
|
+ secondaryPressLengt:0,
|
|
|
|
+ totalLength:0,
|
|
|
|
+ /** 管线长度数量信息 **/
|
|
|
|
+
|
|
|
|
+ dataValue: this.getCurrentDataStr(new Date()),
|
|
|
|
+ eventNumberList:[],
|
|
|
|
+ eventTotal:0,
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
methods: {
|
|
methods: {
|
|
|
|
+ getCurrentDataStr(date) {
|
|
|
|
+ let y = date.getFullYear()
|
|
|
|
+ let m = date.getMonth() + 1
|
|
|
|
+ m = m < 10 ? '0' + m : m
|
|
|
|
+ let d = date.getDate()
|
|
|
|
+ d = d < 10 ? '0' + d : d
|
|
|
|
+ return y + '-' + m + '-' + d
|
|
|
|
+ },
|
|
|
|
+ userStats(){
|
|
|
|
+ userStats().then(req => {
|
|
|
|
+ this.totalUsers=req.data.totalUsers;
|
|
|
|
+ this.businessUsers=req.data.businessUsers;
|
|
|
|
+ this.civilUsers=req.data.civilUsers;
|
|
|
|
+ this.industryUsers=req.data.industryUsers;
|
|
|
|
+ this.yhfxChart();
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ getPipeLengthByPressureLevel(){
|
|
|
|
+ getPipeLengthByPressureLevel().then(req => {
|
|
|
|
+ this.totalLength=req.data.totalLength;
|
|
|
|
+ this.centerPressLength=req.data.centerPressLength;
|
|
|
|
+ this.lowPressLength=req.data.lowPressLength;
|
|
|
|
+ this.secondaryPressLength=req.data.secondaryPressLength;
|
|
|
|
+ })
|
|
|
|
+ },
|
|
toggleTab(current){
|
|
toggleTab(current){
|
|
this.currentTab = current;
|
|
this.currentTab = current;
|
|
this.currentClass = current;
|
|
this.currentClass = current;
|
|
@@ -411,23 +462,19 @@
|
|
};
|
|
};
|
|
});
|
|
});
|
|
this.option = {
|
|
this.option = {
|
|
- legend: {
|
|
|
|
- top: "5%",
|
|
|
|
- // left: 10,
|
|
|
|
|
|
+ title:{
|
|
|
|
+ text:'监测长度\n11.83\nkm',
|
|
|
|
+ left: 'center',
|
|
|
|
+ top: 'center',
|
|
textStyle: {
|
|
textStyle: {
|
|
color: "#f2f2f2",
|
|
color: "#f2f2f2",
|
|
fontSize: 12,
|
|
fontSize: 12,
|
|
},
|
|
},
|
|
- icon: "circle",
|
|
|
|
- data: data,
|
|
|
|
- },
|
|
|
|
- tooltip: {
|
|
|
|
- formatter: "<br/>{b}: {c}KM",
|
|
|
|
},
|
|
},
|
|
series: [
|
|
series: [
|
|
// 主要展示层的
|
|
// 主要展示层的
|
|
{
|
|
{
|
|
- radius: ["33%", "61%"],
|
|
|
|
|
|
+ radius: ["50%", "90%"],
|
|
center: ["50%", "50%"],
|
|
center: ["50%", "50%"],
|
|
type: "pie",
|
|
type: "pie",
|
|
label: {
|
|
label: {
|
|
@@ -451,7 +498,7 @@
|
|
},
|
|
},
|
|
// 边框的设置
|
|
// 边框的设置
|
|
{
|
|
{
|
|
- radius: ["31%", "34%"],
|
|
|
|
|
|
+ radius: ["48%", "60%"],
|
|
center: ["50%", "50%"],
|
|
center: ["50%", "50%"],
|
|
type: "pie",
|
|
type: "pie",
|
|
label: {
|
|
label: {
|
|
@@ -478,7 +525,7 @@
|
|
},
|
|
},
|
|
// 中心的圆圈
|
|
// 中心的圆圈
|
|
{
|
|
{
|
|
- radius: ["26%", "31%"],
|
|
|
|
|
|
+ radius: ["45%", "50%"],
|
|
center: ["50%", "50%"],
|
|
center: ["50%", "50%"],
|
|
type: "pie",
|
|
type: "pie",
|
|
label: {
|
|
label: {
|
|
@@ -523,92 +570,78 @@
|
|
},
|
|
},
|
|
//设备分析
|
|
//设备分析
|
|
sbfxChart() {
|
|
sbfxChart() {
|
|
- const chartDom = this.$refs.sbfx;
|
|
|
|
- const myChart = echarts.init(chartDom);
|
|
|
|
- this.option = {
|
|
|
|
- tooltip: {
|
|
|
|
- trigger: "item",
|
|
|
|
- formatter: "{b} : {c} ({d}%)",
|
|
|
|
- },
|
|
|
|
-
|
|
|
|
- visualMap: {
|
|
|
|
- show: false,
|
|
|
|
- min: 500,
|
|
|
|
- max: 600,
|
|
|
|
- inRange: {
|
|
|
|
- //colorLightness: [0, 1]
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- series: [{
|
|
|
|
- name: "访问来源",
|
|
|
|
- type: "pie",
|
|
|
|
- radius: "80%",
|
|
|
|
- center: ["50%", "50%"],
|
|
|
|
- color: ["rgb(131,249,103)", "#FBFE27", "#FE5050","#1DB7E5"], //'#FBFE27','rgb(11,228,96)','#FE5050'
|
|
|
|
- data: [{
|
|
|
|
- value: 285,
|
|
|
|
- name: "设备1",
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- value: 410,
|
|
|
|
- name: "设备2",
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- value: 274,
|
|
|
|
- name: "设备3",
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- value: 235,
|
|
|
|
- name: "设备4",
|
|
|
|
- },
|
|
|
|
- ].sort(function(a, b) {
|
|
|
|
- return a.value - b.value;
|
|
|
|
- }),
|
|
|
|
- roseType: "radius",
|
|
|
|
-
|
|
|
|
- label: {
|
|
|
|
- normal: {
|
|
|
|
- formatter: ["{c|{c}}", "{b|{b}}"].join("\n"),
|
|
|
|
- rich: {
|
|
|
|
- c: {
|
|
|
|
- color: "rgb(241,246,104)",
|
|
|
|
- fontSize: 20,
|
|
|
|
- fontWeight: "bold",
|
|
|
|
- lineHeight: 5,
|
|
|
|
- },
|
|
|
|
- b: {
|
|
|
|
- color: "rgb(98,137,169)",
|
|
|
|
- fontSize: 15,
|
|
|
|
- height: 40,
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- labelLine: {
|
|
|
|
- normal: {
|
|
|
|
- lineStyle: {
|
|
|
|
- color: "rgb(98,137,169)",
|
|
|
|
- },
|
|
|
|
- smooth: 0.2,
|
|
|
|
- length: 10,
|
|
|
|
- length2: 20,
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- itemStyle: {
|
|
|
|
- normal: {
|
|
|
|
- shadowColor: "rgba(0, 0, 0, 0.8)",
|
|
|
|
- shadowBlur: 50,
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- }, ],
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
|
|
+ countByBrand().then(res => {
|
|
|
|
+ const data = [];
|
|
|
|
+ for(let item of res.data){
|
|
|
|
+ data.push({name:item.brandName,value:item.count})
|
|
|
|
+ }
|
|
|
|
+ const chartDom = this.$refs.sbfx;
|
|
|
|
+ const myChart = echarts.init(chartDom);
|
|
|
|
+ this.option = {
|
|
|
|
+ tooltip: {
|
|
|
|
+ trigger: "item",
|
|
|
|
+ formatter: "{b} : {c} ({d}%)",
|
|
|
|
+ },
|
|
|
|
|
|
- myChart.setOption(this.option, true);
|
|
|
|
- window.addEventListener("resize", function() {
|
|
|
|
- myChart.resize();
|
|
|
|
- });
|
|
|
|
|
|
+ visualMap: {
|
|
|
|
+ show: false,
|
|
|
|
+ min: 500,
|
|
|
|
+ max: 600,
|
|
|
|
+ inRange: {
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ series: [{
|
|
|
|
+ name: "访问来源",
|
|
|
|
+ type: "pie",
|
|
|
|
+ radius: "55%",
|
|
|
|
+ center: ["50%", "50%"],
|
|
|
|
+ color: ["rgb(131,249,103)", "#FBFE27", "#FE5050","#1DB7E5"], //'#FBFE27','rgb(11,228,96)','#FE5050'
|
|
|
|
+ data: data.sort(function(a, b) {
|
|
|
|
+ return a.value - b.value;
|
|
|
|
+ }),
|
|
|
|
+ roseType: "radius",
|
|
|
|
|
|
|
|
+ label: {
|
|
|
|
+ normal: {
|
|
|
|
+ formatter: ["{c|{c}}", "{b|{b}}"].join("\n"),
|
|
|
|
+ rich: {
|
|
|
|
+ c: {
|
|
|
|
+ color: "rgb(241,246,104)",
|
|
|
|
+ fontSize: 20,
|
|
|
|
+ fontWeight: "bold",
|
|
|
|
+ lineHeight: 5,
|
|
|
|
+ },
|
|
|
|
+ b: {
|
|
|
|
+ color: "rgb(98,137,169)",
|
|
|
|
+ fontSize: 15,
|
|
|
|
+ height: 40,
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ labelLine: {
|
|
|
|
+ normal: {
|
|
|
|
+ lineStyle: {
|
|
|
|
+ color: "rgb(98,137,169)",
|
|
|
|
+ },
|
|
|
|
+ smooth: 0.2,
|
|
|
|
+ length: 10,
|
|
|
|
+ length2: 20,
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ itemStyle: {
|
|
|
|
+ normal: {
|
|
|
|
+ shadowColor: "rgba(0, 0, 0, 0.8)",
|
|
|
|
+ shadowBlur: 50,
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ }, ],
|
|
|
|
+ };
|
|
|
|
+ myChart.setOption(this.option, true);
|
|
|
|
+ window.addEventListener("resize", function() {
|
|
|
|
+ myChart.resize();
|
|
|
|
+ });
|
|
|
|
+ })
|
|
},
|
|
},
|
|
//用户分析
|
|
//用户分析
|
|
yhfxChart() {
|
|
yhfxChart() {
|
|
@@ -629,15 +662,15 @@
|
|
yData = [];
|
|
yData = [];
|
|
var data = [{
|
|
var data = [{
|
|
name: "商业用户",
|
|
name: "商业用户",
|
|
- value: 3999,
|
|
|
|
|
|
+ value: this.businessUsers,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
name: "居民用户",
|
|
name: "居民用户",
|
|
- value: 252906,
|
|
|
|
|
|
+ value: this.civilUsers,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
name: "工业用户",
|
|
name: "工业用户",
|
|
- value: 100,
|
|
|
|
|
|
+ value: this.industryUsers,
|
|
},
|
|
},
|
|
];
|
|
];
|
|
data.map((a, b) => {
|
|
data.map((a, b) => {
|
|
@@ -813,15 +846,24 @@
|
|
});
|
|
});
|
|
|
|
|
|
},
|
|
},
|
|
- //事件分析
|
|
|
|
|
|
+ //事件分析
|
|
|
|
+ getStatisticByEventType(){
|
|
|
|
+ getStatisticByEventType({createTimeRange:this.dataValue+","+this.dataValue}).then(req => {
|
|
|
|
+ this.eventNumberList = req.data;
|
|
|
|
+ this.eventTotal = 0;
|
|
|
|
+ for(let item of req.data){
|
|
|
|
+ this.eventTotal += item.countSum
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+
|
|
sjfxChart() {
|
|
sjfxChart() {
|
|
let that = this;
|
|
let that = this;
|
|
getStatisticByMonth().then(res => {
|
|
getStatisticByMonth().then(res => {
|
|
-
|
|
|
|
const chartDom = that.$refs.sjfx;
|
|
const chartDom = that.$refs.sjfx;
|
|
const myChart = echarts.init(chartDom);
|
|
const myChart = echarts.init(chartDom);
|
|
var xData = res.data.categories[0];
|
|
var xData = res.data.categories[0];
|
|
- var color = ["#1a9bfc", "#99da69", "#e32f46", "#7049f0", "#fa704d", "#01babc"];
|
|
|
|
|
|
+ var color = ["#1a9bfc", "#99da69", "#e32f46", "#7049f0", "#fa704d", "#01babc","#1a9bfc", "#99da69", "#e32f46", "#7049f0", "#fa704d", "#01babc"];
|
|
|
|
|
|
var name = [];
|
|
var name = [];
|
|
var data = [];
|
|
var data = [];
|
|
@@ -983,7 +1025,9 @@
|
|
background-color: rgba(20, 107, 115, 0.3);
|
|
background-color: rgba(20, 107, 115, 0.3);
|
|
color: #fff;
|
|
color: #fff;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ .el-checkbox__label{
|
|
|
|
+ color: #ffffff;
|
|
|
|
+ }
|
|
|
|
|
|
.hz_body {
|
|
.hz_body {
|
|
position: relative;
|
|
position: relative;
|