234 lines
5.4 KiB
Vue
234 lines
5.4 KiB
Vue
<script setup lang="ts">
|
||
import { ref, onMounted } from "vue";
|
||
import { alarmNum } from "@/api";
|
||
import { graphic } from "echarts/core";
|
||
import { ElMessage } from "element-plus";
|
||
|
||
const option = ref({});
|
||
const getData = () => {
|
||
return
|
||
alarmNum()
|
||
.then((res) => {
|
||
console.log("右上--报警次数 ", res);
|
||
if (res.success) {
|
||
setOption(res.data.dateList, res.data.numList, res.data.numList2);
|
||
} else {
|
||
ElMessage({
|
||
message: res.msg,
|
||
type: "warning",
|
||
});
|
||
}
|
||
})
|
||
.catch((err) => {
|
||
ElMessage.error(err);
|
||
});
|
||
};
|
||
const setOption = async (xData: any[], yData: any[], yData2: any[]) => {
|
||
option.value = {
|
||
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: "32px",
|
||
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: "",
|
||
},
|
||
},
|
||
],
|
||
},
|
||
},
|
||
],
|
||
};
|
||
};
|
||
onMounted(() => {
|
||
getData();
|
||
});
|
||
</script>
|
||
|
||
<template>
|
||
<v-chart class="chart" :option="option" v-if="JSON.stringify(option) != '{}'" />
|
||
</template>
|
||
|
||
<style scoped lang="scss"></style>
|