|
@@ -1,81 +1,109 @@
|
|
|
<template>
|
|
|
- <div id="main2" style="width: 100%; height: 100%"></div>
|
|
|
+ <div
|
|
|
+ ref="main"
|
|
|
+ :class="className"
|
|
|
+ :style="{ height: height, width: width }"
|
|
|
+ ></div>
|
|
|
</template>
|
|
|
<script>
|
|
|
import echarts from "echarts";
|
|
|
+import resize from "./mixins/resize";
|
|
|
export default {
|
|
|
- name: "pieCamera",
|
|
|
+ mixins: [resize],
|
|
|
+ props: {
|
|
|
+ className: {
|
|
|
+ type: String,
|
|
|
+ default: "chart",
|
|
|
+ },
|
|
|
+ width: {
|
|
|
+ type: String,
|
|
|
+ default: "100%",
|
|
|
+ },
|
|
|
+ height: {
|
|
|
+ type: String,
|
|
|
+ default: "100%",
|
|
|
+ },
|
|
|
+ perData: {
|
|
|
+ type: Array,
|
|
|
+ default: () => [ {
|
|
|
+ name: "摄像头",
|
|
|
+ value: [39],
|
|
|
+ // nAmount: 566557.14,
|
|
|
+ }],
|
|
|
+ },
|
|
|
+ },
|
|
|
+
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ chart: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
mounted() {
|
|
|
- this.showMain();
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.initChart();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ beforeDestroy() {
|
|
|
+ if (!this.chart) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.chart.dispose();
|
|
|
+ this.chart = null;
|
|
|
},
|
|
|
methods: {
|
|
|
- showMain() {
|
|
|
+ initChart() {
|
|
|
// 基于准备好的dom,初始化echarts实例
|
|
|
- var myChart = echarts.init(document.getElementById("main2"));
|
|
|
+ this.chart = echarts.init(this.$refs.main);
|
|
|
|
|
|
- var data = {
|
|
|
- name: "摄像头",
|
|
|
- value: [39],
|
|
|
- // nAmount: 566557.14,
|
|
|
- };
|
|
|
|
|
|
var color = ["#C8E4FF", "#0483FF", "#0483FF"];
|
|
|
|
|
|
- var title=data.value[0];
|
|
|
- var per="%"
|
|
|
+ var title = this.perData[0].value;
|
|
|
+ var per = "%";
|
|
|
|
|
|
// 指定图表的配置项和数据
|
|
|
- var option = {
|
|
|
-
|
|
|
-
|
|
|
+ this.chart.setOption({
|
|
|
title: {
|
|
|
- text: '{a|'+ title +'}{b|'+ per +'}',
|
|
|
+ text: "{a|" + title + "}{b|" + per + "}",
|
|
|
textStyle: {
|
|
|
- rich:{
|
|
|
- a: {
|
|
|
- fontSize: 25,
|
|
|
- color: color[2],
|
|
|
- fontFamily: "impact",
|
|
|
- },
|
|
|
- b: {
|
|
|
- fontSize: 16,
|
|
|
- fontFamily: "impact",
|
|
|
- color: color[2],
|
|
|
- },
|
|
|
- }
|
|
|
+ rich: {
|
|
|
+ a: {
|
|
|
+ fontSize: 25,
|
|
|
+ color: color[2],
|
|
|
+ fontFamily: "impact",
|
|
|
+ },
|
|
|
+ b: {
|
|
|
+ fontSize: 16,
|
|
|
+ fontFamily: "impact",
|
|
|
+ color: color[2],
|
|
|
+ },
|
|
|
+ },
|
|
|
},
|
|
|
- subtext: '异常率',
|
|
|
+ subtext: "异常率",
|
|
|
subtextStyle: {
|
|
|
- color: '#fff',
|
|
|
- fontSize:'12',
|
|
|
+ color: "#fff",
|
|
|
+ fontSize: "12",
|
|
|
},
|
|
|
itemGap: 3,
|
|
|
left: "center",
|
|
|
- top: "37%", //aa圈内标题的位置
|
|
|
+ top: "37%", //aa圈内标题的位置
|
|
|
},
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
graphic: [
|
|
|
{
|
|
|
type: "text",
|
|
|
z: 100,
|
|
|
left: "center",
|
|
|
- top: "90%", // aa 底下标题w在容器里的位置
|
|
|
+ top: "90%", // aa 底下标题w在容器里的位置
|
|
|
style: {
|
|
|
fill: "#fff",
|
|
|
- text: data.name,
|
|
|
- // text: [
|
|
|
- // '横轴表示温度,单位是°C',
|
|
|
- // '纵轴表示高度,单位是km',
|
|
|
- // '右上角有一个图片做的水印',
|
|
|
- // '这个文本块可以放在图中各',
|
|
|
- // '种位置'
|
|
|
- // ].join('\n'),
|
|
|
- font: "1.6rem Microsoft YaHei", // aa 底下标题字体大小
|
|
|
+ text: this.perData[0].name,
|
|
|
+ font: "1.6rem Microsoft YaHei", // aa 底下标题字体大小
|
|
|
},
|
|
|
},
|
|
|
],
|
|
|
- tooltip: { //aa 手指移入
|
|
|
+ tooltip: {
|
|
|
+ //aa 手指移入
|
|
|
formatter: function (params) {
|
|
|
return (
|
|
|
'<span style="color: #fff;">占比:' + params.value + "%</span>"
|
|
@@ -91,7 +119,6 @@ export default {
|
|
|
startAngle: 90,
|
|
|
},
|
|
|
|
|
|
-
|
|
|
radiusAxis: {
|
|
|
type: "category",
|
|
|
show: true,
|
|
@@ -106,8 +133,6 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
|
|
|
-
|
|
|
-
|
|
|
polar: [
|
|
|
{
|
|
|
center: ["50%", "50%"], //中心点位置 aa填充圈的中心位置
|
|
@@ -119,7 +144,7 @@ export default {
|
|
|
name: "小环",
|
|
|
type: "gauge",
|
|
|
splitNumber: 15,
|
|
|
- radius: "75%", //aa发散圈的大小
|
|
|
+ radius: "75%", //aa发散圈的大小
|
|
|
center: ["50%", "50%"],
|
|
|
startAngle: 0,
|
|
|
endAngle: 359.9999,
|
|
@@ -130,12 +155,12 @@ export default {
|
|
|
show: true,
|
|
|
lineStyle: {
|
|
|
color: color[1],
|
|
|
- width: 1, // aa发散圈的粗细
|
|
|
+ width: 1, // aa发散圈的粗细
|
|
|
shadowBlur: 1,
|
|
|
shadowColor: color[1],
|
|
|
},
|
|
|
- length: 8, // aa发散圈的长度
|
|
|
- splitNumber: 5, //aa发散圈每一条间隔
|
|
|
+ length: 8, // aa发散圈的长度
|
|
|
+ splitNumber: 5, //aa发散圈每一条间隔
|
|
|
},
|
|
|
splitLine: {
|
|
|
show: false,
|
|
@@ -150,7 +175,7 @@ export default {
|
|
|
{
|
|
|
type: "bar",
|
|
|
z: 10,
|
|
|
- data: data.value,
|
|
|
+ data: this.perData[0].value,
|
|
|
showBackground: false,
|
|
|
backgroundStyle: {
|
|
|
color: color[1],
|
|
@@ -159,7 +184,7 @@ export default {
|
|
|
},
|
|
|
coordinateSystem: "polar",
|
|
|
// roundCap: true, //aa填充圈圆角
|
|
|
- barWidth: 7, //aa填充圈宽度
|
|
|
+ barWidth: 7, //aa填充圈宽度
|
|
|
itemStyle: {
|
|
|
normal: {
|
|
|
opacity: 1,
|
|
@@ -181,8 +206,8 @@ export default {
|
|
|
{
|
|
|
type: "pie",
|
|
|
name: "内层细圆环",
|
|
|
- radius: ["50%", "52%"], //aa内层细圆环
|
|
|
- center: ["50%", "50%"],
|
|
|
+ radius: ["50%", "52%"], //aa内层细圆环
|
|
|
+ center: ["50%", "50%"],
|
|
|
startAngle: 120,
|
|
|
hoverAnimation: false,
|
|
|
clockWise: true,
|
|
@@ -210,13 +235,7 @@ export default {
|
|
|
data: [100],
|
|
|
},
|
|
|
],
|
|
|
- };
|
|
|
-
|
|
|
- // 使用刚指定的配置项和数据显示图表。
|
|
|
- myChart.setOption(option);
|
|
|
- window.addEventListener("resize", function() {
|
|
|
- myChart.resize();
|
|
|
- });
|
|
|
+ });
|
|
|
},
|
|
|
},
|
|
|
};
|