299 lines
7.5 KiB
Vue
299 lines
7.5 KiB
Vue
|
|
<!--
|
|||
|
|
* @Author: daidai
|
|||
|
|
* @Date: 2022-03-01 14:13:04
|
|||
|
|
* @LastEditors: Please set LastEditors
|
|||
|
|
* @LastEditTime: 2022-09-27 15:04:49
|
|||
|
|
* @FilePath: \web-pc\src\pages\big-screen\view\indexs\right-top.vue
|
|||
|
|
-->
|
|||
|
|
<template>
|
|||
|
|
<Echart
|
|||
|
|
id="rightTop"
|
|||
|
|
:options="option"
|
|||
|
|
class="right_top_inner"
|
|||
|
|
v-if="pageflag"
|
|||
|
|
ref="charts"
|
|||
|
|
/>
|
|||
|
|
<Reacquire v-else @onclick="getData" style="line-height: 200px">
|
|||
|
|
重新获取
|
|||
|
|
</Reacquire>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import { currentGET } from "api/modules";
|
|||
|
|
import {graphic} from "echarts"
|
|||
|
|
export default {
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
option: {},
|
|||
|
|
pageflag: false,
|
|||
|
|
timer: null,
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
created() {
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
mounted() {
|
|||
|
|
this.getData();
|
|||
|
|
},
|
|||
|
|
beforeDestroy() {
|
|||
|
|
this.clearData();
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
clearData() {
|
|||
|
|
if (this.timer) {
|
|||
|
|
clearInterval(this.timer);
|
|||
|
|
this.timer = null;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
getData() {
|
|||
|
|
this.pageflag = true;
|
|||
|
|
// this.pageflag =false
|
|||
|
|
currentGET("big4").then((res) => {
|
|||
|
|
if (!this.timer) {
|
|||
|
|
console.log("报警次数", res);
|
|||
|
|
}
|
|||
|
|
if (res.success) {
|
|||
|
|
this.countUserNumData = res.data;
|
|||
|
|
this.$nextTick(() => {
|
|||
|
|
this.init(res.data.dateList, res.data.numList, res.data.numList2),
|
|||
|
|
this.switper();
|
|||
|
|
});
|
|||
|
|
} else {
|
|||
|
|
this.pageflag = false;
|
|||
|
|
this.$Message({
|
|||
|
|
text: res.msg,
|
|||
|
|
type: "warning",
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
//轮询
|
|||
|
|
switper() {
|
|||
|
|
if (this.timer) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
let looper = (a) => {
|
|||
|
|
this.getData();
|
|||
|
|
};
|
|||
|
|
this.timer = setInterval(
|
|||
|
|
looper,
|
|||
|
|
this.$store.state.setting.echartsAutoTime
|
|||
|
|
);
|
|||
|
|
let myChart = this.$refs.charts.chart;
|
|||
|
|
myChart.on("mouseover", (params) => {
|
|||
|
|
this.clearData();
|
|||
|
|
});
|
|||
|
|
myChart.on("mouseout", (params) => {
|
|||
|
|
this.timer = setInterval(
|
|||
|
|
looper,
|
|||
|
|
this.$store.state.setting.echartsAutoTime
|
|||
|
|
);
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
init(xData, yData, yData2) {
|
|||
|
|
this.option = {
|
|||
|
|
xAxis: {
|
|||
|
|
type: "category",
|
|||
|
|
data: xData,
|
|||
|
|
boundaryGap: false, // 不留白,从原点开始
|
|||
|
|
splitLine: {
|
|||
|
|
show: true,
|
|||
|
|
lineStyle: {
|
|||
|
|
color: "rgba(31,99,163,.2)",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
axisLine: {
|
|||
|
|
// show:false,
|
|||
|
|
lineStyle: {
|
|||
|
|
color: "rgba(31,99,163,.1)",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
axisLabel: {
|
|||
|
|
color: "#7EB7FD",
|
|||
|
|
fontWeight: "500",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
yAxis: {
|
|||
|
|
type: "value",
|
|||
|
|
splitLine: {
|
|||
|
|
show: true,
|
|||
|
|
lineStyle: {
|
|||
|
|
color: "rgba(31,99,163,.2)",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
axisLine: {
|
|||
|
|
lineStyle: {
|
|||
|
|
color: "rgba(31,99,163,.1)",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
axisLabel: {
|
|||
|
|
color: "#7EB7FD",
|
|||
|
|
fontWeight: "500",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
tooltip: {
|
|||
|
|
trigger: "axis",
|
|||
|
|
backgroundColor: "rgba(0,0,0,.6)",
|
|||
|
|
borderColor: "rgba(147, 235, 248, .8)",
|
|||
|
|
textStyle: {
|
|||
|
|
color: "#FFF",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
grid: {
|
|||
|
|
//布局
|
|||
|
|
show: true,
|
|||
|
|
left: "10px",
|
|||
|
|
right: "30px",
|
|||
|
|
bottom: "10px",
|
|||
|
|
top: "28px",
|
|||
|
|
containLabel: true,
|
|||
|
|
borderColor: "#1F63A3",
|
|||
|
|
},
|
|||
|
|
series: [
|
|||
|
|
{
|
|||
|
|
data: yData,
|
|||
|
|
type: "line",
|
|||
|
|
smooth: true,
|
|||
|
|
symbol: "none", //去除点
|
|||
|
|
name: "报警1次数",
|
|||
|
|
color: "rgba(252,144,16,.7)",
|
|||
|
|
areaStyle: {
|
|||
|
|
//右,下,左,上
|
|||
|
|
color: new graphic.LinearGradient(
|
|||
|
|
0,
|
|||
|
|
0,
|
|||
|
|
0,
|
|||
|
|
1,
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
offset: 0,
|
|||
|
|
color: "rgba(252,144,16,.7)",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
offset: 1,
|
|||
|
|
color: "rgba(252,144,16,.0)",
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
false
|
|||
|
|
),
|
|||
|
|
},
|
|||
|
|
markPoint: {
|
|||
|
|
data: [
|
|||
|
|
{
|
|||
|
|
name: "最大值",
|
|||
|
|
type: "max",
|
|||
|
|
valueDim: "y",
|
|||
|
|
symbol: "rect",
|
|||
|
|
symbolSize: [60, 26],
|
|||
|
|
symbolOffset: [0, -20],
|
|||
|
|
itemStyle: {
|
|||
|
|
color: "rgba(0,0,0,0)",
|
|||
|
|
},
|
|||
|
|
label: {
|
|||
|
|
color: "#FC9010",
|
|||
|
|
backgroundColor: "rgba(252,144,16,0.1)",
|
|||
|
|
borderRadius: 6,
|
|||
|
|
padding: [7, 14],
|
|||
|
|
borderWidth: 0.5,
|
|||
|
|
borderColor: "rgba(252,144,16,.5)",
|
|||
|
|
formatter: "报警1:{c}",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "最大值",
|
|||
|
|
type: "max",
|
|||
|
|
valueDim: "y",
|
|||
|
|
symbol: "circle",
|
|||
|
|
symbolSize: 6,
|
|||
|
|
itemStyle: {
|
|||
|
|
color: "#FC9010",
|
|||
|
|
shadowColor: "#FC9010",
|
|||
|
|
shadowBlur: 8,
|
|||
|
|
},
|
|||
|
|
label: {
|
|||
|
|
formatter: "",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
data: yData2,
|
|||
|
|
type: "line",
|
|||
|
|
smooth: true,
|
|||
|
|
symbol: "none", //去除点
|
|||
|
|
name: "报警2次数",
|
|||
|
|
color: "rgba(9,202,243,.7)",
|
|||
|
|
areaStyle: {
|
|||
|
|
//右,下,左,上
|
|||
|
|
color: new graphic.LinearGradient(
|
|||
|
|
0,
|
|||
|
|
0,
|
|||
|
|
0,
|
|||
|
|
1,
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
offset: 0,
|
|||
|
|
color: "rgba(9,202,243,.7)",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
offset: 1,
|
|||
|
|
color: "rgba(9,202,243,.0)",
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
false
|
|||
|
|
),
|
|||
|
|
},
|
|||
|
|
markPoint: {
|
|||
|
|
data: [
|
|||
|
|
{
|
|||
|
|
name: "最大值",
|
|||
|
|
type: "max",
|
|||
|
|
valueDim: "y",
|
|||
|
|
symbol: "rect",
|
|||
|
|
symbolSize: [60, 26],
|
|||
|
|
symbolOffset: [0, -20],
|
|||
|
|
itemStyle: {
|
|||
|
|
color: "rgba(0,0,0,0)",
|
|||
|
|
},
|
|||
|
|
label: {
|
|||
|
|
color: "#09CAF3",
|
|||
|
|
backgroundColor: "rgba(9,202,243,0.1)",
|
|||
|
|
|
|||
|
|
borderRadius: 6,
|
|||
|
|
borderColor: "rgba(9,202,243,.5)",
|
|||
|
|
padding: [7, 14],
|
|||
|
|
formatter: "报警2:{c}",
|
|||
|
|
borderWidth: 0.5,
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
name: "最大值",
|
|||
|
|
type: "max",
|
|||
|
|
valueDim: "y",
|
|||
|
|
symbol: "circle",
|
|||
|
|
symbolSize: 6,
|
|||
|
|
itemStyle: {
|
|||
|
|
color: "#09CAF3",
|
|||
|
|
shadowColor: "#09CAF3",
|
|||
|
|
shadowBlur: 8,
|
|||
|
|
},
|
|||
|
|
label: {
|
|||
|
|
formatter: "",
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
</script>
|
|||
|
|
<style lang='scss' scoped>
|
|||
|
|
.right_top_inner {
|
|||
|
|
margin-top: -8px;
|
|||
|
|
}
|
|||
|
|
</style>
|