Echarts,多个点击切换/阴影/多折线图

页面代码:

<div>
	<div
		// 动态class判断div的是否有数据(有数据点击状态样式,有数据不点击状态样式,无数据样式)
		:class="(lifeSign.bloodPressure.length > 0) ? (lifeSign.bloodPressureIsActive ? 'active' : 'normal') : 'none'"
        class="pd-left-10"
        // 如果后台返回的数组有值就触发lineCharts()方法 判断显示哪个div下的折线图显示还有初始化折线图  下面都是如此
        @click="(lifeSign.bloodPressure.length > 0) ? lineCharts('bloodPressure') : ''">
        <el-col class="el-col-style">{{ 想要显示的值 }}</el-col>
        <el-col
          v-if="lifeSign.bloodPressure[lifeSign.bloodPressure.length-1] || lifeSign.bloodPressureBak[lifeSign.bloodPressureBak.length-1]"
          class="el-col-style">{{ 想要显示的值 }}</el-col>
    </div>
    <div
    	:class="(lifeSign.bloodSugar.length > 0) ? (lifeSign.bloodSugarIsActive ? 'active' : 'normal') : 'none'"
        class="pd-left-10"
	    @click="(lifeSign.bloodSugar.length > 0) ? lineCharts('bloodSugar') : ''">
	    <el-col class="el-col-style">{{ 想要显示的值 }}</el-col>
    </div>
    <div
    	:class="(lifeSign.bodyMassIndex.length > 0 ) ? (lifeSign.bodyMassIndexIsActive ? 'active' : 'normal') : 'none'"
        class="pd-left-10"
	    @click="(lifeSign.bodyMassIndex.length > 0 ) ? lineCharts('bodyMassIndex') : ''">
	    <el-col class="el-col-style">{{ 想要显示的值 }}</el-col>
    </div>
</div>
<div
      v-show="lifeSign.boxShow && (lifeSign.bodyMassIndex.length != 0 || lifeSign.bloodPressure.length != 0 || lifeSign.bloodSugar.length != 0)"
      id="myChartA"
      class="myChart-style">
    </div>

lineCharts()方法:

lineCharts (val) {
            let data = [] // 第一条折线的数据
            let dataBak = [] // 第二条折线的数据
            let name = [] // 第一条折线的名字
            let nameBak = [] // 第二条折线的名字
            let xdata = [] // x轴刻度
            if (val === 'bloodPressure') {
                data = 给第一条折线的数据赋值
                dataBak = 给第二条折线的数据赋值
                name = 给第一条折线的名字赋值
                nameBak = 给第二条折线的名字赋值
                // BMI折线图显示状态
                this.lifeSign.bodyMassIndexIsActive = false;
                // 血压折线图显示状态
                this.lifeSign.bloodPressureIsActive = true;
                // 血糖折线图显示状态
                this.lifeSign.bloodSugarIsActive = false;
            } else if (val === 'bloodSugar') {
            	// 如上
            } else {
            	// 如上
            }
            if (xdata.length === 0) {
                /* 动态传值xAxis data */
                for (var i = 0; i < data.length; i++) {
                    xdata.push('0' + (i + 1))
                }
            }
            let myChart = echarts.init(document.getElementById('myChartA'))
            let option = {
                tooltip: {
                    trigger: 'axis',
                    backgroundColor: '#eeeeee',
                    textStyle: {
                        fontSize: 12,
                        color: '#797979'
                    }
                },
                grid: {
                    x: 20,
                    y: 10,
                    x2: 15,
                    y2: 20,
                    width: 'auto',
                    height: '70%'
                },
                xAxis: {
                    type: 'category',
                    data: xdata,
                    axisTick: {
                        alignWithLabel: true
                    },
                    axisLabel: { // 刻度线字体颜色设置
                        textStyle: {
                            color: '#797979'
                        }
                    },
                    axisLine: { // 刻度线颜色设置
                        lineStyle: {
                            color: '#CCCCCC'
                        }
                    }
                },
                yAxis: {
                    show: false,
                    type: 'value'
                },
                series: [{
                    name: name,
                    type: 'line', // 折线
                    data: data,
                    smooth: false, // true两点连接为平滑曲线 false为直线
                    symbol: 'circle',
                    symbolSize: 8, // 设定折线点的大小
                    animation: false, // false: hover圆点不缩放 .true:hover圆点默认缩放
                    lineStyle: { //  折线条的样式
                        normal: {
                            color: '#41A4FF',
                            width: 1,
                            type: 'solid'
                        }
                    },
                    itemStyle: { // 折线拐点的样式
                        normal: {
                            color: '#1890FF'
                        },
                        emphasis: { // 鼠标经过时:
                            borderColor: 'white',
                            borderWidth: 2 // 拐点边框大小
                        }
                    },
                    areaStyle: {
                        normal: {
                            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                                { offset: 0.5, color: '#41A4FF' },
                                { offset: 1, color: '#eeeeee' }
                            ])
                        }
                    } // 阴影渲染颜色渐变样式
                }, {
                    name: nameBak,
                    type: 'line', // 为true是不支持虚线的,实线就用true
                    data: dataBak,
                    smooth: false, // true两点连接为平滑曲线 false为直线
                    symbol: 'circle', // 设定折线点的大小
                    symbolSize: 8, // false: hover圆点不缩放 .true:hover圆点默认缩放
                    animation: false,
                    lineStyle: { //  折线条的样式
                        normal: {
                            color: '#41A4FF',
                            width: 1,
                            type: 'solid'
                        }
                    },
                    itemStyle: { // 折线拐点的样式
                        normal: {
                            color: '#1890FF'
                        },
                        emphasis: { // 鼠标经过时:
                            borderColor: 'white',
                            borderWidth: 2 // 拐点边框大小
                        }
                    },
                    areaStyle: { // 阴影渲染颜色渐变样式
                        normal: {
                            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                                { offset: 0.5, color: '#41A4FF' },
                                { offset: 1, color: '#eeeeee' }
                            ])
                        }
                    }
                }]
            }
            // echarts对象绑定配置选项
            myChart.setOption(option)
            // 宽度自适应
            window.onresize = function () {
                myChart.resize();
            }
        }

class样式:

.active {
          background: #D9F0FF;
          width: 73px;
          height: 36px;
          border-radius: 4px;
          margin-left: 8px;
        }
        .normal {
          width: 73px;
          height: 36px;
          border-radius: 4px;
          margin-left: 8px;
          background: #F8FAFB;
        }
        .none {
       	  // 鼠标悬浮样式 红色圈中一个斜线 表示不可点
          cursor: not-allowed;
          color: #888888;
          width: 73px;
          height: 36px;
          border-radius: 4px;
          margin-left: 8px;
          background: #F8FAFB;
        }

效果图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后:

作为一个新入行的小白,第一次写博客,需要学习的还有很多。这个虽然比较简单,但是还是要记下来,积少成多,砥砺前行!望各位大佬不吝赐教!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值