|
|
@@ -0,0 +1,184 @@ |
|
|
|
import * as echarts from 'echarts'; |
|
|
|
import elementResizeDetectorMaker from 'element-resize-detector'; |
|
|
|
export default { |
|
|
|
props: { |
|
|
|
id: { |
|
|
|
type: String, |
|
|
|
default: 'line' |
|
|
|
}, |
|
|
|
data: { |
|
|
|
type: Array, |
|
|
|
default: function () { |
|
|
|
return [ |
|
|
|
{ |
|
|
|
name: '1月', |
|
|
|
value: '10' |
|
|
|
}, |
|
|
|
{ |
|
|
|
name: '2月', |
|
|
|
value: '19' |
|
|
|
} |
|
|
|
]; |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
data () { |
|
|
|
return { |
|
|
|
chart: null |
|
|
|
}; |
|
|
|
}, |
|
|
|
mounted () { |
|
|
|
this.initChart(); |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
// 设置监听器 页面尺寸变化重新绘制图表 |
|
|
|
initResizeCallBack () { |
|
|
|
const erd = elementResizeDetectorMaker(); |
|
|
|
erd.listenTo(document.getElementById(this.id), () => { |
|
|
|
this.$nextTick(() => { |
|
|
|
this.chart.resize(); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
initChart () { |
|
|
|
this.chart = echarts.init(document.getElementById(this.id)); |
|
|
|
this.chartSetOption(); |
|
|
|
}, |
|
|
|
chartSetOption () { |
|
|
|
let xAxisData = []; |
|
|
|
let data = []; |
|
|
|
this.data.forEach(item => { |
|
|
|
xAxisData.push(item.name) |
|
|
|
data.push(item.value) |
|
|
|
}); |
|
|
|
const option = { |
|
|
|
grid: { |
|
|
|
left: "5%", |
|
|
|
right: "10%", |
|
|
|
top: "15%", |
|
|
|
bottom: "10%", |
|
|
|
containLabel: true, |
|
|
|
}, |
|
|
|
tooltip: { |
|
|
|
show: true, |
|
|
|
trigger: "item", |
|
|
|
}, |
|
|
|
legend: { |
|
|
|
show: false |
|
|
|
}, |
|
|
|
color: { |
|
|
|
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ |
|
|
|
{ |
|
|
|
offset: 1, |
|
|
|
color: "rgba(134, 91, 252, 1)", |
|
|
|
}, |
|
|
|
{ |
|
|
|
offset: 0.5, |
|
|
|
color: "rgba(26, 106, 226, 0.5)", |
|
|
|
}, |
|
|
|
{ |
|
|
|
offset: 0, |
|
|
|
color: "rgba(26, 106, 226, 0)", |
|
|
|
}, |
|
|
|
]), |
|
|
|
}, |
|
|
|
xAxis: [ |
|
|
|
{ |
|
|
|
type: "category", |
|
|
|
boundaryGap: false, |
|
|
|
axisLabel: { |
|
|
|
color: 'rgba(185, 211, 235, 1)', |
|
|
|
}, |
|
|
|
axisLine: { |
|
|
|
show: false |
|
|
|
}, |
|
|
|
axisTick: { |
|
|
|
show: false |
|
|
|
}, |
|
|
|
splitLine: { |
|
|
|
show: false |
|
|
|
}, |
|
|
|
data: xAxisData |
|
|
|
}, |
|
|
|
], |
|
|
|
yAxis: [ |
|
|
|
{ |
|
|
|
type: "value", |
|
|
|
name: "单位:万元", |
|
|
|
nameTextStyle: { |
|
|
|
color: 'rgba(185, 211, 235, 1)' |
|
|
|
}, |
|
|
|
axisLabel: { |
|
|
|
formatter: "{value}", |
|
|
|
textStyle: { |
|
|
|
color: "rgba(185, 211, 235, 1)", |
|
|
|
}, |
|
|
|
}, |
|
|
|
axisLine: { |
|
|
|
lineStyle: { |
|
|
|
color: "#27b4c2", |
|
|
|
}, |
|
|
|
}, |
|
|
|
axisTick: { |
|
|
|
show: false, |
|
|
|
}, |
|
|
|
splitLine: { |
|
|
|
show: true, |
|
|
|
lineStyle: { |
|
|
|
color: "#11366e", |
|
|
|
}, |
|
|
|
}, |
|
|
|
} |
|
|
|
], |
|
|
|
series: [ |
|
|
|
{ |
|
|
|
|
|
|
|
name: "", |
|
|
|
type: "line", |
|
|
|
smooth: true, |
|
|
|
// symbol: "circle", |
|
|
|
symbolSize: 12, |
|
|
|
itemStyle: { |
|
|
|
normal: { |
|
|
|
color: "#0092f6", |
|
|
|
lineStyle: { |
|
|
|
color: "#0092f6", |
|
|
|
width: 1, |
|
|
|
}, |
|
|
|
areaStyle: { |
|
|
|
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ |
|
|
|
{ |
|
|
|
offset: 1, |
|
|
|
color: "rgba(134, 91, 252, 1)", |
|
|
|
}, |
|
|
|
{ |
|
|
|
offset: 0.5, |
|
|
|
color: "rgba(26, 106, 226, 0.5)", |
|
|
|
}, |
|
|
|
{ |
|
|
|
offset: 0, |
|
|
|
color: "rgba(26, 106, 226, 0)", |
|
|
|
}, |
|
|
|
]), |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
markPoint: { |
|
|
|
itemStyle: { |
|
|
|
normal: { |
|
|
|
color: "red", |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
data: data |
|
|
|
} |
|
|
|
], |
|
|
|
};; |
|
|
|
this.chart.setOption(option); |
|
|
|
this.initResizeCallBack(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
}; |