|
|
@@ -1,377 +1,424 @@
|
|
|
<template>
|
|
|
- <div class="component_box">
|
|
|
- <div ref="chart" style="width: 100%; height: 100%;" @mouseenter="handleMouseEnter"
|
|
|
- @mouseleave="handleMouseLeave"></div>
|
|
|
+ <div class="component_box" style="padding-top: 10px">
|
|
|
+ <div class="header">{{ title }}</div>
|
|
|
+ <div>
|
|
|
+ <el-tabs v-model="activeName" @tab-click="handleClick">
|
|
|
+ <el-tab-pane
|
|
|
+ v-for="t in types"
|
|
|
+ :key="t.value"
|
|
|
+ :label="t.text"
|
|
|
+ :name="t.value"
|
|
|
+ ></el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
</div>
|
|
|
+ <div
|
|
|
+ ref="chart"
|
|
|
+ style="width: 100%; height: calc(100% - 40px)"
|
|
|
+ @mouseenter="handleMouseEnter"
|
|
|
+ @mouseleave="handleMouseLeave"
|
|
|
+ ></div>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
<script>
|
|
|
-import { alarmTrend } from '@/api/iot/board'
|
|
|
+const types = [
|
|
|
+ {
|
|
|
+ text: "近七天",
|
|
|
+ value: "0",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "近7周",
|
|
|
+ value: "1",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "近半年",
|
|
|
+ value: "2",
|
|
|
+ },
|
|
|
+];
|
|
|
+import { alarmTrend } from "@/api/iot/board";
|
|
|
+import * as echarts from "echarts";
|
|
|
+import { getNextPeriod } from "@/views/board/utils.js";
|
|
|
export default {
|
|
|
- props: {
|
|
|
- orgId: {
|
|
|
- type: String,
|
|
|
- isRequired: true,
|
|
|
- },
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- data: {
|
|
|
- date: [], //x轴的日期
|
|
|
- total: [], //报警总数
|
|
|
- countByType: [],//按分类统计的报警总数
|
|
|
- },
|
|
|
- isMouseOver: false,
|
|
|
- // activeName: types[0].value,
|
|
|
- };
|
|
|
+ props: {
|
|
|
+ orgId: {
|
|
|
+ type: String,
|
|
|
+ isRequired: true,
|
|
|
},
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ types,
|
|
|
+ data: {
|
|
|
+ date: [], //x轴的日期
|
|
|
+ total: [], //报警总数
|
|
|
+ countByType: [], //按分类统计的报警总数
|
|
|
+ },
|
|
|
+ title: "近七天告警趋势",
|
|
|
+ isMouseOver: false,
|
|
|
+ activeName: types[0].value,
|
|
|
+ };
|
|
|
+ },
|
|
|
|
|
|
- components: {},
|
|
|
+ components: {},
|
|
|
|
|
|
- computed: {},
|
|
|
+ computed: {},
|
|
|
|
|
|
- watch: {
|
|
|
- orgId: {
|
|
|
- deep: true,
|
|
|
- handler(val) {
|
|
|
- this.resetTimer();
|
|
|
- this.getData();
|
|
|
- },
|
|
|
- },
|
|
|
- data: {
|
|
|
- deep: true,
|
|
|
- handler() {
|
|
|
- this.initMap();
|
|
|
- },
|
|
|
- },
|
|
|
+ watch: {
|
|
|
+ orgId: {
|
|
|
+ deep: true,
|
|
|
+ handler(val) {
|
|
|
+ this.resetTimer();
|
|
|
+ this.getData();
|
|
|
+ },
|
|
|
},
|
|
|
-
|
|
|
- created() {
|
|
|
- this.types = types;
|
|
|
- this.maxDisplay = 16;
|
|
|
- this.refreshTime = 1 * 10 * 1000;
|
|
|
- this.isMouseOver = false;
|
|
|
+ data: {
|
|
|
+ deep: true,
|
|
|
+ handler() {
|
|
|
+ this.initMap();
|
|
|
+ },
|
|
|
},
|
|
|
+ },
|
|
|
|
|
|
- async mounted() {
|
|
|
- window.addEventListener("resize", this.windowResize);
|
|
|
- },
|
|
|
- beforeDestroy() {
|
|
|
- this.timer && clearInterval(this.timer);
|
|
|
- this.timer = null;
|
|
|
+ created() {
|
|
|
+ this.maxDisplay = 16;
|
|
|
+ this.refreshTime = 1 * 60 * 1000;
|
|
|
+ this.isMouseOver = false;
|
|
|
+ },
|
|
|
|
|
|
- window.removeEventListener("resize", this.windowResize);
|
|
|
- },
|
|
|
+ async mounted() {
|
|
|
+ window.addEventListener("resize", this.windowResize);
|
|
|
+ },
|
|
|
+ beforeDestroy() {
|
|
|
+ this.timer && clearInterval(this.timer);
|
|
|
+ this.timer = null;
|
|
|
|
|
|
- methods: {
|
|
|
- // handleClick() {
|
|
|
- // this.resetTimer();
|
|
|
- // this.getData();
|
|
|
- // },
|
|
|
- handleMouseEnter() {
|
|
|
- this.isMouseOver = true;
|
|
|
- },
|
|
|
- handleMouseLeave() {
|
|
|
- this.isMouseOver = false;
|
|
|
- },
|
|
|
- async getData() {
|
|
|
- let r = (await alarmTrend(this.orgId))
|
|
|
- .data;
|
|
|
- let data = {
|
|
|
- date: [], //x轴的日期
|
|
|
- total: [], //报警总数
|
|
|
- countByType: [],//按分类统计的报警总数
|
|
|
- };
|
|
|
+ window.removeEventListener("resize", this.windowResize);
|
|
|
+ },
|
|
|
|
|
|
- let monitorCount = [];
|
|
|
- let fireCount = [];
|
|
|
- let environmentCount = [];
|
|
|
- for (let item of r) {
|
|
|
- data.total.push(item.total);
|
|
|
- monitorCount.push(item.monitorCount);
|
|
|
- fireCount.push(item.fireCount);
|
|
|
- environmentCount.push(item.environmentCount);
|
|
|
+ methods: {
|
|
|
+ handleClick() {
|
|
|
+ this.title = types[this.activeName].text + "告警趋势";
|
|
|
+ this.resetTimer();
|
|
|
+ this.getData();
|
|
|
+ },
|
|
|
+ handleMouseEnter() {
|
|
|
+ this.isMouseOver = true;
|
|
|
+ },
|
|
|
+ handleMouseLeave() {
|
|
|
+ this.isMouseOver = false;
|
|
|
+ },
|
|
|
+ async getData() {
|
|
|
+ let r = (await alarmTrend(this.orgId, this.activeName)).data;
|
|
|
+ let data = {
|
|
|
+ date: [], //x轴的日期
|
|
|
+ total: [], //报警总数
|
|
|
+ countByType: [], //按分类统计的报警总数
|
|
|
+ };
|
|
|
|
|
|
- data.date.push(item.orgName);
|
|
|
- }
|
|
|
+ let monitorCount = [];
|
|
|
+ let fireCount = [];
|
|
|
+ let environmentCount = [];
|
|
|
+ for (let item of r) {
|
|
|
+ data.total.push(item.total);
|
|
|
+ monitorCount.push(item.monitorCount);
|
|
|
+ fireCount.push(item.fireCount);
|
|
|
+ environmentCount.push(item.environmentCount);
|
|
|
|
|
|
- data.countByType.push(monitorCount)
|
|
|
- data.countByType.push(fireCount)
|
|
|
- data.countByType.push(environmentCount);
|
|
|
- this.data = data;
|
|
|
- },
|
|
|
+ data.date.push(item.date);
|
|
|
+ }
|
|
|
|
|
|
- windowResize() {
|
|
|
- this.myChart && this.myChart.resize();
|
|
|
- },
|
|
|
- initMap() {
|
|
|
- this.myChart && this.myChart.dispose();
|
|
|
- let c = this.$refs["chart"];
|
|
|
+ data.countByType.push(monitorCount);
|
|
|
+ data.countByType.push(fireCount);
|
|
|
+ data.countByType.push(environmentCount);
|
|
|
|
|
|
- // 基于准备好的dom,初始化echarts实例
|
|
|
- this.myChart = echarts.init(
|
|
|
- c
|
|
|
- );
|
|
|
- var data = {
|
|
|
- id: "multipleBarsLines",
|
|
|
- title: "近7天告警趋势",
|
|
|
- legendBar: ["报警总数"],
|
|
|
- symbol: "", //数值是否带百分号 --默认为空 ''
|
|
|
- legendLine: ["监控设备", "消防设备", "环境监测"],
|
|
|
- // xAxis: ["9月19", "9月20", "9月21", "9月22", "9月23", "9月24", "9月25"],
|
|
|
- // yAxis: [[8, 10, 10, 11, 4, 13, 8]],
|
|
|
- // lines: [
|
|
|
- // [4, 3, 2, 4, 2, 1, 1],
|
|
|
- // [2, 1, 4, 2, 3, 2, 4],
|
|
|
- // [1, 0, 2, 1, 1, 2, 1],
|
|
|
- // ],
|
|
|
- barColor: ["#3FA7DC", "#7091C4", "#5170A2"], //柱子颜色 必填参数
|
|
|
- lineColor: ["#D9523F"], // 折线颜色
|
|
|
- };
|
|
|
- /////////////end/////////
|
|
|
+ this.data = data;
|
|
|
+ },
|
|
|
|
|
|
- var myData = (function test() {
|
|
|
- var yAxis = this.data.total || [];
|
|
|
- var lines = this.data.countByType || [];
|
|
|
- var legendBar = data.legendBar || [];
|
|
|
- var legendLine = data.legendLine || [];
|
|
|
- var symbol = data.symbol || " ";
|
|
|
- var seriesArr = [];
|
|
|
- var legendArr = [];
|
|
|
- yAxis &&
|
|
|
- yAxis.forEach((item, index) => {
|
|
|
- legendArr.push({
|
|
|
- name: legendBar && legendBar.length > 0 && legendBar[index],
|
|
|
- });
|
|
|
- seriesArr.push({
|
|
|
- name: legendBar && legendBar.length > 0 && legendBar[index],
|
|
|
- type: "bar",
|
|
|
- barGap: "0.5px",
|
|
|
- data: item,
|
|
|
- barWidth: data.barWidth || 12,
|
|
|
- label: {
|
|
|
- normal: {
|
|
|
- show: true,
|
|
|
- formatter: "{c}" + symbol,
|
|
|
- position: "top",
|
|
|
- textStyle: {
|
|
|
- color: "#fff",
|
|
|
- fontStyle: "normal",
|
|
|
- fontFamily: "微软雅黑",
|
|
|
- textAlign: "left",
|
|
|
- fontSize: 11,
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- itemStyle: {
|
|
|
- //图形样式
|
|
|
- normal: {
|
|
|
- barBorderRadius: 4,
|
|
|
- color: data.barColor[index],
|
|
|
- },
|
|
|
- },
|
|
|
- });
|
|
|
- });
|
|
|
+ windowResize() {
|
|
|
+ this.myChart && this.myChart.resize();
|
|
|
+ },
|
|
|
+ initMap() {
|
|
|
+ this.myChart && this.myChart.dispose();
|
|
|
+ let c = this.$refs["chart"];
|
|
|
|
|
|
- lines &&
|
|
|
- lines.forEach((item, index) => {
|
|
|
- legendArr.push({
|
|
|
- name: legendLine && legendLine.length > 0 && legendLine[index],
|
|
|
- });
|
|
|
- seriesArr.push({
|
|
|
- name: legendLine && legendLine.length > 0 && legendLine[index],
|
|
|
- type: "line",
|
|
|
- data: item,
|
|
|
- itemStyle: {
|
|
|
- normal: {
|
|
|
- color: data.lineColor[index],
|
|
|
- lineStyle: {
|
|
|
- width: 3,
|
|
|
- type: "solid",
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- label: {
|
|
|
- normal: {
|
|
|
- show: false, //折线上方label控制显示隐藏
|
|
|
- position: "top",
|
|
|
- },
|
|
|
- },
|
|
|
- symbol: "circle",
|
|
|
- symbolSize: 10,
|
|
|
- });
|
|
|
- });
|
|
|
+ // 基于准备好的dom,初始化echarts实例
|
|
|
+ this.myChart = echarts.init(c);
|
|
|
|
|
|
- return {
|
|
|
- seriesArr,
|
|
|
- legendArr,
|
|
|
- };
|
|
|
- })();
|
|
|
+ var data = {
|
|
|
+ id: "multipleBarsLines",
|
|
|
+ title: types[this.activeName].text + "告警趋势",
|
|
|
+ legendBar: ["报警总数"],
|
|
|
+ symbol: "", //数值是否带百分号 --默认为空 ''
|
|
|
+ legendLine: ["监控设备", "消防设备", "环境监测"],
|
|
|
+ // xAxis: ["9月19", "9月20", "9月21", "9月22", "9月23", "9月24", "9月25"],
|
|
|
+ // yAxis: [[8, 10, 10, 11, 4, 13, 8]],
|
|
|
+ // lines: [
|
|
|
+ // [4, 3, 2, 4, 2, 1, 1],
|
|
|
+ // [2, 1, 4, 2, 3, 2, 4],
|
|
|
+ // [1, 0, 2, 1, 1, 2, 1],
|
|
|
+ // ],
|
|
|
+ barColor: ["#3FA7DC", "#7091C4", "#5170A2"], //柱子颜色 必填参数
|
|
|
+ lineColor: ["#D9523F"], // 折线颜色
|
|
|
+ };
|
|
|
+ /////////////end/////////
|
|
|
|
|
|
- option = {
|
|
|
- title: {
|
|
|
- show: true,
|
|
|
- top: "10%",
|
|
|
- left: "3%",
|
|
|
- text: data.title,
|
|
|
- textStyle: {
|
|
|
- fontSize: 18,
|
|
|
- color: "#fff",
|
|
|
- },
|
|
|
- subtext: data.subTitle,
|
|
|
- link: "",
|
|
|
- },
|
|
|
- tooltip: {
|
|
|
- trigger: "axis",
|
|
|
- formatter: function (params) {
|
|
|
- var time = "";
|
|
|
- var str = "";
|
|
|
- for (var i of params) {
|
|
|
- time = i.name.replace(/\n/g, "") + "<br/>";
|
|
|
- if (i.data == "null" || i.data == null) {
|
|
|
- str += i.seriesName + ":无数据" + "<br/>";
|
|
|
- } else {
|
|
|
- str += i.seriesName + ":" + i.data + symbol + "%<br/>";
|
|
|
- }
|
|
|
- }
|
|
|
- return time + str;
|
|
|
- },
|
|
|
- axisPointer: {
|
|
|
- type: "none",
|
|
|
- },
|
|
|
- },
|
|
|
- legend: {
|
|
|
- right: data.legendRight || "30%",
|
|
|
- top: "12%",
|
|
|
- right: "5%",
|
|
|
- itemGap: 16,
|
|
|
- itemWidth: 10,
|
|
|
- itemHeight: 10,
|
|
|
- data: myData.legendArr,
|
|
|
- textStyle: {
|
|
|
- color: "#fff",
|
|
|
- fontStyle: "normal",
|
|
|
- fontFamily: "微软雅黑",
|
|
|
- fontSize: 12,
|
|
|
- },
|
|
|
+ var myData = (() => {
|
|
|
+ var yAxis = [this.data.total] || [];
|
|
|
+ var lines = this.data.countByType || [];
|
|
|
+ var legendBar = data.legendBar || [];
|
|
|
+ var legendLine = data.legendLine || [];
|
|
|
+ var symbol = data.symbol || " ";
|
|
|
+ var seriesArr = [];
|
|
|
+ var legendArr = [];
|
|
|
+
|
|
|
+ yAxis &&
|
|
|
+ yAxis.forEach((item, index) => {
|
|
|
+ legendArr.push({
|
|
|
+ name: legendBar && legendBar.length > 0 && legendBar[index],
|
|
|
+ });
|
|
|
+ seriesArr.push({
|
|
|
+ name: legendBar && legendBar.length > 0 && legendBar[index],
|
|
|
+ type: "bar",
|
|
|
+ barGap: "0.5px",
|
|
|
+ data: item,
|
|
|
+ barWidth: data.barWidth || 12,
|
|
|
+ label: {
|
|
|
+ normal: {
|
|
|
+ show: true,
|
|
|
+ formatter: "{c}" + symbol,
|
|
|
+ position: "top",
|
|
|
+ textStyle: {
|
|
|
+ color: "#fff",
|
|
|
+ fontStyle: "normal",
|
|
|
+ fontFamily: "微软雅黑",
|
|
|
+ textAlign: "left",
|
|
|
+ fontSize: 11,
|
|
|
+ },
|
|
|
},
|
|
|
- grid: {
|
|
|
- x: 30,
|
|
|
- y: 80,
|
|
|
- x2: 30,
|
|
|
- y2: 60,
|
|
|
+ },
|
|
|
+ itemStyle: {
|
|
|
+ //图形样式
|
|
|
+ normal: {
|
|
|
+ barBorderRadius: 4,
|
|
|
+ color: data.barColor[index],
|
|
|
},
|
|
|
- xAxis: {
|
|
|
- type: "category",
|
|
|
- data: this.data.date,
|
|
|
- axisTick: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
-
|
|
|
- axisLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- color: "#1AA1FD",
|
|
|
- },
|
|
|
- symbol: ["none", "arrow"],
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- show: true,
|
|
|
- interval: "0",
|
|
|
- textStyle: {
|
|
|
- lineHeight: 16,
|
|
|
- padding: [2, 2, 0, 2],
|
|
|
- height: 50,
|
|
|
- fontSize: 12,
|
|
|
- },
|
|
|
- rich: {
|
|
|
- Sunny: {
|
|
|
- height: 50,
|
|
|
- // width: 60,
|
|
|
- padding: [0, 5, 0, 5],
|
|
|
- align: "center",
|
|
|
- },
|
|
|
- },
|
|
|
- formatter: function (params, index) {
|
|
|
- var newParamsName = "";
|
|
|
- var splitNumber = 5;
|
|
|
- var paramsNameNumber = params && params.length;
|
|
|
- if (paramsNameNumber && paramsNameNumber <= 4) {
|
|
|
- splitNumber = 4;
|
|
|
- } else if (paramsNameNumber >= 5 && paramsNameNumber <= 7) {
|
|
|
- splitNumber = 4;
|
|
|
- } else if (paramsNameNumber >= 8 && paramsNameNumber <= 9) {
|
|
|
- splitNumber = 5;
|
|
|
- } else if (paramsNameNumber >= 10 && paramsNameNumber <= 14) {
|
|
|
- splitNumber = 5;
|
|
|
- } else {
|
|
|
- params = params && params.slice(0, 15);
|
|
|
- }
|
|
|
+ },
|
|
|
+ });
|
|
|
+ });
|
|
|
|
|
|
- var provideNumber = splitNumber; //一行显示几个字
|
|
|
- var rowNumber = Math.ceil(paramsNameNumber / provideNumber) || 0;
|
|
|
- if (paramsNameNumber > provideNumber) {
|
|
|
- for (var p = 0; p < rowNumber; p++) {
|
|
|
- var tempStr = "";
|
|
|
- var start = p * provideNumber;
|
|
|
- var end = start + provideNumber;
|
|
|
- if (p == rowNumber - 1) {
|
|
|
- tempStr = params.substring(start, paramsNameNumber);
|
|
|
- } else {
|
|
|
- tempStr = params.substring(start, end) + "\n";
|
|
|
- }
|
|
|
- newParamsName += tempStr;
|
|
|
- }
|
|
|
- } else {
|
|
|
- newParamsName = params;
|
|
|
- }
|
|
|
- params = newParamsName;
|
|
|
- return "{Sunny|" + params + "}";
|
|
|
- },
|
|
|
- color: "#1AA1FD",
|
|
|
- },
|
|
|
+ lines &&
|
|
|
+ lines.forEach((item, index) => {
|
|
|
+ legendArr.push({
|
|
|
+ name: legendLine && legendLine.length > 0 && legendLine[index],
|
|
|
+ });
|
|
|
+ seriesArr.push({
|
|
|
+ name: legendLine && legendLine.length > 0 && legendLine[index],
|
|
|
+ type: "line",
|
|
|
+ data: item,
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ color: data.lineColor[index],
|
|
|
+ lineStyle: {
|
|
|
+ width: 3,
|
|
|
+ type: "solid",
|
|
|
+ },
|
|
|
},
|
|
|
- yAxis: {
|
|
|
- axisLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- color: "#1AA1FD",
|
|
|
- },
|
|
|
- symbol: ["none", "arrow"],
|
|
|
- },
|
|
|
- type: "value",
|
|
|
- axisTick: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- show: false,
|
|
|
- },
|
|
|
- splitLine: {
|
|
|
- show: false,
|
|
|
- lineStyle: {
|
|
|
- color: "#1AA1FD",
|
|
|
- type: "solid",
|
|
|
- },
|
|
|
- },
|
|
|
+ },
|
|
|
+ label: {
|
|
|
+ normal: {
|
|
|
+ show: false, //折线上方label控制显示隐藏
|
|
|
+ position: "top",
|
|
|
},
|
|
|
- series: myData.seriesArr,
|
|
|
- };
|
|
|
- // 使用刚指定的配置项和数据显示图表。
|
|
|
- if (option && typeof option === "object") {
|
|
|
- this.myChart.setOption(option);
|
|
|
+ },
|
|
|
+ symbol: "circle",
|
|
|
+ symbolSize: 10,
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ return {
|
|
|
+ seriesArr,
|
|
|
+ legendArr,
|
|
|
+ };
|
|
|
+ })();
|
|
|
+ // console.info(myData);
|
|
|
+ let option = {
|
|
|
+ // title: {
|
|
|
+ // show: false,
|
|
|
+ // top: "5%",
|
|
|
+ // left: "3%",
|
|
|
+ // text: data.title,
|
|
|
+ // textStyle: {
|
|
|
+ // fontSize: 18,
|
|
|
+ // color: "#fff",
|
|
|
+ // },
|
|
|
+ // subtext: data.subTitle,
|
|
|
+ // link: "",
|
|
|
+ // },
|
|
|
+ tooltip: {
|
|
|
+ trigger: "axis",
|
|
|
+ formatter: function (params) {
|
|
|
+ var time = "";
|
|
|
+ var str = "";
|
|
|
+ for (var i of params) {
|
|
|
+ time = i.name.replace(/\n/g, "") + "<br/>";
|
|
|
+ if (i.data == "null" || i.data == null) {
|
|
|
+ str += i.seriesName + ":无数据" + "<br/>";
|
|
|
+ } else {
|
|
|
+ str += i.seriesName + ":" + i.data + data.symbol + "<br/>";
|
|
|
+ }
|
|
|
}
|
|
|
+ return time + str;
|
|
|
+ },
|
|
|
+ axisPointer: {
|
|
|
+ type: "none",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ legend: {
|
|
|
+ right: data.legendRight || "30%",
|
|
|
+ top: "3%",
|
|
|
+ right: "5%",
|
|
|
+ itemGap: 16,
|
|
|
+ itemWidth: 10,
|
|
|
+ itemHeight: 10,
|
|
|
+ data: myData.legendArr,
|
|
|
+ textStyle: {
|
|
|
+ color: "#fff",
|
|
|
+ fontStyle: "normal",
|
|
|
+ fontFamily: "微软雅黑",
|
|
|
+ fontSize: 12,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ grid: {
|
|
|
+ x: 30,
|
|
|
+ y: 60,
|
|
|
+ x2: 30,
|
|
|
+ y2: 60,
|
|
|
},
|
|
|
+ xAxis: {
|
|
|
+ type: "category",
|
|
|
+ data: this.data.date,
|
|
|
+ axisTick: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
|
|
|
- resetTimer() {
|
|
|
- this.timer && clearInterval(this.timer);
|
|
|
- this.timer = setInterval(() => {
|
|
|
- if (this.isMouseOver) {
|
|
|
- return;
|
|
|
+ axisLine: {
|
|
|
+ show: true,
|
|
|
+ lineStyle: {
|
|
|
+ color: "#1AA1FD",
|
|
|
+ },
|
|
|
+ symbol: ["none", "arrow"],
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ show: true,
|
|
|
+ interval: "0",
|
|
|
+ textStyle: {
|
|
|
+ lineHeight: 16,
|
|
|
+ padding: [2, 2, 0, 2],
|
|
|
+ height: 50,
|
|
|
+ fontSize: 12,
|
|
|
+ },
|
|
|
+ rich: {
|
|
|
+ Sunny: {
|
|
|
+ height: 50,
|
|
|
+ // width: 60,
|
|
|
+ padding: [0, 5, 0, 5],
|
|
|
+ align: "center",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ formatter: function (params, index) {
|
|
|
+ var newParamsName = "";
|
|
|
+ var splitNumber = 6;
|
|
|
+ var paramsNameNumber = params && params.length;
|
|
|
+ // if (paramsNameNumber && paramsNameNumber <= 4) {
|
|
|
+ // splitNumber = 4;
|
|
|
+ // } else if (paramsNameNumber >= 5 && paramsNameNumber <= 7) {
|
|
|
+ // splitNumber = 5;
|
|
|
+ // } else if (paramsNameNumber >= 8 && paramsNameNumber <= 9) {
|
|
|
+ // splitNumber = 5;
|
|
|
+ // } else if (paramsNameNumber >= 10 && paramsNameNumber <= 14) {
|
|
|
+ // splitNumber = 5;
|
|
|
+ // } else {
|
|
|
+ // params = params && params.slice(0, 15);
|
|
|
+ // }
|
|
|
+
|
|
|
+ var provideNumber = splitNumber; //一行显示几个字
|
|
|
+ var rowNumber = Math.ceil(paramsNameNumber / provideNumber) || 0;
|
|
|
+ if (paramsNameNumber > provideNumber) {
|
|
|
+ for (var p = 0; p < rowNumber; p++) {
|
|
|
+ var tempStr = "";
|
|
|
+ var start = p * provideNumber;
|
|
|
+ var end = start + provideNumber;
|
|
|
+ if (p == rowNumber - 1) {
|
|
|
+ tempStr = params.substring(start, paramsNameNumber);
|
|
|
+ } else {
|
|
|
+ tempStr = params.substring(start, end) + "\n";
|
|
|
+ }
|
|
|
+ newParamsName += tempStr;
|
|
|
}
|
|
|
- this.activeName = getNextPeriod(this.types, this.activeName);
|
|
|
- this.getData();
|
|
|
- }, this.refreshTime);
|
|
|
+ } else {
|
|
|
+ newParamsName = params;
|
|
|
+ }
|
|
|
+ params = newParamsName;
|
|
|
+ return "{Sunny|" + params + "}";
|
|
|
+ },
|
|
|
+ color: "#1AA1FD",
|
|
|
+ },
|
|
|
},
|
|
|
+ yAxis: {
|
|
|
+ axisLine: {
|
|
|
+ show: true,
|
|
|
+ lineStyle: {
|
|
|
+ color: "#1AA1FD",
|
|
|
+ },
|
|
|
+ symbol: ["none", "arrow"],
|
|
|
+ },
|
|
|
+ type: "value",
|
|
|
+ axisTick: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ axisLabel: {
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+ splitLine: {
|
|
|
+ show: false,
|
|
|
+ lineStyle: {
|
|
|
+ color: "#1AA1FD",
|
|
|
+ type: "solid",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ series: myData.seriesArr,
|
|
|
+ };
|
|
|
+ // 使用刚指定的配置项和数据显示图表。
|
|
|
+ if (option && typeof option === "object") {
|
|
|
+ this.myChart.setOption(option);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ resetTimer() {
|
|
|
+ this.timer && clearInterval(this.timer);
|
|
|
+ this.timer = setInterval(() => {
|
|
|
+ if (this.isMouseOver) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.activeName = getNextPeriod(this.types, this.activeName);
|
|
|
+ this.getData();
|
|
|
+ }, this.refreshTime);
|
|
|
},
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
-<style scoped src="./../css/index.css"></style>
|
|
|
+<style scoped src="./../css/index.css"></style>
|
|
|
+<style lang="scss" scoped>
|
|
|
+.header {
|
|
|
+ position: absolute;
|
|
|
+ top: calc(18px + 20px);
|
|
|
+ left: calc(18px + 3%);
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: 700;
|
|
|
+}
|
|
|
+.component_box {
|
|
|
+ ::v-deep .el-tabs__nav-scroll {
|
|
|
+ justify-content: right !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|