|
@@ -1,11 +1,11 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="echart_content">
|
|
<div class="echart_content">
|
|
|
<div class="is_show_all" v-if="showCheckBox">
|
|
<div class="is_show_all" v-if="showCheckBox">
|
|
|
- <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="ToggleChangeAll" >
|
|
|
|
|
|
|
+ <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="ToggleChangeAll">
|
|
|
显示全部
|
|
显示全部
|
|
|
</el-checkbox>
|
|
</el-checkbox>
|
|
|
</div>
|
|
</div>
|
|
|
- <div ref="line_chart" class="chart_box" :style="{height:reportHeight || '400px'}"></div>
|
|
|
|
|
|
|
+ <div ref="line_chart" class="chart_box" :style="{ height: reportHeight || '400px' }"></div>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
<script>
|
|
<script>
|
|
@@ -22,7 +22,7 @@ export default {
|
|
|
isIndeterminate: false,
|
|
isIndeterminate: false,
|
|
|
legendSelected: {},//图例选中状态
|
|
legendSelected: {},//图例选中状态
|
|
|
legenSelectList: [],//选择的图例
|
|
legenSelectList: [],//选择的图例
|
|
|
- legenAllList:this.title,//所有的图例数据
|
|
|
|
|
|
|
+ legenAllList: this.title,//所有的图例数据
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
@@ -33,11 +33,11 @@ export default {
|
|
|
default: 0,
|
|
default: 0,
|
|
|
},//grid右间距
|
|
},//grid右间距
|
|
|
gridTop: {
|
|
gridTop: {
|
|
|
- type: [Number,String],
|
|
|
|
|
|
|
+ type: [Number, String],
|
|
|
default: '',
|
|
default: '',
|
|
|
},
|
|
},
|
|
|
legendWidth: {
|
|
legendWidth: {
|
|
|
- type: [Number,String],
|
|
|
|
|
|
|
+ type: [Number, String],
|
|
|
default: 'auto',
|
|
default: 'auto',
|
|
|
},
|
|
},
|
|
|
showCheckBox: {
|
|
showCheckBox: {
|
|
@@ -52,25 +52,23 @@ export default {
|
|
|
datax: {
|
|
datax: {
|
|
|
type: Array,
|
|
type: Array,
|
|
|
default: function () {
|
|
default: function () {
|
|
|
- return [
|
|
|
|
|
- 'G10', 'G9', 'G8', 'G7', 'G6', 'G5', 'G4', 'G3', 'G2', 'G1'
|
|
|
|
|
- ];
|
|
|
|
|
|
|
+ return [];
|
|
|
}
|
|
}
|
|
|
},//x轴数据
|
|
},//x轴数据
|
|
|
datay: {
|
|
datay: {
|
|
|
type: Array,
|
|
type: Array,
|
|
|
default: function () {
|
|
default: function () {
|
|
|
return [
|
|
return [
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
];
|
|
];
|
|
|
}
|
|
}
|
|
|
},//y轴数据
|
|
},//y轴数据
|
|
|
|
|
|
|
|
- tooltipData:{
|
|
|
|
|
|
|
+ tooltipData: {
|
|
|
type: Array,
|
|
type: Array,
|
|
|
default: function () {
|
|
default: function () {
|
|
|
- return [];
|
|
|
|
|
|
|
+ return [];
|
|
|
}
|
|
}
|
|
|
},//悬浮弹窗的数据
|
|
},//悬浮弹窗的数据
|
|
|
colors: {
|
|
colors: {
|
|
@@ -85,7 +83,7 @@ export default {
|
|
|
},//单位
|
|
},//单位
|
|
|
title: {
|
|
title: {
|
|
|
type: Array,
|
|
type: Array,
|
|
|
- default: ()=>[]
|
|
|
|
|
|
|
+ default: () => []
|
|
|
},//图例标题
|
|
},//图例标题
|
|
|
// isSetMarkNumber:{
|
|
// isSetMarkNumber:{
|
|
|
// type: Boolean,
|
|
// type: Boolean,
|
|
@@ -93,7 +91,7 @@ export default {
|
|
|
// },//是否设置辅助线label值
|
|
// },//是否设置辅助线label值
|
|
|
markNumber: {
|
|
markNumber: {
|
|
|
type: Array,
|
|
type: Array,
|
|
|
- default: ()=>[]
|
|
|
|
|
|
|
+ default: () => []
|
|
|
},//辅助线位置值
|
|
},//辅助线位置值
|
|
|
|
|
|
|
|
isSmooth: {
|
|
isSmooth: {
|
|
@@ -106,65 +104,63 @@ export default {
|
|
|
// default: false
|
|
// default: false
|
|
|
// },//是否显示辅助线平均值
|
|
// },//是否显示辅助线平均值
|
|
|
|
|
|
|
|
- showBackground:{
|
|
|
|
|
- type:Boolean,
|
|
|
|
|
- default:true,
|
|
|
|
|
|
|
+ showBackground: {
|
|
|
|
|
+ type: Boolean,
|
|
|
|
|
+ default: true,
|
|
|
},//是否显示背景阴影 默认显示
|
|
},//是否显示背景阴影 默认显示
|
|
|
|
|
|
|
|
- isShowLabel:{
|
|
|
|
|
- type:Boolean,
|
|
|
|
|
- default:false,
|
|
|
|
|
|
|
+ isShowLabel: {
|
|
|
|
|
+ type: Boolean,
|
|
|
|
|
+ default: false,
|
|
|
},//是否显示柱状图label 默认显示
|
|
},//是否显示柱状图label 默认显示
|
|
|
- labelColor:{
|
|
|
|
|
|
|
+ labelColor: {
|
|
|
type: String,
|
|
type: String,
|
|
|
- default:'',
|
|
|
|
|
|
|
+ default: '',
|
|
|
},//柱状图label 颜色
|
|
},//柱状图label 颜色
|
|
|
- showMarkPoint:{
|
|
|
|
|
|
|
+ showMarkPoint: {
|
|
|
type: Boolean,
|
|
type: Boolean,
|
|
|
- default:false,
|
|
|
|
|
|
|
+ default: false,
|
|
|
},//是否显示气泡图 默认不显示
|
|
},//是否显示气泡图 默认不显示
|
|
|
|
|
|
|
|
- legendList:{
|
|
|
|
|
|
|
+ legendList: {
|
|
|
type: Array,
|
|
type: Array,
|
|
|
default: () => [],
|
|
default: () => [],
|
|
|
},//默认显示的图例数据
|
|
},//默认显示的图例数据
|
|
|
|
|
|
|
|
- yInverse:{
|
|
|
|
|
- type:Boolean,
|
|
|
|
|
- default:false,
|
|
|
|
|
|
|
+ yInverse: {
|
|
|
|
|
+ type: Boolean,
|
|
|
|
|
+ default: false,
|
|
|
},//y轴是否反序
|
|
},//y轴是否反序
|
|
|
|
|
|
|
|
- updateKey:{
|
|
|
|
|
- type:Number,
|
|
|
|
|
- default:0
|
|
|
|
|
|
|
+ updateKey: {
|
|
|
|
|
+ type: Number,
|
|
|
|
|
+ default: 0
|
|
|
},
|
|
},
|
|
|
- gridLeft:{
|
|
|
|
|
- type:Number,
|
|
|
|
|
- default:20
|
|
|
|
|
|
|
+ gridLeft: {
|
|
|
|
|
+ type: Number,
|
|
|
|
|
+ default: 20
|
|
|
},
|
|
},
|
|
|
- fontSize:{//字体大小
|
|
|
|
|
- type:[Number,String],
|
|
|
|
|
- default:''
|
|
|
|
|
|
|
+ fontSize: {//字体大小
|
|
|
|
|
+ type: [Number, String],
|
|
|
|
|
+ default: ''
|
|
|
},
|
|
},
|
|
|
- fontColor:{
|
|
|
|
|
- type:String,
|
|
|
|
|
- default:''
|
|
|
|
|
|
|
+ fontColor: {
|
|
|
|
|
+ type: String,
|
|
|
|
|
+ default: ''
|
|
|
},
|
|
},
|
|
|
- reportHeight:{//报告高度
|
|
|
|
|
- type:String,
|
|
|
|
|
- default:''
|
|
|
|
|
|
|
+ reportHeight: {//报告高度
|
|
|
|
|
+ type: String,
|
|
|
|
|
+ default: ''
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
},
|
|
},
|
|
|
watch: {
|
|
watch: {
|
|
|
|
|
|
|
|
|
|
|
|
|
- legendList()
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ legendList() {
|
|
|
this.LoadEchart();
|
|
this.LoadEchart();
|
|
|
},//重新加载图表
|
|
},//重新加载图表
|
|
|
- updateKey()
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ updateKey() {
|
|
|
this.LoadEchart();
|
|
this.LoadEchart();
|
|
|
},//重新加载图表
|
|
},//重新加载图表
|
|
|
|
|
|
|
@@ -181,27 +177,26 @@ export default {
|
|
|
window.removeEventListener('resize', this.HandleResize);
|
|
window.removeEventListener('resize', this.HandleResize);
|
|
|
this.echart.dispose(); // 销毁之前的实例
|
|
this.echart.dispose(); // 销毁之前的实例
|
|
|
},
|
|
},
|
|
|
- mounted()
|
|
|
|
|
- {
|
|
|
|
|
-
|
|
|
|
|
|
|
+ mounted() {
|
|
|
|
|
+
|
|
|
this.LoadEchart();//初始化图表
|
|
this.LoadEchart();//初始化图表
|
|
|
this.HandleResize()
|
|
this.HandleResize()
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
- markLine(index){
|
|
|
|
|
|
|
+ markLine(index) {
|
|
|
return this.markNumber.length ? {
|
|
return this.markNumber.length ? {
|
|
|
data: [{
|
|
data: [{
|
|
|
type: 'average',
|
|
type: 'average',
|
|
|
name: '平均值',
|
|
name: '平均值',
|
|
|
- yAxis: this.markNumber.length?this.markNumber[index]:null//Y 值为给定值的标记线
|
|
|
|
|
|
|
+ yAxis: this.markNumber.length ? this.markNumber[index] : null//Y 值为给定值的标记线
|
|
|
}],
|
|
}],
|
|
|
label: {
|
|
label: {
|
|
|
- position:"end",
|
|
|
|
|
- formatter: (params)=>{
|
|
|
|
|
- if(this.markNumber.length){
|
|
|
|
|
|
|
+ position: "end",
|
|
|
|
|
+ formatter: (params) => {
|
|
|
|
|
+ if (this.markNumber.length) {
|
|
|
return this.markNumber[index]
|
|
return this.markNumber[index]
|
|
|
- }else{
|
|
|
|
|
-
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+
|
|
|
return params.value//' {c}'
|
|
return params.value//' {c}'
|
|
|
}
|
|
}
|
|
|
}// 显示平均值数值
|
|
}// 显示平均值数值
|
|
@@ -213,39 +208,36 @@ export default {
|
|
|
} : {}
|
|
} : {}
|
|
|
},
|
|
},
|
|
|
//加载echarts
|
|
//加载echarts
|
|
|
- LoadEchart()
|
|
|
|
|
- {
|
|
|
|
|
-
|
|
|
|
|
|
|
+ LoadEchart() {
|
|
|
|
|
+
|
|
|
// 简化图例选中列表的初始化
|
|
// 简化图例选中列表的初始化
|
|
|
- this.legenSelectList = this.legendList.length > 0
|
|
|
|
|
- ? [...this.legendList]
|
|
|
|
|
|
|
+ this.legenSelectList = this.legendList.length > 0
|
|
|
|
|
+ ? [...this.legendList]
|
|
|
: []; //
|
|
: []; //
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
this.legenAllList = [...this.title];
|
|
this.legenAllList = [...this.title];
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (this.echart) {
|
|
if (this.echart) {
|
|
|
this.echart.dispose(); // 销毁之前的实例
|
|
this.echart.dispose(); // 销毁之前的实例
|
|
|
}
|
|
}
|
|
|
//devicePixelRatio: 2 2表示每个逻辑像素对应 2 个物理像素。这会进一步提高图表的清晰度,适用于更高分辨率的屏幕 解决高分辨率显示器文字模糊的问题
|
|
//devicePixelRatio: 2 2表示每个逻辑像素对应 2 个物理像素。这会进一步提高图表的清晰度,适用于更高分辨率的屏幕 解决高分辨率显示器文字模糊的问题
|
|
|
this.echart = echarts.init(this.$refs.line_chart, { devicePixelRatio: 2 });//获取echarts容器 如果组件同一个页面多处使用 这里不能用id获取实例
|
|
this.echart = echarts.init(this.$refs.line_chart, { devicePixelRatio: 2 });//获取echarts容器 如果组件同一个页面多处使用 这里不能用id获取实例
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 图例选中状态初始化
|
|
// 图例选中状态初始化
|
|
|
this.legendSelected = {};
|
|
this.legendSelected = {};
|
|
|
this.title.forEach((name, index) => {
|
|
this.title.forEach((name, index) => {
|
|
|
this.legendSelected[name] = this.legenSelectList.includes(name);
|
|
this.legendSelected[name] = this.legenSelectList.includes(name);
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 更新全选状态
|
|
// 更新全选状态
|
|
|
this.checkAll = this.legenSelectList.length === this.legenAllList.length;
|
|
this.checkAll = this.legenSelectList.length === this.legenAllList.length;
|
|
|
- this.isIndeterminate = this.legenSelectList.length > 0 &&
|
|
|
|
|
- this.legenSelectList.length < this.legenAllList.length;
|
|
|
|
|
-
|
|
|
|
|
|
|
+ this.isIndeterminate = this.legenSelectList.length > 0 &&
|
|
|
|
|
+ this.legenSelectList.length < this.legenAllList.length;
|
|
|
|
|
+
|
|
|
|
|
|
|
|
- console.log("打印this.isIndeterminate",this.isIndeterminate);
|
|
|
|
|
const maxValue = Math.max(...this.datay.flat());
|
|
const maxValue = Math.max(...this.datay.flat());
|
|
|
- const minValue=Math.min(...this.datay.flat());
|
|
|
|
|
|
|
+ const minValue = Math.min(...this.datay.flat());
|
|
|
const hideTick = minValue < 0 || this.yInverse;//是否隐藏刻度线 最小值小于0 或者反序y轴的时候隐藏刻度线
|
|
const hideTick = minValue < 0 || this.yInverse;//是否隐藏刻度线 最小值小于0 或者反序y轴的时候隐藏刻度线
|
|
|
- // console.log("打印最小值",minValue);
|
|
|
|
|
// 获取当前显示图例对应数据中的最大值
|
|
// 获取当前显示图例对应数据中的最大值
|
|
|
const visibleSeriesIndices = this.legenSelectList.map(name => this.title.indexOf(name));
|
|
const visibleSeriesIndices = this.legenSelectList.map(name => this.title.indexOf(name));
|
|
|
const visibleData = visibleSeriesIndices
|
|
const visibleData = visibleSeriesIndices
|
|
@@ -256,24 +248,23 @@ export default {
|
|
|
// const seriesMax = Math.max(...series);
|
|
// const seriesMax = Math.max(...series);
|
|
|
// return seriesMax > max ? seriesMax : max;
|
|
// return seriesMax > max ? seriesMax : max;
|
|
|
// }, -Infinity);
|
|
// }, -Infinity);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// const yAxisMax = Math.ceil((maxValue+2) / 5) * 5;//向上取整到5的倍数
|
|
// const yAxisMax = Math.ceil((maxValue+2) / 5) * 5;//向上取整到5的倍数
|
|
|
// console.log("打印最大值",maxValue);
|
|
// console.log("打印最大值",maxValue);
|
|
|
- const extraText=this.extraText?"占比":""
|
|
|
|
|
- const dataCount=this.datax.length;
|
|
|
|
|
|
|
+ const extraText = this.extraText ? "占比" : ""
|
|
|
|
|
+ const dataCount = this.datax.length;
|
|
|
// if(maxValue<10)
|
|
// if(maxValue<10)
|
|
|
// {
|
|
// {
|
|
|
// maxValue=9
|
|
// maxValue=9
|
|
|
// }
|
|
// }
|
|
|
//计算每个x轴的宽度
|
|
//计算每个x轴的宽度
|
|
|
let totalWidth = this.$refs.line_chart.clientWidth;
|
|
let totalWidth = this.$refs.line_chart.clientWidth;
|
|
|
- let singleSeriesWidth = (totalWidth - 100)/dataCount;
|
|
|
|
|
|
|
+ let singleSeriesWidth = (totalWidth - 100) / dataCount;
|
|
|
// console.log("打印x轴宽度",singleSeriesWidth);
|
|
// console.log("打印x轴宽度",singleSeriesWidth);
|
|
|
- let gridTop= this.showMarkPoint ? 45 : 20;
|
|
|
|
|
|
|
+ let gridTop = this.showMarkPoint ? 45 : 20;
|
|
|
// 无图例 默认20 有图例 70
|
|
// 无图例 默认20 有图例 70
|
|
|
- if(this.title.length>0)
|
|
|
|
|
- {
|
|
|
|
|
- gridTop=70;
|
|
|
|
|
|
|
+ if (this.title.length > 0) {
|
|
|
|
|
+ gridTop = 70;
|
|
|
}
|
|
}
|
|
|
let option = {
|
|
let option = {
|
|
|
|
|
|
|
@@ -300,55 +291,54 @@ export default {
|
|
|
enterable: true,
|
|
enterable: true,
|
|
|
formatter: (params) => {
|
|
formatter: (params) => {
|
|
|
// console.log(params);
|
|
// console.log(params);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// console.log("打印this.tooltipData",this.tooltipData);
|
|
// console.log("打印this.tooltipData",this.tooltipData);
|
|
|
-
|
|
|
|
|
- let tooltip = `<div class='tooltip_content'>`;
|
|
|
|
|
- let title = params[0].name;
|
|
|
|
|
- tooltip += `<div class='tooltip_title'>${title}</div>`;
|
|
|
|
|
- params.forEach((item, index) => {
|
|
|
|
|
- // console.log("打印item",item);
|
|
|
|
|
- let name = item.seriesName;
|
|
|
|
|
- let rate = item.value+this.unit;//占比
|
|
|
|
|
- if(this.tooltipData.length>0)
|
|
|
|
|
- {
|
|
|
|
|
- let tooltipItem=this.tooltipData?.[item.seriesIndex]?.[item.dataIndex] || '';
|
|
|
|
|
- tooltip += `<div class='tooltip_student'>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ let tooltip = `<div class='tooltip_content'>`;
|
|
|
|
|
+ let title = params[0].name;
|
|
|
|
|
+ tooltip += `<div class='tooltip_title'>${title}</div>`;
|
|
|
|
|
+ params.forEach((item, index) => {
|
|
|
|
|
+ // console.log("打印item",item);
|
|
|
|
|
+ let name = item.seriesName;
|
|
|
|
|
+ let rate = item.value + this.unit;//占比
|
|
|
|
|
+ if (this.tooltipData.length > 0) {
|
|
|
|
|
+ let tooltipItem = this.tooltipData?.[item.seriesIndex]?.[item.dataIndex] || '';
|
|
|
|
|
+ tooltip += `<div class='tooltip_student'>
|
|
|
<div class='tooltip_line_icon' style='background:${item.color}'></div>
|
|
<div class='tooltip_line_icon' style='background:${item.color}'></div>
|
|
|
<div class='tooltip_student_name'>
|
|
<div class='tooltip_student_name'>
|
|
|
${tooltipItem.name}:${tooltipItem.value}
|
|
${tooltipItem.name}:${tooltipItem.value}
|
|
|
</div></div>`;
|
|
</div></div>`;
|
|
|
- }
|
|
|
|
|
- else{
|
|
|
|
|
- tooltip += `<div class='tooltip_student'><div class='tooltip_line_icon' style='background:${item.color}'></div><div class='tooltip_student_name'>${name}${extraText}:${rate || '-'}</div></div>`;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- })
|
|
|
|
|
- tooltip += `</div>`;
|
|
|
|
|
- return tooltip;
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ tooltip += `<div class='tooltip_student'><div class='tooltip_line_icon' style='background:${item.color}'></div><div class='tooltip_student_name'>${name}${extraText}:${rate || '-'}</div></div>`;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ })
|
|
|
|
|
+ tooltip += `</div>`;
|
|
|
|
|
+ return tooltip;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
},
|
|
},
|
|
|
},
|
|
},
|
|
|
legend: {
|
|
legend: {
|
|
|
show: this.title.length ? true : false,//是否显示图例
|
|
show: this.title.length ? true : false,//是否显示图例
|
|
|
left: this.showCheckBox ? "110px" : "0px",//图例距左边距离 有显示全部的 默认110px
|
|
left: this.showCheckBox ? "110px" : "0px",//图例距左边距离 有显示全部的 默认110px
|
|
|
- width:this.legendWidth,
|
|
|
|
|
|
|
+ width: this.legendWidth,
|
|
|
itemGap: 20,//图例间距
|
|
itemGap: 20,//图例间距
|
|
|
itemHeight: 10,//图例的高度
|
|
itemHeight: 10,//图例的高度
|
|
|
itemWidth: 25,//图例的宽度
|
|
itemWidth: 25,//图例的宽度
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
data: this.title,
|
|
data: this.title,
|
|
|
textStyle: {
|
|
textStyle: {
|
|
|
- fontSize: 12,
|
|
|
|
|
|
|
+ fontSize: 12,
|
|
|
color: "#333",
|
|
color: "#333",
|
|
|
lineHeight: 30,
|
|
lineHeight: 30,
|
|
|
},
|
|
},
|
|
|
selectedMode: true,//允许图例切换显示
|
|
selectedMode: true,//允许图例切换显示
|
|
|
selected: this.legendSelected, // 绑定图例选中状态
|
|
selected: this.legendSelected, // 绑定图例选中状态
|
|
|
- type:'scroll',//启用图例滚动 翻页功能
|
|
|
|
|
|
|
+ type: 'scroll',//启用图例滚动 翻页功能
|
|
|
pageIconColor: '#999', // 翻页按钮默认颜色
|
|
pageIconColor: '#999', // 翻页按钮默认颜色
|
|
|
pageIconInactiveColor: '#ccc', // 翻页按钮禁用状态颜色
|
|
pageIconInactiveColor: '#ccc', // 翻页按钮禁用状态颜色
|
|
|
pageButtonItemGap: 5, // 分页按钮与图例的间距
|
|
pageButtonItemGap: 5, // 分页按钮与图例的间距
|
|
@@ -361,7 +351,7 @@ export default {
|
|
|
left: this.gridLeft,
|
|
left: this.gridLeft,
|
|
|
right: this.gridRight,
|
|
right: this.gridRight,
|
|
|
top: this.gridTop || gridTop,
|
|
top: this.gridTop || gridTop,
|
|
|
- bottom:0,
|
|
|
|
|
|
|
+ bottom: 0,
|
|
|
containLabel: true, //用于控制网格区域是否包含坐标轴的标签 true 可以确保所有标签都能完整显示,不会被裁剪。
|
|
containLabel: true, //用于控制网格区域是否包含坐标轴的标签 true 可以确保所有标签都能完整显示,不会被裁剪。
|
|
|
},
|
|
},
|
|
|
xAxis: {
|
|
xAxis: {
|
|
@@ -373,7 +363,7 @@ export default {
|
|
|
axisTick: {
|
|
axisTick: {
|
|
|
alignWithLabel: true,//不然刻度线跟随标签对齐
|
|
alignWithLabel: true,//不然刻度线跟随标签对齐
|
|
|
// show: !this.yInverse, // 显示刻度线
|
|
// show: !this.yInverse, // 显示刻度线
|
|
|
- show:!hideTick,
|
|
|
|
|
|
|
+ show: !hideTick,
|
|
|
inside: false, // 刻度线朝外(默认是朝内)
|
|
inside: false, // 刻度线朝外(默认是朝内)
|
|
|
length: 8, // 刻度线长度
|
|
length: 8, // 刻度线长度
|
|
|
// lineStyle: {
|
|
// lineStyle: {
|
|
@@ -382,42 +372,38 @@ export default {
|
|
|
// },
|
|
// },
|
|
|
// color:'#E4E7ED'
|
|
// color:'#E4E7ED'
|
|
|
},
|
|
},
|
|
|
- axisLine:{
|
|
|
|
|
- show:!this.yInverse,
|
|
|
|
|
|
|
+ axisLine: {
|
|
|
|
|
+ show: !this.yInverse,
|
|
|
},
|
|
},
|
|
|
axisLabel: {
|
|
axisLabel: {
|
|
|
interval: 0,//0 显示所有刻度
|
|
interval: 0,//0 显示所有刻度
|
|
|
rotate: singleSeriesWidth < 60 ? 45 : 0,
|
|
rotate: singleSeriesWidth < 60 ? 45 : 0,
|
|
|
- fontSize: this.fontSize?this.fontSize:14,
|
|
|
|
|
|
|
+ fontSize: this.fontSize ? this.fontSize : 14,
|
|
|
color: this.fontColor || "#666",
|
|
color: this.fontColor || "#666",
|
|
|
fontWeight: 400,
|
|
fontWeight: 400,
|
|
|
- formatter:function(value) {
|
|
|
|
|
-
|
|
|
|
|
|
|
+ formatter: function (value) {
|
|
|
|
|
+
|
|
|
//一个文字的长度大概约16.6 按16算
|
|
//一个文字的长度大概约16.6 按16算
|
|
|
-
|
|
|
|
|
- const valueWidth = value.length*14;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ const valueWidth = value.length * 14;
|
|
|
// console.log("lineChart打印字的大概宽度",valueWidth);
|
|
// console.log("lineChart打印字的大概宽度",valueWidth);
|
|
|
// console.log("打印singleSeriesWidth",singleSeriesWidth);
|
|
// console.log("打印singleSeriesWidth",singleSeriesWidth);
|
|
|
- if(valueWidth>singleSeriesWidth)
|
|
|
|
|
- {
|
|
|
|
|
-
|
|
|
|
|
- //单系列宽度小于50 倾斜显示
|
|
|
|
|
- if(singleSeriesWidth<80)
|
|
|
|
|
- {
|
|
|
|
|
- return value;
|
|
|
|
|
- }
|
|
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- let maxLength=Math.floor(singleSeriesWidth/14);
|
|
|
|
|
-
|
|
|
|
|
- return value.slice(0, maxLength) + '...';
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+ if (valueWidth > singleSeriesWidth) {
|
|
|
|
|
+
|
|
|
|
|
+ //单系列宽度小于50 倾斜显示
|
|
|
|
|
+ if (singleSeriesWidth < 80) {
|
|
|
|
|
+ return value;
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ let maxLength = Math.floor(singleSeriesWidth / 14);
|
|
|
|
|
+
|
|
|
|
|
+ return value.slice(0, maxLength) + '...';
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ else {
|
|
|
return value;
|
|
return value;
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
@@ -429,17 +415,17 @@ export default {
|
|
|
margin: 20,
|
|
margin: 20,
|
|
|
formatter: '{value}' + this.unit,
|
|
formatter: '{value}' + this.unit,
|
|
|
interval: 0, // 显示所有 label
|
|
interval: 0, // 显示所有 label
|
|
|
- fontSize: this.fontSize?this.fontSize:14,
|
|
|
|
|
|
|
+ fontSize: this.fontSize ? this.fontSize : 14,
|
|
|
color: this.fontColor || "#666",
|
|
color: this.fontColor || "#666",
|
|
|
fontWeight: 400
|
|
fontWeight: 400
|
|
|
},
|
|
},
|
|
|
splitNumber: 5,//固定显示5个刻度 非强制 不一定生效
|
|
splitNumber: 5,//固定显示5个刻度 非强制 不一定生效
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
axisTick: {
|
|
axisTick: {
|
|
|
interval: 0 // 显示所有刻度线
|
|
interval: 0 // 显示所有刻度线
|
|
|
},
|
|
},
|
|
|
// splitNumber:4,//固定将y轴划分为5段
|
|
// splitNumber:4,//固定将y轴划分为5段
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
splitLine: {
|
|
splitLine: {
|
|
|
show: true, //显示横向网格线
|
|
show: true, //显示横向网格线
|
|
|
lineStyle:
|
|
lineStyle:
|
|
@@ -455,10 +441,10 @@ export default {
|
|
|
color: ["#fafafa", "#ffffff"]
|
|
color: ["#fafafa", "#ffffff"]
|
|
|
},// 网格线设置隔行背景色
|
|
},// 网格线设置隔行背景色
|
|
|
},
|
|
},
|
|
|
- inverse:this.yInverse,
|
|
|
|
|
|
|
+ inverse: this.yInverse,
|
|
|
// min:this.showBackground?0: (val) => {
|
|
// min:this.showBackground?0: (val) => {
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// if(val.min > 0 || val.min < -10) {
|
|
// if(val.min > 0 || val.min < -10) {
|
|
|
// // return Math.floor(val.min / 10) * 10
|
|
// // return Math.floor(val.min / 10) * 10
|
|
|
// return Math.floor(val.min)
|
|
// return Math.floor(val.min)
|
|
@@ -494,16 +480,16 @@ export default {
|
|
|
// symbol: 'none',//设置无折线点
|
|
// symbol: 'none',//设置无折线点
|
|
|
symbol: "emptyCircle",//设置折线点为圆形
|
|
symbol: "emptyCircle",//设置折线点为圆形
|
|
|
showSymbol: true,//显示小圆点
|
|
showSymbol: true,//显示小圆点
|
|
|
- symbolSize:8,//折线点大小
|
|
|
|
|
- label: {
|
|
|
|
|
|
|
+ symbolSize: 8,//折线点大小
|
|
|
|
|
+ label: {
|
|
|
show: this.isShowLabel, //是否显示数值
|
|
show: this.isShowLabel, //是否显示数值
|
|
|
- color: this.labelColor || this.colors[index],
|
|
|
|
|
- formatter: "{c}" + this.unit
|
|
|
|
|
|
|
+ color: this.labelColor || this.colors[index],
|
|
|
|
|
+ formatter: "{c}" + this.unit
|
|
|
},
|
|
},
|
|
|
smooth: this.isSmooth,//设置折线平滑
|
|
smooth: this.isSmooth,//设置折线平滑
|
|
|
markLine: this.markLine(index), //平均线
|
|
markLine: this.markLine(index), //平均线
|
|
|
-
|
|
|
|
|
- markPoint: this.showMarkPoint?{
|
|
|
|
|
|
|
+
|
|
|
|
|
+ markPoint: this.showMarkPoint ? {
|
|
|
// symbolSize:25,//气泡大小
|
|
// symbolSize:25,//气泡大小
|
|
|
// label: {
|
|
// label: {
|
|
|
// show: true,
|
|
// show: true,
|
|
@@ -523,12 +509,12 @@ export default {
|
|
|
{
|
|
{
|
|
|
type: "min",
|
|
type: "min",
|
|
|
name: "最小值",
|
|
name: "最小值",
|
|
|
- label: { color: "#fff",},
|
|
|
|
|
|
|
+ label: { color: "#fff", },
|
|
|
// z:index+1,
|
|
// z:index+1,
|
|
|
// symbolOffset: [0, index * 8 - 10], // 每一个点依次向下偏移
|
|
// symbolOffset: [0, index * 8 - 10], // 每一个点依次向下偏移
|
|
|
},
|
|
},
|
|
|
],
|
|
],
|
|
|
- }:undefined,//是否显示气泡
|
|
|
|
|
|
|
+ } : undefined,//是否显示气泡
|
|
|
itemStyle: {
|
|
itemStyle: {
|
|
|
color: this.colors[index],
|
|
color: this.colors[index],
|
|
|
borderColor: this.colors[index],
|
|
borderColor: this.colors[index],
|
|
@@ -536,10 +522,10 @@ export default {
|
|
|
shadowColor: 'rgba(0, 0, 0, .1)',
|
|
shadowColor: 'rgba(0, 0, 0, .1)',
|
|
|
shadowBlur: 0,
|
|
shadowBlur: 0,
|
|
|
},
|
|
},
|
|
|
- lineStyle:{
|
|
|
|
|
- width:3,//设置折线的粗细
|
|
|
|
|
|
|
+ lineStyle: {
|
|
|
|
|
+ width: 3,//设置折线的粗细
|
|
|
},
|
|
},
|
|
|
- areaStyle:this.showBackground? {
|
|
|
|
|
|
|
+ areaStyle: this.showBackground ? {
|
|
|
color: {
|
|
color: {
|
|
|
type: 'linear',
|
|
type: 'linear',
|
|
|
x: 0,//渐变起点x
|
|
x: 0,//渐变起点x
|
|
@@ -555,12 +541,12 @@ export default {
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
},
|
|
},
|
|
|
- }:undefined,//折线背景阴影设置
|
|
|
|
|
|
|
+ } : undefined,//折线背景阴影设置
|
|
|
emphasis: {
|
|
emphasis: {
|
|
|
focus: 'series',
|
|
focus: 'series',
|
|
|
blurScope: 'coordinateSystem'
|
|
blurScope: 'coordinateSystem'
|
|
|
},
|
|
},
|
|
|
- data:data,
|
|
|
|
|
|
|
+ data: data,
|
|
|
})),
|
|
})),
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -571,38 +557,35 @@ export default {
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
// X轴文字过程显示省略号,鼠标hover上去时,弹出一个tooltip显示全称
|
|
// X轴文字过程显示省略号,鼠标hover上去时,弹出一个tooltip显示全称
|
|
|
- LabelMouseOver()
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ LabelMouseOver() {
|
|
|
// 注意这里,是以X轴显示内容过长为例,如果是y轴的话,需要把params.componentType == 'xAxis'改为yAxis
|
|
// 注意这里,是以X轴显示内容过长为例,如果是y轴的话,需要把params.componentType == 'xAxis'改为yAxis
|
|
|
// 判断是否创建过div框,如果创建过就不再创建了
|
|
// 判断是否创建过div框,如果创建过就不再创建了
|
|
|
// 该div用来盛放文本显示内容的,方便对其悬浮位置进行处理
|
|
// 该div用来盛放文本显示内容的,方便对其悬浮位置进行处理
|
|
|
let elementDiv = document.getElementById("tooltipContent");
|
|
let elementDiv = document.getElementById("tooltipContent");
|
|
|
// console.log("elementDiv",elementDiv)
|
|
// console.log("elementDiv",elementDiv)
|
|
|
-
|
|
|
|
|
- if (!elementDiv)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if (!elementDiv) {
|
|
|
let div = document.createElement("div");
|
|
let div = document.createElement("div");
|
|
|
div.setAttribute("id", "tooltipContent");
|
|
div.setAttribute("id", "tooltipContent");
|
|
|
div.style.display = "block";
|
|
div.style.display = "block";
|
|
|
document.querySelector("html").appendChild(div);//放入body下
|
|
document.querySelector("html").appendChild(div);//放入body下
|
|
|
}
|
|
}
|
|
|
- this.echart.on("mouseover", (params) =>
|
|
|
|
|
- {
|
|
|
|
|
-
|
|
|
|
|
|
|
+ this.echart.on("mouseover", (params) => {
|
|
|
|
|
+
|
|
|
if (params.componentType == "xAxis") {
|
|
if (params.componentType == "xAxis") {
|
|
|
- let elementDiv = document.querySelector("#tooltipContent");
|
|
|
|
|
- //设置悬浮文本的位置以及样式
|
|
|
|
|
- let elementStyle =
|
|
|
|
|
- "position: absolute;z-index: 99999;color: #fff;font-size: 12px;padding: 5px;display: inline;border-radius: 4px;background-color: #303133;box-shadow: rgba(0, 0, 0, 0.3) 2px 2px 8px";
|
|
|
|
|
- elementDiv.style.cssText = elementStyle;
|
|
|
|
|
- elementDiv.innerHTML = params.value;
|
|
|
|
|
- document.querySelector("html").onmousemove = function (event) {
|
|
|
|
|
let elementDiv = document.querySelector("#tooltipContent");
|
|
let elementDiv = document.querySelector("#tooltipContent");
|
|
|
- let xx = event.pageX - 10;
|
|
|
|
|
- let yy = event.pageY - 25;
|
|
|
|
|
- elementDiv.style.top = yy + "px";
|
|
|
|
|
- elementDiv.style.left = xx + "px";
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ //设置悬浮文本的位置以及样式
|
|
|
|
|
+ let elementStyle =
|
|
|
|
|
+ "position: absolute;z-index: 99999;color: #fff;font-size: 12px;padding: 5px;display: inline;border-radius: 4px;background-color: #303133;box-shadow: rgba(0, 0, 0, 0.3) 2px 2px 8px";
|
|
|
|
|
+ elementDiv.style.cssText = elementStyle;
|
|
|
|
|
+ elementDiv.innerHTML = params.value;
|
|
|
|
|
+ document.querySelector("html").onmousemove = function (event) {
|
|
|
|
|
+ let elementDiv = document.querySelector("#tooltipContent");
|
|
|
|
|
+ let xx = event.pageX - 10;
|
|
|
|
|
+ let yy = event.pageY - 25;
|
|
|
|
|
+ elementDiv.style.top = yy + "px";
|
|
|
|
|
+ elementDiv.style.left = xx + "px";
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
this.echart.on("mouseout", function (params) {
|
|
this.echart.on("mouseout", function (params) {
|
|
@@ -614,34 +597,28 @@ export default {
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
// 图例与显示全部按钮联动 事件
|
|
// 图例与显示全部按钮联动 事件
|
|
|
- HandleLegendSelectChangeds(params)
|
|
|
|
|
- {
|
|
|
|
|
-
|
|
|
|
|
|
|
+ HandleLegendSelectChangeds(params) {
|
|
|
|
|
+
|
|
|
const selected = params.selected;
|
|
const selected = params.selected;
|
|
|
- this.legenSelectList=[];
|
|
|
|
|
- for(var i=0;i<this.legenAllList.length;i++)
|
|
|
|
|
- {
|
|
|
|
|
- if(selected[this.legenAllList[i]]==true)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ this.legenSelectList = [];
|
|
|
|
|
+ for (var i = 0; i < this.legenAllList.length; i++) {
|
|
|
|
|
+ if (selected[this.legenAllList[i]] == true) {
|
|
|
this.legenSelectList.push(this.legenAllList[i]);
|
|
this.legenSelectList.push(this.legenAllList[i]);
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
this.LoadEchart();
|
|
this.LoadEchart();
|
|
|
},
|
|
},
|
|
|
//全选
|
|
//全选
|
|
|
- ChangeCheckAll(value)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ ChangeCheckAll(value) {
|
|
|
// console.log("打印value",this.checkAll);
|
|
// console.log("打印value",this.checkAll);
|
|
|
- if(value)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ if (value) {
|
|
|
//选中全选
|
|
//选中全选
|
|
|
- this.legenSelectList=this.legenAllList;
|
|
|
|
|
-
|
|
|
|
|
|
|
+ this.legenSelectList = this.legenAllList;
|
|
|
|
|
+
|
|
|
this.isIndeterminate = false;
|
|
this.isIndeterminate = false;
|
|
|
}
|
|
}
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
- this.legenSelectList=[];
|
|
|
|
|
|
|
+ else {
|
|
|
|
|
+ this.legenSelectList = [];
|
|
|
this.isIndeterminate = false;
|
|
this.isIndeterminate = false;
|
|
|
}
|
|
}
|
|
|
this.LoadEchart();
|
|
this.LoadEchart();
|
|
@@ -653,7 +630,7 @@ export default {
|
|
|
const legendData = this.echart.getOption().legend[0].data;
|
|
const legendData = this.echart.getOption().legend[0].data;
|
|
|
const selected = params.selected;
|
|
const selected = params.selected;
|
|
|
// 检查是否有任何图例项被隐藏
|
|
// 检查是否有任何图例项被隐藏
|
|
|
- this.legendSelected=selected;
|
|
|
|
|
|
|
+ this.legendSelected = selected;
|
|
|
const allSelected = legendData.every(
|
|
const allSelected = legendData.every(
|
|
|
(seriesName) => selected[seriesName]
|
|
(seriesName) => selected[seriesName]
|
|
|
);
|
|
);
|
|
@@ -670,8 +647,8 @@ export default {
|
|
|
}
|
|
}
|
|
|
this.isIndeterminate = someSelected;
|
|
this.isIndeterminate = someSelected;
|
|
|
let legendSelectedList = [];
|
|
let legendSelectedList = [];
|
|
|
- for(let key in this.legendSelected) {
|
|
|
|
|
- if(this.legendSelected[key]) {
|
|
|
|
|
|
|
+ for (let key in this.legendSelected) {
|
|
|
|
|
+ if (this.legendSelected[key]) {
|
|
|
legendSelectedList.push(key)
|
|
legendSelectedList.push(key)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -681,39 +658,32 @@ export default {
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
// 显示全部按钮
|
|
// 显示全部按钮
|
|
|
- ToggleChangeAll()
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ ToggleChangeAll() {
|
|
|
if (!this.showCheckBox) return false
|
|
if (!this.showCheckBox) return false
|
|
|
- console.log(this.checkAll)
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
const legendData = this.echart.getOption().legend[0].data;
|
|
const legendData = this.echart.getOption().legend[0].data;
|
|
|
legendData.forEach((seriesName) => {
|
|
legendData.forEach((seriesName) => {
|
|
|
- this.echart.dispatchAction({
|
|
|
|
|
- type: this.checkAll ? "legendSelect" : "legendUnSelect",
|
|
|
|
|
- name: seriesName,
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ this.echart.dispatchAction({
|
|
|
|
|
+ type: this.checkAll ? "legendSelect" : "legendUnSelect",
|
|
|
|
|
+ name: seriesName,
|
|
|
|
|
+ });
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
this.isIndeterminate = false;
|
|
this.isIndeterminate = false;
|
|
|
|
|
|
|
|
let legendSelectedList = [];
|
|
let legendSelectedList = [];
|
|
|
- if(this.checkAll)
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ if (this.checkAll) {
|
|
|
legendSelectedList = this.title;
|
|
legendSelectedList = this.title;
|
|
|
}
|
|
}
|
|
|
- else
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ else {
|
|
|
legendSelectedList = [];
|
|
legendSelectedList = [];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- this.$emit('SelectLegend',legendSelectedList)
|
|
|
|
|
|
|
+ this.$emit('SelectLegend', legendSelectedList)
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
//显示X轴标签悬浮框
|
|
//显示X轴标签悬浮框
|
|
|
- ShowXAxisTooltip()
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ ShowXAxisTooltip() {
|
|
|
const chart = this.echart; // 获取 echarts 实例
|
|
const chart = this.echart; // 获取 echarts 实例
|
|
|
const container = chart.getDom(); // 获取容器 DOM
|
|
const container = chart.getDom(); // 获取容器 DOM
|
|
|
|
|
|
|
@@ -738,17 +708,17 @@ export default {
|
|
|
|
|
|
|
|
chart.on('mouseover', (params) => {
|
|
chart.on('mouseover', (params) => {
|
|
|
if (params.componentType === 'xAxis') {
|
|
if (params.componentType === 'xAxis') {
|
|
|
- const value = params.value;
|
|
|
|
|
- if (value && value.length > 5) { // 设置长度判断是否需要显示 tooltip
|
|
|
|
|
- tooltipDiv.style.display = 'block';
|
|
|
|
|
- tooltipDiv.innerText = value;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ const value = params.value;
|
|
|
|
|
+ if (value && value.length > 5) { // 设置长度判断是否需要显示 tooltip
|
|
|
|
|
+ tooltipDiv.style.display = 'block';
|
|
|
|
|
+ tooltipDiv.innerText = value;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
chart.on('mouseout', (params) => {
|
|
chart.on('mouseout', (params) => {
|
|
|
if (params.componentType === 'xAxis') {
|
|
if (params.componentType === 'xAxis') {
|
|
|
- tooltipDiv.style.display = 'none';
|
|
|
|
|
|
|
+ tooltipDiv.style.display = 'none';
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
@@ -761,40 +731,40 @@ export default {
|
|
|
|
|
|
|
|
// X轴文字过程显示省略号,鼠标hover上去时,弹出一个tooltip显示全称
|
|
// X轴文字过程显示省略号,鼠标hover上去时,弹出一个tooltip显示全称
|
|
|
extension() {
|
|
extension() {
|
|
|
- // 注意这里,是以X轴显示内容过长为例,如果是y轴的话,需要把params.componentType == 'xAxis'改为yAxis
|
|
|
|
|
- // 判断是否创建过div框,如果创建过就不再创建了
|
|
|
|
|
- // 该div用来盛放文本显示内容的,方便对其悬浮位置进行处理
|
|
|
|
|
- let elementDiv = document.getElementById("extension");
|
|
|
|
|
- if (!elementDiv) {
|
|
|
|
|
- let div = document.createElement("div");
|
|
|
|
|
- div.setAttribute("id", "extension");
|
|
|
|
|
- div.style.display = "block";
|
|
|
|
|
- document.querySelector("html").appendChild(div);
|
|
|
|
|
- }
|
|
|
|
|
- this.myChart.on("mouseover", (params) => {
|
|
|
|
|
- if (params.componentType == "xAxis") {
|
|
|
|
|
- let elementDiv = document.querySelector("#extension");
|
|
|
|
|
- //设置悬浮文本的位置以及样式
|
|
|
|
|
- let elementStyle =
|
|
|
|
|
- "position: absolute;z-index: 99999;color: #fff;font-size: 12px;padding: 5px;display: inline;border-radius: 4px;background-color: #303133;box-shadow: rgba(0, 0, 0, 0.3) 2px 2px 8px";
|
|
|
|
|
- elementDiv.style.cssText = elementStyle;
|
|
|
|
|
- elementDiv.innerHTML = params.value;
|
|
|
|
|
- document.querySelector("html").onmousemove = function (event) {
|
|
|
|
|
- let elementDiv = document.querySelector("#extension");
|
|
|
|
|
- let xx = event.pageX - 10;
|
|
|
|
|
- let yy = event.pageY + 15;
|
|
|
|
|
- elementDiv.style.top = yy + "px";
|
|
|
|
|
- elementDiv.style.left = xx + "px";
|
|
|
|
|
- };
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- this.myChart.on("mouseout", function (params) {
|
|
|
|
|
- //注意这里,我是以X轴显示内容过长为例,如果是y轴的话,需要改为yAxis
|
|
|
|
|
- if (params.componentType == "xAxis") {
|
|
|
|
|
- let elementDiv = document.querySelector("#extension");
|
|
|
|
|
- elementDiv.style.cssText = "display:none";
|
|
|
|
|
|
|
+ // 注意这里,是以X轴显示内容过长为例,如果是y轴的话,需要把params.componentType == 'xAxis'改为yAxis
|
|
|
|
|
+ // 判断是否创建过div框,如果创建过就不再创建了
|
|
|
|
|
+ // 该div用来盛放文本显示内容的,方便对其悬浮位置进行处理
|
|
|
|
|
+ let elementDiv = document.getElementById("extension");
|
|
|
|
|
+ if (!elementDiv) {
|
|
|
|
|
+ let div = document.createElement("div");
|
|
|
|
|
+ div.setAttribute("id", "extension");
|
|
|
|
|
+ div.style.display = "block";
|
|
|
|
|
+ document.querySelector("html").appendChild(div);
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
|
|
+ this.myChart.on("mouseover", (params) => {
|
|
|
|
|
+ if (params.componentType == "xAxis") {
|
|
|
|
|
+ let elementDiv = document.querySelector("#extension");
|
|
|
|
|
+ //设置悬浮文本的位置以及样式
|
|
|
|
|
+ let elementStyle =
|
|
|
|
|
+ "position: absolute;z-index: 99999;color: #fff;font-size: 12px;padding: 5px;display: inline;border-radius: 4px;background-color: #303133;box-shadow: rgba(0, 0, 0, 0.3) 2px 2px 8px";
|
|
|
|
|
+ elementDiv.style.cssText = elementStyle;
|
|
|
|
|
+ elementDiv.innerHTML = params.value;
|
|
|
|
|
+ document.querySelector("html").onmousemove = function (event) {
|
|
|
|
|
+ let elementDiv = document.querySelector("#extension");
|
|
|
|
|
+ let xx = event.pageX - 10;
|
|
|
|
|
+ let yy = event.pageY + 15;
|
|
|
|
|
+ elementDiv.style.top = yy + "px";
|
|
|
|
|
+ elementDiv.style.left = xx + "px";
|
|
|
|
|
+ };
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ this.myChart.on("mouseout", function (params) {
|
|
|
|
|
+ //注意这里,我是以X轴显示内容过长为例,如果是y轴的话,需要改为yAxis
|
|
|
|
|
+ if (params.componentType == "xAxis") {
|
|
|
|
|
+ let elementDiv = document.querySelector("#extension");
|
|
|
|
|
+ elementDiv.style.cssText = "display:none";
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
// 监听窗口大小变化,重新计算表格高度 使用节流防止频繁改变窗口大小导致计算量过大而页面卡顿
|
|
// 监听窗口大小变化,重新计算表格高度 使用节流防止频繁改变窗口大小导致计算量过大而页面卡顿
|
|
@@ -808,8 +778,7 @@ export default {
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
-.is_show_all
|
|
|
|
|
-{
|
|
|
|
|
- top:10px;
|
|
|
|
|
|
|
+.is_show_all {
|
|
|
|
|
+ top: 10px;
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|