mkl_power_box/components/safe-curve-chart.js

222 lines
8.4 KiB
JavaScript
Raw Normal View History

2024-11-19 00:17:04 +08:00
Vue.component("safe-curve-chart", {
template: `
<div :style="{height: height+'px'}" ref="chart">
</div>
`,
props: {
height:{
type: Number,
},
momentdata:{
type: Object,
}
},
data() {
return {
}
},
mounted(){
this.init()
},
methods: {
init(){
this.momentCurveChart(this.momentdata)
},
momentCurveChart(data){
let newPromise = new Promise((resolve) => {
resolve()
})
//然后异步执行echarts的初始化函数
newPromise.then(() => {
var myChart = echarts.init(this.$refs.chart);
var color = '#20bc00'
/* if(data.state == 1){
color = '#ff9600'
}*/
var Xmax = Math.max.apply(null,data.dataX);
var Ymax = Math.max.apply(null,data.dataY);
option = {
tooltip: {
position: "top",
formatter: function (params) {
var fd = params.data[0];
var dz = params.data[1]
res = '<div style="padding: 5px 10px;">' +
'<div style="padding-bottom: 5px;">幅度:<span>'+fd+'</span> m</div>' +
'<div>吊重:<span>'+dz+'</span> t</div>' +
'</div>'
return res
},
},
grid: {
top: "20%",
right: "15%",
left: "4%",
bottom: "5%",
containLabel: true
},
xAxis: [
{
type: "value",
name:'幅度/m',
max:60,
nameTextStyle: {
color: "#c5d9fc",
fontSize:14,
},
splitLine: {
//去除网格线
show: false,
},
axisTick: { show: false },
axisLabel: {
//坐标轴刻度标签的相关设置
textStyle: {
color: "#c5d9fc",
margin: 20,
fontSize:16
},
},
},
{
type: "category",
boundaryGap: false,
position: "bottom",
axisLine: {
//坐标轴轴线相关设置。数学上的x轴
show: true,
lineStyle: {
color: "#194e92",
type: "dashed",
},
},
axisTick: { show: false },
axisLabel: {
show: false,
//坐标轴刻度标签的相关设置
textStyle: {
color: "#c5d9fc",
margin: 20,
fontSize:16
},
},
data: data.dataX,
},
],
yAxis: [
{
name:'吊重/t',
nameTextStyle: {
color: "#c5d9fc",
fontSize:14,
},
max:Ymax+1,
type: "value",
splitNumber: 7,
splitLine: {
show: false,
},
axisLine: {
//坐标轴轴线相关设置。数学上的x轴
show: true,
lineStyle: {
color: "#194e92",
type: "dashed",
},
},
axisLabel: {
margin: 20,
textStyle: {
color: "#c5d9fc",
fontSize:16
},
},
axisTick: { show: false },
},
],
series: [
{
name: "吊重",
type: "effectScatter",
rippleEffect:{ // 设置涟漪动画样式
color:'purple', // 涟漪颜色,默认为散点自身颜色
brushType:'fill', // 动画方式,全填充或只有线条,'stroke' 'fill'
period:2, //动画周期
scale:'3', //涟漪规模
},
xAxisIndex: 0,
yAxisIndex: 0,
symbolSize:15, //散点的固定大小
/*label: {
emphasis: {
show: true,
position: "right",
textStyle: {
color: color,
fontSize: 20,
},
},
},*/
itemStyle: {
color: color,
},
data: data.point,
},
{
type: "line",
symbol: "none",
smooth: true,
xAxisIndex: 1,
yAxisIndex: 0,
lineStyle: {
normal: {
width: 3,
color: "#5968db", // 线条颜色
},
},
areaStyle: {
//区域填充样式
normal: {
//线性渐变前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是true则该四个值是绝对像素位置。
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{ offset: 0, color: "rgb(25,43,115,0.9)" },
{ offset: 0.7, color: "rgba(25,43,115, 0)" },
],
false
),
shadowColor: "rgba(25,43,115, 1)", //阴影颜色
},
},
data: data.dataY,
},
],
};
myChart.setOption(option);
window.onresize = myChart.resize;
})
},
},
watch:{
momentdata: function (n,o) {
this.init();
}
},
})