From 9f13c9e3dcae6280428efc1035e59a21e43f3b0f Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Fri, 02 Apr 2021 16:12:11 +0800
Subject: [PATCH] Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/jfpt-Vue
---
src/views/realTimePolice/real.vue | 38 +
src/router/views/index.js | 28
src/styles/alarmAnalysis/alarmAnalysis.scss | 244 +++++++++++
src/views/clientManagement/clientManagement.vue | 219 ++++++++-
src/views/system/cs.vue | 57 ++
src/views/alarmManagement/alarmAnalysis.vue | 715 +++++++++++++++++++++++++-------
6 files changed, 1,096 insertions(+), 205 deletions(-)
diff --git a/src/router/views/index.js b/src/router/views/index.js
index 3014528..22fe348 100644
--- a/src/router/views/index.js
+++ b/src/router/views/index.js
@@ -188,18 +188,32 @@
import( /* webpackChunkName: "views" */ '@/views/work/process/leave/detail')
}]
},
+ // {
+ // path: '/realTimePolice',
+ // component: Layout,
+ // redirect: '/realTimePolice/index',
+ // children: [{
+ // path: 'index',
+ // name: '实时报警',
+ // meta: {
+ // i18n: 'real'
+ // },
+ // component: () =>
+ // import( /* webpackChunkName: "views" */ '@/views/realTimePolice/real')
+ // }]
+ // },
{
- path: '/realTimePolice',
+ path: '/home',
component: Layout,
- redirect: '/realTimePolice/index',
+ redirect: '/home/index',
children: [{
path: 'index',
- name: '实时报警',
+ name: '研判洞察',
meta: {
- i18n: 'real'
+ i18n: 'home'
},
component: () =>
- import( /* webpackChunkName: "views" */ '@/views/realTimePolice/real')
+ import( /* webpackChunkName: "views" */ '@/views/home/home')
}]
},
{
@@ -234,7 +248,7 @@
{
path: '/suser',
component: Layout,
- redirect: '/suser/suser',
+ redirect: '/suser',
children: [{
path: 'index',
name: '客户管理',
@@ -242,7 +256,7 @@
i18n: 'suser'
},
component: () =>
- import( /* webpackChunkName: "views" */ '@/views/suser/suser')
+ import( /* webpackChunkName: "views" */ '@/views/system/cs')
}]
}, {
path: '/policeTracking',
diff --git a/src/styles/alarmAnalysis/alarmAnalysis.scss b/src/styles/alarmAnalysis/alarmAnalysis.scss
new file mode 100644
index 0000000..51c19b2
--- /dev/null
+++ b/src/styles/alarmAnalysis/alarmAnalysis.scss
@@ -0,0 +1,244 @@
+.alarm_title {
+ width: 100%;
+ height: 3%;
+}
+
+.alarm_title span {
+ font-size: 12px;
+ color: #7B91B4;
+ left: 1%;
+ position: relative;
+}
+
+.timeSearchBtn {
+ width: 100%;
+ height: 4%;
+}
+
+.timeSearchBtn .timeBtn {
+ position: relative;
+ left: 0.8%;
+ top: 15%;
+}
+
+.timeSearchBtn .timeSearch {
+ position: relative;
+ left: 1.2%;
+ top: 15.6%;
+}
+
+//预警总数统计
+.statisTotal {
+ position: relative;
+ left: 0.3%;
+ top: 2%;
+ width: 100%;
+ height: 10%;
+}
+
+.statisTotalAvueDataBox .el-row {
+ width: 99.7% !important;
+}
+
+//预警数量统计
+.alarmStatis {
+ background-color: #ffffff;
+ width: 98.6%;
+ height: 550px;
+ position: relative;
+ left: 0.8%;
+ top: 6%;
+}
+
+#alarmNumberStatis {
+ width: 75%;
+ height: 550px;
+ position: relative;
+ left: 1%;
+}
+
+.alarmClassifyStatis {
+ width: 25%;
+ height: 550px;
+ position: relative;
+ left: 75%;
+ top: -85%;
+}
+
+.alarmClassifyStatis .avue-data-cardtext {
+ width: 100%;
+ height: 90%;
+}
+
+.avue-data-cardText .item {
+ -webkit-box-shadow: 0px 0px 0px 0px #ccc;
+ box-shadow: 0px 0px 0px #ccc;
+}
+
+.avue-data-cardtext .el-row {
+ width: 250px !important;
+ height: 50px !important;
+ position: relative !important;
+ top: 30px !important;
+}
+
+.alarmClassifyStatis .el-col {
+ float: inherit !important;
+ width: 100% !important;
+ height: 100px !important;
+}
+
+.avue-data-cardText .item-header a {
+ font-size: 14px;
+ margin-left: 2px;
+ position: absolute;
+ bottom: 1px;
+}
+
+.avue-data-cardText .item-header i {
+ font-size: 14px;
+}
+
+//预警类型占比
+.alarmTypePro {
+ background-color: #ffffff;
+ width: 98.6%;
+ height: 450px;
+ position: relative;
+ left: 0.8%;
+ top: 8%;
+}
+
+#alarmTypeProEcharts {
+ width: 30%;
+ height: 450px;
+ position: relative;
+ left: 1%;
+}
+
+.alarmTypeProStatis {
+ //background-color: aqua;
+ width: 50%;
+ height: 100%;
+ position: relative;
+ top: -100%;
+ left: 30%;
+}
+
+.alarmTypeProStatis .el-row {
+ position: relative;
+ top: 120px;
+}
+
+//预警设备类型占比
+.alarmEquipmentPro {
+ background-color: #ffffff;
+ width: 98.6%;
+ height: 450px;
+ position: relative;
+ left: 0.8%;
+ top: 10%;
+}
+
+#alarmEquipmentProEcharts {
+ width: 30%;
+ height: 450px;
+ position: relative;
+ left: 1%;
+}
+
+.alarmEquipmentProStatis {
+ //background-color: aqua;
+ width: 35%;
+ height: 100%;
+ position: relative;
+ left: 30%;
+ top: -100%;
+}
+
+.alarmEquipmentProStatis .avue-crud {
+ position: relative;
+ top: 20%;
+}
+
+.alarmEquipmentProStatis .avue-crud__menu {
+ display: none;
+}
+
+//确认时间占比
+.confirmTimePro {
+ background-color: #ffffff;
+ width: 61.6%;
+ height: 450px;
+ position: relative;
+ left: 0.8%;
+ top: 12%;
+}
+
+#confirmTimeProEcharts {
+ width: 40%;
+ height: 450px;
+ position: relative;
+ left: 1%;
+}
+
+.confirmTimeProStatis {
+ //background-color: aqua;
+ width: 60%;
+ height: 100%;
+ position: relative;
+ top: -100%;
+ left: 40%;
+}
+
+.confirmTimeProStatis .el-row {
+ position: relative;
+ top: 120px;
+}
+
+//预警平均速度排行
+.confirmAverageSpeed {
+ background-color: #ffffff;
+ width: 35%;
+ height: 450px;
+ position: relative;
+ top: -41%;
+ left: 64.4%;
+}
+
+.confirmAverageSpeed .avue-crud {
+ width: 90%;
+ position: relative;
+ top: 10%;
+}
+
+.confirmAverageSpeed .avue-crud__menu {
+ display: none;
+}
+
+//预警时间分布
+.alarmTimeDis {
+ background-color: #ffffff;
+ width: 98.6%;
+ height: 450px;
+ position: relative;
+ left: 0.8%;
+ top: -38.6%;
+}
+
+#alarmTimeDisEchars {
+ width: 100%;
+ height: 450px;
+ position: relative;
+ left: 1%;
+}
+
+//底部
+.low {
+ background-color: F0F2F5;
+ width: 100%;
+ height: 50px;
+ position: relative;
+ left: 0.8%;
+ top: -38%;
+}
\ No newline at end of file
diff --git a/src/views/alarmManagement/alarmAnalysis.vue b/src/views/alarmManagement/alarmAnalysis.vue
index 6e2b80b..bf4dde2 100644
--- a/src/views/alarmManagement/alarmAnalysis.vue
+++ b/src/views/alarmManagement/alarmAnalysis.vue
@@ -1,5 +1,5 @@
<template>
- <div>
+ <div class="big">
<!-- 标题 -->
<div class="alarm_title"><span>预警分析</span></div>
<!-- 时间按钮 -->
@@ -23,10 +23,39 @@
<div class="alarmClassifyStatis">
<avue-data-cardtext :option="alarmClassifyStatis"></avue-data-cardtext>
</div>
-
</div>
<!-- 预警类型占比 -->
- <div></div>
+ <div class="alarmTypePro">
+ <div id="alarmTypeProEcharts"></div>
+ <div class="alarmTypeProStatis">
+ <avue-data-cardtext :option="alarmTypeProStatis"></avue-data-cardtext>
+ </div>
+ </div>
+ <!-- 预警设备类型占比 -->
+ <div class="alarmEquipmentPro">
+ <div id="alarmEquipmentProEcharts"></div>
+ <div class="alarmEquipmentProStatis">
+ <avue-crud :data="alarmEquipmentProStatisData" :option="alarmEquipmentProStatisOption"></avue-crud>
+ </div>
+ </div>
+ <!-- 确认时间占比 -->
+ <div class="confirmTimePro">
+ <div id="confirmTimeProEcharts"></div>
+ <div class="confirmTimeProStatis">
+ <avue-data-cardtext :option="confirmTimeProStatis"></avue-data-cardtext>
+ </div>
+ </div>
+ <!-- 预警平均确认速度排行 -->
+ <div class="confirmAverageSpeed">
+ <avue-crud :data="confirmAverageSpeedData" :option="confirmAverageSpeedOption"></avue-crud>
+ </div>
+ <!-- 预警时间分布 -->
+ <div class="alarmTimeDis">
+ <div id="alarmTimeDisEchars"></div>
+ </div>
+
+ <!-- 底部 -->
+ <div class="low"></div>
</div>
</template>
@@ -44,14 +73,43 @@
alarmClassifyStatis:{
span:6,
data: []
- }
+ },
+ alarmTypeProStatis:{
+ span:10,
+ height:100,
+ data: []
+ },
+ alarmEquipmentProStatisData:[],
+ alarmEquipmentProStatisOption:{},
+ confirmTimeProStatis:{
+ span:10,
+ height:100,
+ data: []
+ },
+ confirmAverageSpeedData:[],
+ confirmAverageSpeedOption:{}
};
},
mounted() {
+ //统计预警总数
this.getStatisTotalData();
+ //预警数量统计
this.getAlarmNumberStatis();
+ //预警分类统计
this.getAlarmClassifyStatis();
+ //预警类型占比统计
+ this.getAlarmTypeProEcharts();
+ this.getAlarmTypeProStatis();
+ //预警设备类型占比统计
+ this.getAlarmEquipmentProEcharts();
+ this.getAlarmEquipmentProStatis();
+ //确认时间占比统计
+ this.getConfirmTimeProEcharts();
+ this.getConfirmTimeProStatis();
+ this.confirmAverageSpeedStatis();
+ //预警时间分布统计
+ this.getAlarmTimeDisEchars();
},
methods: {
@@ -61,54 +119,120 @@
that.statisToTalData.data = [
{
click: function (item) {
- alert(JSON.stringify(item));
},
- title: '错误日志',
+ title: '监测点总数',
count: 12332,
icon: 'el-icon-warning',
color: '#3AA7F0',
- href:'https://avuejs.com',
target:'_blank'
},
{
click: function (item) {
- alert(JSON.stringify(item));
},
- title: '数据展示',
+ title: '总预警数',
count: 33,
icon: 'el-icon-warning',
color: '#F34A4A',
- href:'https://avuejs.com',
target:'_blank'
},
{
click: function (item) {
- alert(JSON.stringify(item));
},
- title: '权限管理',
+ title: '一键求助确认率',
count: 2223,
icon: 'el-icon-setting',
color: '#8058A5',
- href:'https://avuejs.com',
target:'_blank'
},
{
click: function (item) {
- alert(JSON.stringify(item));
},
- title: '权限管理',
+ title: '一键求助确认数',
count: 2223,
icon: 'el-icon-setting',
color: '#29C093',
- href:'https://avuejs.com',
target:'_blank'
},
];
},
+ //预警数量分布
+ getAlarmNumberStatis(){
+ let echarts = require('echarts');
+ let myChart = echarts.init(document.getElementById('alarmNumberStatis'));
+ let option = {
+ title: {
+ textStyle: {
+ fontWeight: 'normal',
+ fontSize: 16,
+ color: '#000'
+ },
+ left: '1%',
+ top: 25,
+ textAlign:'left',
+ text: '预警时间分布'
+ },
+ tooltip: {
+ trigger: 'axis'
+ },
+ grid: {
+ left: '3%',
+ right: '7%',
+ bottom: '10%',
+ top:'20%',
+ containLabel: true
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
+ },
+ yAxis: {
+ type: 'value',
+ splitLine: {
+ show: true,
+ lineStyle:{
+ type:'dashed'
+ }
+ }
+ },
+ series: [
+ {
+ name: '邮件营销',
+ type: 'line',
+ stack: '总量',
+ data: [120, 132, 101, 134, 90, 230, 210]
+ },
+ {
+ name: '联盟广告',
+ type: 'line',
+ stack: '总量',
+ data: [220, 182, 191, 234, 290, 330, 310]
+ },
+ {
+ name: '视频广告',
+ type: 'line',
+ stack: '总量',
+ data: [150, 232, 201, 154, 190, 330, 410]
+ },
+ {
+ name: '直接访问',
+ type: 'line',
+ stack: '总量',
+ data: [320, 332, 301, 334, 390, 330, 320]
+ }
+ ]
+ };
+
+ myChart.setOption(option);
+
+ //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+ window.addEventListener('resize',function() {myChart.resize()});
+ },
+
//警情类别统计总数
getAlarmClassifyStatis(){
- var that = this;
+ var that = this;
that.alarmClassifyStatis.data = [
{
click: function (item) {
@@ -154,63 +278,439 @@
];
},
- //预警数量分布
- getAlarmNumberStatis(){
+
+ //预警类型占比统计
+ getAlarmTypeProEcharts(){
let echarts = require('echarts');
- let myChart = echarts.init(document.getElementById('alarmNumberStatis'));
+ let myChart = echarts.init(document.getElementById('alarmTypeProEcharts'));
let option = {
- color: ['#3AA7F0'],
+ title: {
+ textStyle: {
+ fontWeight: 'normal',
+ fontSize: 16,
+ color: '#000'
+ },
+ left: '1%',
+ top: 25,
+ textAlign:'left',
+ text: '预警类型占比'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+ grid: {
+ left: '1%',
+ right: '10%',
+ bottom: '5%',
+ top:'25%',
+ containLabel: true
+ },
+ series: [
+ {
+ name: '访问来源',
+ type: 'pie',
+ radius: ['43%','60%'],
+ center: ['45%','53%'],
+ avoidLabelOverlap: false,
+ label: {
+ show: false,
+ position: 'center'
+ },
+ emphasis: {
+ label: {
+ show: true,
+ fontSize: '40',
+ fontWeight: 'bold'
+ }
+ },
+ labelLine: {
+ show: false
+ },
+ data: [
+ {value: 1048, name: '搜索引擎'},
+ {value: 735, name: '直接访问'},
+ {value: 580, name: '邮件营销'},
+ {value: 484, name: '联盟广告'},
+ {value: 300, name: '视频广告'}
+ ]
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+ //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+ window.addEventListener('resize',function() {myChart.resize()});
+ },
+
+
+ //警情类别统计总数(分类占比)
+ getAlarmTypeProStatis(){
+ var that = this;
+ that.alarmTypeProStatis.data = [
+ {
+ click: function (item) {
+ alert(JSON.stringify(item));
+ },
+ title:'香菜',
+ color:'yellow',
+ href:"http://www.baidu.com",
+ target:'_blank',
+ name:'文件上传',
+ date:'1天前'
+ },
+ {
+ click: function (item) {
+ alert(JSON.stringify(item));
+ },
+ title:'钉宫',
+ color:'green',
+ href:"http://www.baidu.com",
+ name:'流加载',
+ date:'1天前'
+ },
+ {
+ click: function (item) {
+ alert(JSON.stringify(item));
+ },
+ title:'亚丝娜',
+ color:'#3fa1ff',
+ href:"http://www.baidu.com",
+ name:'表单',
+ date:'1天前'
+ },
+ {
+ click: function (item) {
+ alert(JSON.stringify(item));
+ },
+ title:'狂三',
+ color:'red',
+ href:"http://www.baidu.com",
+ name:'文件上传',
+ date:'1天前'
+ }
+ ];
+ },
+
+
+
+ //预警设备类型占比统计
+ getAlarmEquipmentProEcharts(){
+ let echarts = require('echarts');
+ let myChart = echarts.init(document.getElementById('alarmEquipmentProEcharts'));
+ let option = {
+ title: {
+ textStyle: {
+ fontWeight: 'normal',
+ fontSize: 16,
+ color: '#000'
+ },
+ left: '1%',
+ top: 25,
+ textAlign:'left',
+ text: '预警设备类型占比'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+ grid: {
+ left: '1%',
+ right: '10%',
+ bottom: '5%',
+ top:'25%',
+ containLabel: true
+ },
+ series: [
+ {
+ name: '访问来源',
+ type: 'pie',
+ radius: ['43%','60%'],
+ cneter: ['45%','53%'],
+ avoidLabelOverlap: false,
+ label: {
+ show: false,
+ position: 'center'
+ },
+ emphasis: {
+ label: {
+ show: true,
+ fontSize: '40',
+ fontWeight: 'bold'
+ }
+ },
+ labelLine: {
+ show: false
+ },
+ data: [
+ {value: 1048, name: '搜索引擎'},
+ {value: 735, name: '直接访问'},
+ {value: 580, name: '邮件营销'},
+ {value: 484, name: '联盟广告'},
+ {value: 300, name: '视频广告'}
+ ]
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+ //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+ window.addEventListener('resize',function() {myChart.resize()});
+ },
+
+ //预警设备类型占比统计(分类表格)
+ getAlarmEquipmentProStatis(){
+ var that = this;
+ that.alarmEquipmentProStatisData=[
+ {
+ name:'一键求助',
+ sex:'1',
+ date:'100%'
+ }
+ ];
+ that.alarmEquipmentProStatisOption={
+ menu:false,
+ menuBtn:false,
+ page:false,
+ align:'center',
+ menuAlign:'center',
+ column:[
+ {
+ label:'预警设备类型',
+ prop:'name'
+ },
+ {
+ label:'预警次数',
+ prop:'sex'
+ },{
+ label: "占比",
+ prop: "date"
+ }
+ ]
+ }
+
+
+ },
+
+
+ //确认时间占比统计
+ getConfirmTimeProEcharts(){
+ let echarts = require('echarts');
+ let myChart = echarts.init(document.getElementById('confirmTimeProEcharts'));
+ let option = {
+ title: {
+ textStyle: {
+ fontWeight: 'normal',
+ fontSize: 16,
+ color: '#000'
+ },
+ left: '1%',
+ top: 25,
+ textAlign:'left',
+ text: '确认时间占比'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+ grid: {
+ left: '1%',
+ right: '10%',
+ bottom: '5%',
+ top:'25%',
+ containLabel: true
+ },
+ series: [
+ {
+ name: '访问来源',
+ type: 'pie',
+ radius: ['43%', '60%'],
+ center: ['45%','53%'],
+ avoidLabelOverlap: false,
+ label: {
+ show: false,
+ position: 'center'
+ },
+ emphasis: {
+ label: {
+ show: true,
+ fontSize: '40',
+ fontWeight: 'bold'
+ }
+ },
+ labelLine: {
+ show: false
+ },
+ data: [
+ {value: 1048, name: '搜索引擎'},
+ {value: 735, name: '直接访问'},
+ {value: 580, name: '邮件营销'},
+ {value: 484, name: '联盟广告'},
+ {value: 300, name: '视频广告'}
+ ]
+ }
+ ]
+ };
+ myChart.setOption(option);
+
+ //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+ window.addEventListener('resize',function() {myChart.resize()});
+ },
+
+ //确认时间占比(分类)
+ getConfirmTimeProStatis(){
+ var that = this;
+ that.confirmTimeProStatis.data = [
+ {
+ click: function (item) {
+ alert(JSON.stringify(item));
+ },
+ title:'香菜',
+ color:'yellow',
+ href:"http://www.baidu.com",
+ target:'_blank',
+ name:'文件上传',
+ date:'1天前'
+ },
+ {
+ click: function (item) {
+ alert(JSON.stringify(item));
+ },
+ title:'钉宫',
+ color:'green',
+ href:"http://www.baidu.com",
+ name:'流加载',
+ date:'1天前'
+ },
+ {
+ click: function (item) {
+ alert(JSON.stringify(item));
+ },
+ title:'亚丝娜',
+ color:'#3fa1ff',
+ href:"http://www.baidu.com",
+ name:'表单',
+ date:'1天前'
+ },
+ {
+ click: function (item) {
+ alert(JSON.stringify(item));
+ },
+ title:'狂三',
+ color:'red',
+ href:"http://www.baidu.com",
+ name:'文件上传',
+ date:'1天前'
+ }
+ ];
+ },
+
+ //预警平均速度排行(table)
+ confirmAverageSpeedStatis(){
+ var that = this;
+ that.confirmAverageSpeedData=[
+ {
+ name:'一键求助',
+ sex:'1',
+ }
+ ];
+ that.confirmAverageSpeedOption={
+ title:'表格的标题',
+ titleSize:'h3',
+ titleStyle:{
+ color:'red'
+ },
+ menu:false,
+ page:false,
+ align:'center',
+ menuAlign:'center',
+ column:[
+ {
+ label:'巡检人',
+ prop:'name'
+ },
+ {
+ label:'平均确认速度',
+ prop:'sex'
+ }
+ ]
+ }
+ },
+
+ //预警时间分布
+ getAlarmTimeDisEchars(){
+ let echarts = require('echarts');
+ let myChart = echarts.init(document.getElementById('alarmTimeDisEchars'));
+ let option = {
title: {
textStyle: {
fontWeight: 'normal',
fontSize: 16,
color: '#000'
},
- left: '5%',
+ left: '3%',
top: 25,
textAlign:'center',
- text: '预警数量分布'
+ text: '预警时间分布'
},
- tooltip : {
- trigger: 'axis',
- axisPointer : {
- type : 'shadow'
- }
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+ data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎'],
+ top:'10%',
+ right:'6%'
},
grid: {
left: '1%',
- right: '5%',
- bottom: '7%',
- top: '20%',
+ right: '7%',
+ bottom: '10%',
+ top:'25%',
containLabel: true
},
- xAxis : [
- {
- type : 'category',
- data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月',],
- axisTick: {
- alignWithLabel: true
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
+ },
+ yAxis: {
+ type: 'value',
+ splitLine: {
+ show: true,
+ lineStyle:{
+ type:'dashed'
+ }
}
- }
- ],
- yAxis : [
- {
- type : 'value'
- }
- ],
- series : [
- {
- name:'每月花费',
- type:'bar',
- barWidth: '60%',
- data:[995,666,444,858,654,236,645,546,846,225,547,356]
- }
+ },
+ series: [
+ {
+ name: '邮件营销',
+ type: 'line',
+ stack: '总量',
+ data: [120, 132, 101, 134, 90, 230, 210]
+ },
+ {
+ name: '联盟广告',
+ type: 'line',
+ stack: '总量',
+ data: [220, 182, 191, 234, 290, 330, 310]
+ },
+ {
+ name: '视频广告',
+ type: 'line',
+ stack: '总量',
+ data: [150, 232, 201, 154, 190, 330, 410]
+ },
+ {
+ name: '直接访问',
+ type: 'line',
+ stack: '总量',
+ data: [320, 332, 301, 334, 390, 330, 320]
+ }
]
- };
- myChart.setOption(option);
+ };
+
+ myChart.setOption(option);
- //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
- window.addEventListener('resize',function() {myChart.resize()});
+ //建议加上以下这一行代码,不加的效果图如下(当浏览器窗口缩小的时候)。超过了div的界限(红色边框)
+ window.addEventListener('resize',function() {myChart.resize()});
},
//点击按钮获取不同时间段的数据
@@ -297,108 +797,5 @@
</script>
<style lang="scss">
- .alarm_title{
- width: 100%;
- height: 3%;
- }
-
- .alarm_title span{
- font-size: 12px;
- color: #7B91B4;
- left: 1%;
- position: relative;
- }
-
- .timeSearchBtn{
- width: 100%;
- height: 4%;
- }
-
- .timeSearchBtn .timeBtn{
- position: relative;
- left: 0.8%;
- top: 15%;
- }
-
- .timeSearchBtn .timeSearch{
- position: relative;
- left: 1.2%;
- top: 15.6%;
- }
-
- .statisTotal{
- position: relative;
- left: 0.3%;
- top: 2%;
- width: 100%;
- height: 10%;
- }
-
- /* .statisTotal statisTotalAvueDataBox{
- position: relative !important;
- top: 22% !important;
- left: 1% !important;
- } */
-
- .statisTotalAvueDataBox .el-row {
- width: 99.7% !important;
- }
-
- .alarmStatis{
- background-color: #ffffff;
- width: 98.6%;
- height: 550px;
- position: relative;
- left: 0.8%;
- top: 6%;
- }
-
- #alarmNumberStatis{
- width: 75%;
- height: 550px;
- position: relative;
- left: 2%;
- }
-
- .alarmClassifyStatis{
- width: 25%;
- height: 550px;
- position: relative;
- left: 75%;
- top: -85%;
- }
-
- .alarmClassifyStatis .avue-data-cardtext{
- width: 100%;
- height: 90%;
- }
-
- .avue-data-cardText .item{
- -webkit-box-shadow: 0px 0px 0px 0px #ccc;
- box-shadow: 0px 0px 0px #ccc;
- }
-
- .avue-data-cardtext .el-row{
- width: 250px !important;
- height: 50px !important;
- position: relative !important;
- top: 30px !important;
- }
-
- .alarmClassifyStatis .el-col{
- float: inherit !important;
- width: 100% !important;
- height: 100px !important;
- }
-
- .avue-data-cardText .item-header a{
- font-size: 14px;
- margin-left: 2px;
- position:absolute;
- bottom: 1px;
- }
-
- .avue-data-cardText .item-header i{
- font-size: 14px;
- }
+ @import '@/styles/alarmAnalysis/alarmAnalysis.scss'
</style>
\ No newline at end of file
diff --git a/src/views/clientManagement/clientManagement.vue b/src/views/clientManagement/clientManagement.vue
index 70e040d..a8b5b5f 100644
--- a/src/views/clientManagement/clientManagement.vue
+++ b/src/views/clientManagement/clientManagement.vue
@@ -18,6 +18,8 @@
@row-update="rowUpdate"
@row-save="rowSave"
:row-style="rowStyle"
+ @contextmenu.prevent.native=""
+ @row-contextmenu="rightClick"
row-class-name="tabFontSize"
:before-open="beforeOpen"
@search-change="searchChange"
@@ -44,22 +46,22 @@
}}
</el-tag>
</template>
- <template slot-scope="{ type, size, row }" slot="menu">
- <el-button
- icon="el-icon-video-camera-solid"
- :size="size"
- :type="type"
- @click.stop="handleStart(row)"
- >视频
- </el-button>
- <el-button
- icon="el-icon-location-outline"
- :size="size"
- :type="type"
- @click.stop="handleMap(row)"
- >定位
- </el-button>
- </template>
+<!-- <template slot-scope="{ type, size, row }" slot="menu">-->
+<!-- <el-button-->
+<!-- icon="el-icon-video-camera-solid"-->
+<!-- :size="size"-->
+<!-- :type="type"-->
+<!-- @click.stop="handleStart(row)"-->
+<!-- >视频-->
+<!-- </el-button>-->
+<!-- <el-button-->
+<!-- icon="el-icon-location-outline"-->
+<!-- :size="size"-->
+<!-- :type="type"-->
+<!-- @click.stop="handleMap(row)"-->
+<!-- >定位-->
+<!-- </el-button>-->
+<!-- </template>-->
<template slot-scope="{ row }" slot="dxzt">
<el-tag>{{
@@ -75,6 +77,12 @@
</avue-crud>
+ <div v-show="menuVisible">
+ <ul id="menu" class="menu">
+ <li class="menu_item" @click.stop="handleStart">视频</li>
+ <li class="menu_item" @click.stop="handleMap">定位</li>
+ </ul>
+ </div>
<el-drawer
title="电子地图"
@@ -195,8 +203,10 @@
form: {},
query: {},
showMap: false,
+ selectRow:null,
initFlag: true,
loading: true,
+ menuVisible:false,
page: {
pageSize: 10,
currentPage: 1,
@@ -238,14 +248,15 @@
calcHeight: 80,
labelWidth: '100',
dialogWidth: 950,
- menuWidth: 250,
+ menuWidth: 150,
align:"center",
size: "mini",
tip: false,
searchShow: true,
searchMenuSpan: 4,
searchSpan: 4,
- border: true,
+ border: false,
+ stripe:true,
index: true,
viewBtn: true,
selection: true,
@@ -330,12 +341,10 @@
label: "缴费状态",
prop: "jfzt",
slot: true,
- align: "center",
addDisplay: false,
editDisplay: false,
}, {
label: "布撤防状态",
- align: "center",
prop: "devicestate",
type: "select",
slot: true,
@@ -358,7 +367,6 @@
},
{
label: "设备状态",
- align: "center",
prop: "dxzt",
slot: true,
addDisplay: false,
@@ -390,6 +398,10 @@
value: "dictValue"
},
dicUrl: "/api/blade-system/dict-biz/child-list?parentId=1357568691367661569",
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
},
{
label: "省份",
@@ -406,7 +418,11 @@
cascaderItem: ["city", "district"],
dicUrl: "/api/blade-system/region/select",
span: 6,
- className: "cityClass1"
+ className: "cityClass1",
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
},
{
label: "地市",
@@ -424,7 +440,11 @@
dicUrl: "/api/blade-system/region/select?code={{key}}",
span: 3,
labelWidth: "0",
- className: "cityClass2"
+ className: "cityClass2",
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
},
{
label: "区县",
@@ -442,45 +462,77 @@
dicUrl: "/api/blade-system/region/select?code={{key}}",
span: 3,
labelWidth: "0",
- className: "cityClass3"
+ className: "cityClass3",
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
}, {
label: "街道",
prop: "street",
- width: 200
+ width: 200,
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
},
{
label: "负责人",
prop: "oneContacts",
- width: 72
+ width: 72,
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
},
{
label: "负责人电话",
prop: "onePhone",
- width: 110
+ width: 110,
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
}, {
label: "到期时间",
prop: "expireTime",
type: "datetime",
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-dd HH:mm:ss",
- width: 130
+ width: 130,
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
}, {
label: "缴费信息",
prop: "pay",
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
}, {
label: "安装时间",
prop: "stime",
type: "datetime",
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-dd HH:mm:ss",
- width: 130
+ width: 130,
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
}, {
label: "心跳时间",
prop: "heartbeat",
type: "datetime",
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-dd HH:mm:ss",
- width: 130
+ width: 130,
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
},
]
@@ -726,6 +778,7 @@
});
}, handleStart(row) {
+ row = this.selectRow;
var arr = [];
this.$store.state.tags.tagList.forEach(item => {
if (item.label != "视频") {
@@ -737,13 +790,37 @@
path: `/real/video/`, query: row
});
}, handleMap(row) {
+ row = this.selectRow;
this.showMap = true;
this.$nextTick(() => {
this.$refs.mapDiv.onload = () => {
window.frames[0].init("equipment", {x: row.jd, y: row.wd});
};
})
+ },rightClick(row, event) {
+ this.selectRow = row;
+ this.menuVisible = false; // 先把模态框关死,目的是 第二次或者第n次右键鼠标的时候 它默认的是true
+ this.menuVisible = true; // 显示模态窗口,跳出自定义菜单栏
+ var menu = document.querySelector('#menu');
+ this.styleMenu(menu);
},
+ foo() {
+ // 取消鼠标监听事件 菜单栏
+ this.menuVisible = false;
+ document.removeEventListener('click', this.foo); // 要及时关掉监听,不关掉的是一个坑,不信你试试,虽然前台显示的时候没有啥毛病,加一个alert你就知道了
+ },
+ styleMenu(menu) {
+ let cha = document.body.clientHeight - event.clientY
+ //console.log(document.body.clientHeight,event.clientY,cha)
+ // 防止菜单太靠底,根据可视高度调整菜单出现位置
+ if (cha < 150) {
+ menu.style.top = event.clientY -120 - (120) + 'px'
+ } else {
+ menu.style.top = event.clientY -10 - (120) + 'px'
+ }
+ menu.style.left = event.clientX + 10 - (240) + 'px'
+ document.addEventListener('click', this.foo); // 给整个document新增监听鼠标事件,点击任何位置执行foo方法
+ }
}
};
</script>
@@ -756,6 +833,51 @@
.payWin .el-dialog__body {
padding-top: 0px !important;
+ }
+
+
+ /*页面样式*/
+ .el-card__body .cityClass1 {
+ width: 155px;
+ padding-right: 0px !important;
+ }
+
+ .el-card__body .cityClass2 {
+ width: 100px;
+ padding-left: 0px !important;
+ padding-right: 0px !important;
+ }
+
+ .el-card__body .cityClass3 {
+ width: 100px;
+ padding-left: 0px !important;
+ padding-right: 0px !important;
+ }
+
+ /*新增窗体样式*/
+ .el-dialog .cityClass1 {
+ width: 220px;
+ padding-right: 0px !important;
+ }
+
+ .el-dialog .cityClass2 {
+ width: 110px;
+ padding-left: 5px !important;
+ padding-right: 5px !important;
+ }
+
+ .el-dialog .cityClass3 {
+ width: 110px;
+ padding-left: 0px !important;
+ padding-right: 0px !important;
+ }
+
+ .cityClass2 div label {
+ display: none;
+ }
+
+ .cityClass3 div label {
+ display: none;
}
.real-jf-dialog {
@@ -799,4 +921,41 @@
font-size: 15px;
}
+ .menu_item {
+ cursor:pointer;
+ line-height: 20px;
+ text-align: center;
+ margin-top: 0px;
+ }
+
+ .menu {
+ height: auto;
+ width: 120px;
+ color: #606266;
+ position: absolute;
+ padding: 0px;
+ box-sizing: border-box;
+ /*border: 1px solid #999999;*/
+ text-align: center;
+ background-color: #fff;
+ border-radius: .25rem;
+ box-shadow: 0 .5rem 1rem rgba(0,0,0,.15);
+ }
+ .menu li:hover {
+ background-color: rgba(232,237,250,.6);
+ color: darkslategrey;
+ }
+ .menu li{
+ position: relative;
+ display: flex;
+ font-size: 14px;
+ align-items: center;
+ height: 34px;
+ line-height: 34px;
+ outline: none;
+ margin-top: 0px;
+ padding-left: 20px;
+ padding-right: 5px;
+ }
+
</style>
diff --git a/src/views/realTimePolice/real.vue b/src/views/realTimePolice/real.vue
index 0871bfc..cd9b25d 100644
--- a/src/views/realTimePolice/real.vue
+++ b/src/views/realTimePolice/real.vue
@@ -19,6 +19,7 @@
@row-save="rowSave"
:before-open="beforeOpen"
:row-style="rowStyle"
+ row-class-name="tabFontSize"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@@ -43,7 +44,7 @@
<template slot="menuLeft">
<el-button
v-bind:class="activeClass == 0 ? 'btn-color' : ''"
- size="small"
+ size="mini"
@click="getBRdata(0)"
>本日
</el-button>
@@ -433,13 +434,14 @@
calcHeight: 30,
labelWidth: "100",
size: "mini",
+ border: false,
+ stripe:true,
menuWidth: 240,
dialogWidth: 950,
tip: false,
searchShow: true,
searchMenuSpan: 3,
align:"center",
- border: true,
index: true,
viewBtn: true,
selection: true,
@@ -450,7 +452,7 @@
prop: "waringType",
search: false,
searchSpan: 3,
- width: 130,
+ width: 85,
className: "waringTypeClass",
searchPlaceholder: "请选择",
type: "select",
@@ -465,7 +467,7 @@
{
label: "报警时间",
type: "datetime",
- width: 130,
+ width: 160,
format: "yyyy-MM-dd HH:mm:ss",
valueFormat: "yyyy-MM-dd HH:mm:ss",
prop: "alarmTime",
@@ -499,11 +501,12 @@
{
label: "负责人电话",
prop: "onePhone",
- width: 96,
+ width: 110,
},
{
label: "报警人",
prop: "galarmPeople",
+ width: 90
},
{
label: "报警人电话",
@@ -512,7 +515,6 @@
},
{
label: "事发地址",
- width: 200,
prop: "place",
},
{
@@ -562,6 +564,10 @@
dicUrl: "/api/blade-system/region/select",
span: 6,
className: "cityClass1",
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
},
{
label: "地市",
@@ -580,6 +586,10 @@
span: 3,
labelWidth: "0",
className: "cityClass2",
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
},
{
label: "区县",
@@ -598,10 +608,15 @@
span: 3,
labelWidth: "0",
className: "cityClass3",
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
},
{
label: "接警人",
prop: "alarmPeople",
+ width: 90
},
{
label: "接警时间",
@@ -610,6 +625,10 @@
valueFormat: "yyyy-MM-dd HH:mm:ss",
width: 130,
prop: "jjTime",
+ hide: true,
+ addDisplay: true,
+ editDisplay: true,
+ viewDisplay: true,
},
],
},
@@ -887,7 +906,7 @@
return a.jtype - b.jtype;
});
-
+
this.data = data.records;
@@ -1483,4 +1502,9 @@
background-color: rgb(64, 158, 255);
border-color: rgb(64, 158, 255);
}
+
+.tabFontSize{
+ font-size: 15px;
+}
+
</style>
diff --git a/src/views/system/cs.vue b/src/views/system/cs.vue
index 5c0b87e..aef990b 100644
--- a/src/views/system/cs.vue
+++ b/src/views/system/cs.vue
@@ -9,6 +9,7 @@
:permission="permissionList"
:before-open="beforeOpen"
@row-del="rowDel"
+ row-class-name="tabFontSize"
@row-update="rowUpdate"
@row-save="rowSave"
@search-change="searchChange"
@@ -20,7 +21,7 @@
@on-load="onLoad">
<template slot="menuLeft">
<el-button type="danger"
- size="small"
+ size="mini"
icon="el-icon-delete"
v-if="permission.tenant_delete"
plain
@@ -92,10 +93,12 @@
option: {
height: 'auto',
calcHeight: 80,
+ size: "mini",
tip: false,
searchShow: true,
searchMenuSpan: 6,
- border: true,
+ border: false,
+ stripe:true,
index: true,
selection: true,
viewBtn: true,
@@ -847,4 +850,54 @@
</script>
<style>
+
+ /*页面样式*/
+ .el-card__body .cityClass1 {
+ width: 155px;
+ padding-right: 0px !important;
+ }
+
+ .el-card__body .cityClass2 {
+ width: 100px;
+ padding-left: 0px !important;
+ padding-right: 0px !important;
+ }
+
+ .el-card__body .cityClass3 {
+ width: 100px;
+ padding-left: 0px !important;
+ padding-right: 0px !important;
+ }
+
+ /*新增窗体样式*/
+ .el-dialog .cityClass1 {
+ width: 220px;
+ padding-right: 0px !important;
+ }
+
+ .el-dialog .cityClass2 {
+ width: 110px;
+ padding-left: 5px !important;
+ padding-right: 5px !important;
+ }
+
+ .el-dialog .cityClass3 {
+ width: 110px;
+ padding-left: 0px !important;
+ padding-right: 0px !important;
+ }
+
+ .cityClass2 div label {
+ display: none;
+ }
+
+ .cityClass3 div label {
+ display: none;
+ }
+
+ .tabFontSize{
+ font-size: 15px;
+ }
+
+
</style>
--
Gitblit v1.9.3