|
@@ -1,188 +1,210 @@
|
|
|
<template>
|
|
|
<!-- 支架压力柱状图 -->
|
|
|
- <div id="bar" style="height: 300px; width: 600px; margin-top: 10px"></div>
|
|
|
+ <div
|
|
|
+ ref="bar"
|
|
|
+ style="height: 240px; width: 800px; margin-top: 30px;margin-left:40px"
|
|
|
+ ></div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+/**
|
|
|
+ * 支架压力监控
|
|
|
+ * @module Bars
|
|
|
+ */
|
|
|
export default {
|
|
|
name: "Bars",
|
|
|
data() {
|
|
|
return {
|
|
|
myChart: null,
|
|
|
- option: {
|
|
|
- title: {
|
|
|
- text: "支架压力监控",
|
|
|
- padding: [5, 230],
|
|
|
- textStyle: {
|
|
|
- fontWeight: "normal", //标题颜色
|
|
|
- color: "#4ADEFE",
|
|
|
- },
|
|
|
+ zhijiaId: [],
|
|
|
+ barData: [],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ const option = {
|
|
|
+ title: {
|
|
|
+ text: "支架压力监控",
|
|
|
+ padding: [5, 230],
|
|
|
+ textStyle: {
|
|
|
+ fontWeight: "normal", //标题颜色
|
|
|
+ color: "#4ADEFE",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ tooltip: {
|
|
|
+ trigger: "axis",
|
|
|
+ axisPointer: {
|
|
|
+ type: "shadow",
|
|
|
+ },
|
|
|
+ formatter: (params) => {
|
|
|
+ if (params[0].data > 64) {
|
|
|
+ return params[0].marker + "压力过高:" + params[0].data;
|
|
|
+ } else if (params[0].data < 24) {
|
|
|
+ return params[0].marker + "压力过低:" + params[0].data;
|
|
|
+ } else {
|
|
|
+ return params[0].marker + "压力正常:" + params[0].data;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ color: ["#FF6666", "#99CC66", "#FFFF66"],
|
|
|
+ legend: {
|
|
|
+ orient: "vertical",
|
|
|
+ left: "right",
|
|
|
+ icon: "rect",
|
|
|
+ textStyle: {
|
|
|
+ color: "#fff",
|
|
|
},
|
|
|
- tooltip: {
|
|
|
- trigger: "axis",
|
|
|
- axisPointer: {
|
|
|
- type: "shadow",
|
|
|
+ data: ["压力超限", "压力正常", "压力过低"],
|
|
|
+ },
|
|
|
+ grid: {
|
|
|
+ left: "3%",
|
|
|
+ right: "4%",
|
|
|
+ bottom: "3%",
|
|
|
+ containLabel: true,
|
|
|
+ },
|
|
|
+ xAxis: [
|
|
|
+ {
|
|
|
+ type: "category",
|
|
|
+ axisLabel: {
|
|
|
+ color: "#fff",
|
|
|
+ fontSize: 11,
|
|
|
},
|
|
|
- formatter: (params) => {
|
|
|
- if (params[0].data > 64) {
|
|
|
- return params[0].marker + "压力过高:" + params[0].data;
|
|
|
- } else if (params[0].data < 24) {
|
|
|
- return params[0].marker + "压力过低:" + params[0].data;
|
|
|
- } else {
|
|
|
- return params[0].marker + "压力正常:" + params[0].data;
|
|
|
- }
|
|
|
+ axisLine: {
|
|
|
+ show: true,
|
|
|
},
|
|
|
+ data: this.zhijiaId,
|
|
|
},
|
|
|
- color: ["#FF6666", "#99CC66", "#FFFF66"],
|
|
|
- legend: {
|
|
|
- orient: "vertical",
|
|
|
- left: "right",
|
|
|
- icon: "rect",
|
|
|
- textStyle: {
|
|
|
+ ],
|
|
|
+ yAxis: [
|
|
|
+ {
|
|
|
+ type: "value",
|
|
|
+ axisLabel: {
|
|
|
color: "#fff",
|
|
|
+ // fontSize: 11,
|
|
|
},
|
|
|
- data: ["压力超限", "压力正常", "压力过低"],
|
|
|
- },
|
|
|
- grid: {
|
|
|
- left: "3%",
|
|
|
- right: "4%",
|
|
|
- bottom: "3%",
|
|
|
- containLabel: true,
|
|
|
- },
|
|
|
- xAxis: [
|
|
|
- {
|
|
|
- type: "category",
|
|
|
- axisLabel: {
|
|
|
+ splitLine: {
|
|
|
+ show: true,
|
|
|
+ lineStyle: {
|
|
|
+ type: "dotted",
|
|
|
color: "#fff",
|
|
|
- fontSize: 11,
|
|
|
- },
|
|
|
- axisLine: {
|
|
|
- show: true,
|
|
|
},
|
|
|
- data: [
|
|
|
- 198, 190, 180, 170, 160, 150, 140, 130, 120, 110, 100, 90, 80, 70,
|
|
|
- 60, 50, 40, 30, 20, 10, 1,
|
|
|
- ],
|
|
|
},
|
|
|
- ],
|
|
|
- yAxis: [
|
|
|
- {
|
|
|
- type: "value",
|
|
|
- axisLabel: {
|
|
|
- color: "#fff",
|
|
|
- fontSize: 11,
|
|
|
- },
|
|
|
- splitLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- type: "dotted",
|
|
|
- color: "#fff",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: "数据",
|
|
|
+ type: "bar",
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ color: function (params) {
|
|
|
+ if (params.data > 64) {
|
|
|
+ return "#FF6666";
|
|
|
+ } else if (params.data < 24) {
|
|
|
+ return "#FFFF66";
|
|
|
+ } else {
|
|
|
+ return "#99CC66";
|
|
|
+ }
|
|
|
},
|
|
|
},
|
|
|
},
|
|
|
- ],
|
|
|
- series: [
|
|
|
- {
|
|
|
- name: "数据",
|
|
|
- type: "bar",
|
|
|
- itemStyle: {
|
|
|
- normal: {
|
|
|
- color: function (params) {
|
|
|
- if (params.data > 64) {
|
|
|
- return "#FF6666";
|
|
|
- } else if (params.data < 24) {
|
|
|
- return "#FFFF66";
|
|
|
- } else {
|
|
|
- return "#99CC66";
|
|
|
- }
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- barWidth: "10",
|
|
|
- barCategoryGap: "5%",
|
|
|
+ // barWidth: "10",
|
|
|
+ barCategoryGap: "5%",
|
|
|
+ data: this.barData,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ //这两组数据用来模拟markLine线段开关,data可以为空
|
|
|
+ name: "压力超限",
|
|
|
+ type: "line",
|
|
|
+ markLine: {
|
|
|
data: [
|
|
|
- 99, 66, 76, 12, 79, 42, 15, 56, 13, 29, 20, 4, 22, 12, 38, 9, 31,
|
|
|
- 66, 90, 77, 14,
|
|
|
- ],
|
|
|
- },
|
|
|
- {
|
|
|
- //这两组数据用来模拟markLine线段开关,data可以为空
|
|
|
- name: "压力超限",
|
|
|
- type: "line",
|
|
|
- markLine: {
|
|
|
- data: [
|
|
|
- {
|
|
|
- name: "压力超限",
|
|
|
- yAxis: "64",
|
|
|
- itemStyle: {
|
|
|
- normal: {
|
|
|
- show: true,
|
|
|
- color: "#FF6666",
|
|
|
- },
|
|
|
+ {
|
|
|
+ name: "压力超限",
|
|
|
+ yAxis: "64",
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ show: true,
|
|
|
+ color: "#FF6666",
|
|
|
},
|
|
|
},
|
|
|
- ],
|
|
|
- },
|
|
|
+ },
|
|
|
+ ],
|
|
|
},
|
|
|
- {
|
|
|
- //这两组数据用来模拟markLine线段开关,data可以为空
|
|
|
- name: "压力正常",
|
|
|
- type: "line",
|
|
|
- markLine: {
|
|
|
- data: [
|
|
|
- {
|
|
|
- name: "压力正常",
|
|
|
- yAxis: "24",
|
|
|
- itemStyle: {
|
|
|
- normal: {
|
|
|
- show: true,
|
|
|
- color: "#FFFF66",
|
|
|
- },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ //这两组数据用来模拟markLine线段开关,data可以为空
|
|
|
+ name: "压力正常",
|
|
|
+ type: "line",
|
|
|
+ markLine: {
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ name: "压力正常",
|
|
|
+ yAxis: "24",
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ show: true,
|
|
|
+ color: "#FFFF66",
|
|
|
},
|
|
|
},
|
|
|
- ],
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- name: "压力过低",
|
|
|
- type: "line",
|
|
|
- itemStyle: {
|
|
|
- normal: {
|
|
|
- color: "#FFFF66",
|
|
|
},
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "压力过低",
|
|
|
+ type: "line",
|
|
|
+ itemStyle: {
|
|
|
+ normal: {
|
|
|
+ color: "#FFFF66",
|
|
|
},
|
|
|
},
|
|
|
- ],
|
|
|
- },
|
|
|
+ },
|
|
|
+ ],
|
|
|
};
|
|
|
+
|
|
|
+ this.myChart = this.$echarts.init(this.$refs.bar);
|
|
|
+ // 获取数据
|
|
|
+ this.myChart.setOption(option);
|
|
|
+ this.timer = setInterval(() => {
|
|
|
+ this.getData();
|
|
|
+ }, 3000);
|
|
|
},
|
|
|
- mounted() {
|
|
|
- console.log(this.$echarts);
|
|
|
- this.myChart = this.$echarts.init(document.getElementById("bar"));
|
|
|
- this.setBar();
|
|
|
- let interval = setInterval(() => {
|
|
|
- let chartData = [];
|
|
|
- for (let i = 0; i < 21; i++) {
|
|
|
- chartData.push(this.getRandomNum(0, 120));
|
|
|
- }
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ getData() {
|
|
|
+ var count = 0;
|
|
|
+
|
|
|
+ this.barData.shift(this.barData[0]);
|
|
|
+ this.barData.push(parseInt(Math.random() * (40 - 25 + 1) + 25, 10));
|
|
|
+
|
|
|
+ console.log(this.barData);
|
|
|
this.myChart.setOption({
|
|
|
+ xAxis: [
|
|
|
+ {
|
|
|
+ data: this.zhijiaId,
|
|
|
+ },
|
|
|
+ ],
|
|
|
series: [
|
|
|
{
|
|
|
- name: "数据",
|
|
|
- data: chartData,
|
|
|
+ data: this.barData,
|
|
|
},
|
|
|
],
|
|
|
});
|
|
|
- }, 3000);
|
|
|
- this.$once("hook:beforeDestroy", () => {
|
|
|
- clearInterval(interval);
|
|
|
- });
|
|
|
- },
|
|
|
- methods: {
|
|
|
- setBar() {
|
|
|
- this.myChart.setOption(this.option);
|
|
|
},
|
|
|
},
|
|
|
+ created() {
|
|
|
+ // this.getData();
|
|
|
+ var index = 190;
|
|
|
+ for (var i = 0; i < 190; i++) {
|
|
|
+ this.zhijiaId.push(index--);
|
|
|
+ var data = parseInt(Math.random() * (40 - 25 + 1) + 25, 10);
|
|
|
+ this.barData.push(data);
|
|
|
+ }
|
|
|
+ console.log(this.zhijiaId);
|
|
|
+ },
|
|
|
+
|
|
|
+ destroyed() {
|
|
|
+ clearInterval(this.timer);
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
|