首页 > 其他分享 >echarts点击柱状图带参数跳转到指定页面(路由)

echarts点击柱状图带参数跳转到指定页面(路由)

时间:2023-01-10 12:24:54浏览次数:35  
标签:name myChart1 点击 柱状图 params 跳转 echarts

echarts点击柱状图带参数跳转到指定页面(路由)

项目开发者常用echarts来实现数据可视化功能。上次遇到了一个问题,就是通过后台返回的数据渲染echarts数据完成后需要点击柱形图图标的时候跳转制定的新的页面展示(当然新的页面内容,后台通过柱形图的参数来给我们返回过来的)

1,引入echarts

2,准备渲染echarts的区域div 

3,通过后台数据渲染数据

init2(arr) {
        let labelData = []
        let valueData = []
        let num = 0
        arr.forEach(item => {
          labelData.push(item.label)
          valueData.push(item.value)
          num += parseInt(item.value)
        })
        labelData.push('')
        valueData.push(0)
        // 基于准备好的dom,初始化echarts实例
        this.myChart1 = echarts.init(document.getElementById('echart1'));
        let option1 = {
          title: {
            text: '数据不合格数量: ' + num,
            left: 'center'
          },
          xAxis: {
            type: '',
            data: labelData,
            axisLabel: {
              interval: 0,
              rotate: -15
            },
            name: "(公司)"
          },
          yAxis: {
            type: 'value',
            name: "(数量)",
          },
          series: [
            {
              name: '销量',
              data: valueData,
              type: 'bar',
              itemStyle: {
                normal: {
                  barBorderRadius: [4, 4, 0, 0],
                  color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
                    { offset: 0, color: '#1FB9CE' },
                    { offset: 1, color: '#0846A3' },
                  ])
                }
              },
              label: {
                show: true,
                position: 'top'
              },
            }
          ]
        }
        // 绘制图表
        this.myChart1.setOption(option1)
// ------echarts点击事件获取对应的index和公司名称-------------
        // echarts点击事件获取对应的index和公司名称---跳转对应的数据核查页面ok
        this.myChart1.getZr().on('click', params => { // 柱形图点击事件
              var pointInPixel = [params.offsetX, params.offsetY]
              // 判断给定的点是否在指定的坐标系
              if (this.myChart1.containPixel('grid', pointInPixel)) {
                const xIndex = this.myChart1.convertFromPixel({ seriesIndex: 0 }, [params.offsetX, params.offsetY])[0]
                const option = this.myChart1.getOption()
                const xAxis = option.xAxis
                const name = xAxis[0].data[xIndex]
                console.log(xIndex)
                console.log(name)
                // console.log('--------打印index和公司名称-----------------')
                if (name !== undefined || name === '') { // 非空校验,防止没数据点击空白图表跳转
                  // 路由跳转传参
                  this.$router.push({
                    path: 'dataVerification',
                    query: {
                      echartsIndex: xIndex, //index值
                      echartsName: name,   //公司名称
                    }
                  })
                  console.log(this.$route.query)
                }
              }
        })
// -------------------
        window.addEventListener("resize", () => {
          this.myChart1.resize();
        });
      },

 4,实现点击柱形图图标带参数跳转制定页面(核心代码)

    // echarts点击事件获取对应的index和公司名称---跳转对应的数据核查页面ok
        this.myChart1.getZr().on('click', params => { // 柱形图点击事件
              var pointInPixel = [params.offsetX, params.offsetY]
              // 判断给定的点是否在指定的坐标系
              if (this.myChart1.containPixel('grid', pointInPixel)) {
                const xIndex = this.myChart1.convertFromPixel({ seriesIndex: 0 }, [params.offsetX, params.offsetY])[0]
                const option = this.myChart1.getOption()
                const xAxis = option.xAxis
                const name = xAxis[0].data[xIndex]
                console.log(xIndex)
                console.log(name)
                // console.log('--------打印index和公司名称-----------------')
                if (name !== undefined || name === '') { // 非空校验,防止没数据点击空白图表跳转
                  // 路由跳转传参
                  this.$router.push({
                    path: 'dataVerification',
                    query: {
                      echartsIndex: xIndex, //index值
                      echartsName: name,   //公司名称
                    }
                  })
                  console.log(this.$route.query)
                }
              }
        })

5,跳转完成-再新的页面接受参数

 

标签:name,myChart1,点击,柱状图,params,跳转,echarts
From: https://www.cnblogs.com/mahmud/p/17039765.html

相关文章

  • 从webview跳转到小程序报错,'wx' is not defined
    项目有一个需求是从h5中跳转回小程序里,在小程序内报了这个错误'wx'isnotdefined尝试了下面两种方法都没有用npminstallweixin-js-sdk,使用这个包没有效果<scr......
  • Vue 跳转页面传参
    初创建于:2022-07-0811:03要在vue中跳转页面时传递参数,首先需要引入useRoute与useRouter:import{useRouter,useRoute}from'vue-router';constroute=use......
  • Echarts做仪表图-含HTML直接保存加个JS文件就可以用
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>echarts</title><!--引入echarts.js--><scriptsrc="echarts.js"></script></head><bodyst......
  • 数据可视化|啥是pyecharts?
    数据可视化,是关于数据视觉表现形式的科学技术研究。通过某种概要形式抽提出数据的关键信息,包括相应信息单位的各种属性和变量。基本的数据可视化流程如下所示,分为工具的选取......
  • echarts tooltip pie {b}展示不全
    echartstooltippie{b}展示不全tooltip:{show:true,trigger:'item',formatter:'{b}:{c}{d}%'},原因:后端......
  • Python语言——实现登陆界面的跳转
    Python语言——实现登陆界面的跳转importtkinter'''实现登陆界面的跳转'''defenter():root=tkinter.Tk()root.title('信息界面')root['width']=......
  • vue相同路由跳转,数据不刷新问题
    问题的出现    vue-router的切换不同于传统的页面的切换。路由之间的切换,其实就是组件之间的切换,不是真正的页面切换。这也会导致一个问题,就是引用相同组件的时候,会......
  • .htaccess里如何配置www域名与不带www域名301重定向跳转重写URL?
    Apache下web环境,通过修改.htaccess文件即可实现重写URL,很多时候我们需要将带www的域名统一301重定向到不带www的域名,或者将不带www的域名统一301重定向到带www的域名。具体......
  • vue 使用echarts
    0.在vue内使用echarts可使用v-echart这个魔改版本,完全是可用的,但不在本次叙述范畴1.首先安装 npminstallecharts--save或者yarnaddecharts2.先上结论 ......
  • 8.2echarts展示数据
    ​ Echarts快速使用  <!DOCTYPEhtml><htmlstyle="height:100%"><head><metacharset="utf-8"><scripttype="text/javascript"src="js/......