vue+element+echarts饼状图+可折叠列表

html:

<div id="echartsDiv" style="width: 48%; height: 430px; float: left;">
    </div>
    <div id="tableDiv" style="width: 52%;float: left;">
        <el-table :data="tableData"  border row-key="id" style="margin: 0 auto" :row-class-name="getRowClassName">
            <el-table-column fixed type="index" label="序号"   align="center"  show-overflow-tooltip></el-table-column>
            <el-table-column  fixed prop="sourceName" label="投诉方式" align="center"  show-overflow-tooltip></el-table-column>
            <el-table-column prop="totalCount" label="数量"  align="center" show-overflow-tooltip></el-table-column>
            <el-table-column prop="completedPercent" label="百分比"  align="center" show-overflow-tooltip></el-table-column>

        </el-table>
    </div>

js:

var vue = new Vue({
    el: ‘#app‘,
    data: {
        // 指定图表的配置项和数据
        option : {
            // 图标标题
            title : {
                text: ‘投诉方式统计‘,
                x:‘center‘
            },
            // 提示框组件
            tooltip : {
                trigger: ‘item‘,
                // 字符串模板,饼图、仪表盘、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)
                formatter: "{a}</br>{b} : {c} ({d}%)"
            },
            // 图例组件
            legend : {
                orient: ‘horizontal‘,
                bottom: ‘bottom‘,
                data: []
            },
            series : {
                    name: ‘投诉方式‘,
                    type: ‘pie‘,
                    radius : ‘50%‘,
                    center: [‘50%‘, ‘50%‘],
                    label : {
                        normal : {
                            show : true,
                            formatter : "{b} : {c} ({d}%)"
                        }
                    },
                    data:[],
                    itemStyle: {
                        emphasis: {
                            shadowBlur: 10,
                            shadowOffsetX: 0,
                            shadowColor: ‘rgba(0, 0, 0, 0.5)‘
                        }
                    }
                }

        },// 接口返回的结果集合
        backResultData:[],
        // 表格数据
        tableData:[],
        // 行展开后的子表格数据
        subTableData:[]
    },
successCallBack : function(result){
                    if(result.success){
                        // 接口返回的结果集合
                        backResultData = result.data;
                        // 设置饼图数据,普通for循环遍历,饼图去除总计列
                        for(var i=0; i<result.data.length-1; i++){
                            var resultData = result.data[i];
                            if(!resultData.parentName){
                                self.option.legend.data.push(resultData.sourceName);
                                self.option.series.data.push({
                                    value : parseInt(resultData.totalCount),
                                    name : resultData.sourceName
                                });
                            }
                        }
                        // 设置表格数据
                        for(var i=0; i<result.data.length; i++){
                            // 取出返回结果集合中的对象
                            changeObj = result.data[i];
                            if(!changeObj.parentName){
                                // 设置子表格数据
                                for(var j=0; j<backResultData.length-1; j++){
                                    if(backResultData[j].parentName==changeObj.sourceName){
                                        self.subTableData.push(backResultData[j]);
                                    }
                                }
                                // 给changeObj对象添加children属性,并赋值一个由接口返回列表中对象组成的数组
                                changeObj.children=self.subTableData;
                                self.tableData.push(changeObj);
                            }
                            // 存放子表格数据的数组每次父表元素之后都置空
                            self.subTableData=[];
                            // 百变对象置空
                            changeObj={};
                        }
                        console.log(self.tableData);
                        // 基于准备好的DOM,初始化echarts实例
                        var myChart = echarts.init(document.getElementById(‘echartsDiv‘));
                        // 使用刚指定的配置项和数据显示图表
                        myChart.setOption(self.option);
                    }
                }

效果:

原文地址:https://www.cnblogs.com/wmqiang/p/11022860.html

时间: 2024-10-28 21:06:52

vue+element+echarts饼状图+可折叠列表的相关文章

echarts 饼状图调节 label和labelLine的位置

原理 使用一个默认颜色为透明的,并且只显示labelLine的饼状图 然后通过调节这个透明的饼状图 以达到修改labelLine的位置 echarts地址 https://gallery.echartsjs.com/editor.html?c=x6VnXPfxlx echarts源码: option = { backgroundColor: "#03141c", title: { text: "84%", subtext: '完成部门占比', x: 'center'

Echarts饼状图

<head> <meta charset="utf-8"> <title>ECharts</title> <script src="js/esl.js"></script></head><body> <!-- 为ECharts准备一个具备大小(宽高)的Dom --> <div id="main" style="height:

Echarts生成饼状图、条形图以及线形图 JS封装

1.在我们开发程序中,经常会用到生成一些报表,比方说饼状图,条形图,折线图等.不多说了,直接上封装好的代码,如下Echarts.js所示 以下代码是封装在Echarts.js文件中 /** * Created by Administrator on 2015/8/7. */ var charec; // 路径配置 require.config({ paths: { echarts: 'http://echarts.baidu.com/build/dist' } }); // 按需加载所需图表 r

ECharts学习(2)--饼状图之南丁格尔图

1.上一篇中讲了如何绘制一个简单的柱状图,这次要画的是饼图,饼图主要是通过扇形的弧度表现不同类目的数据在总和中的占比,它的数据格式比柱状图更简单,只有一维的数值,不需要给类目.因为不在直角坐标系上,所以也不需要xAxis,yAxis. 2.itemStyle都会有normal和emphasis两个选项,normal选项是正常展示下的样式,emphasis是鼠标 hover 时候的高亮样式.也可以把阴影的效果设置在hover的时候. 3.背景色是全局的,所以直接在 option 下设置backgr

C#+JQuery+.Ashx+百度Echarts 实现全国省市地图和饼状图动态数据图形报表的统计

在目前的一个项目中,需要用到报表表现数据,这些数据有多个维度,需要同时表现出来,同时可能会有大量数据呈现的需求,经过几轮挑选,最终选择了百度的echarts作为报表基础类库.echarts功能强大,界面优美.由于客户是淘宝卖家,因此想要实现每个月全国各个省份各自购力如何,大家可以统计其他的,如果GDP 人口 等等. 百度echarts简介请参考 http://echarts.coding.io/doc/example.html 效果图如下:全部是动态数据 JS代码: <!-- Charts La

ECharts 报表事件联动系列四:柱状图,折线图,饼状图实现联动

代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ECharts</title> <!-- <script src="http://echarts.baidu.com/dist/echarts.min.j

图表echarts折线图,柱状图,饼状图

总体就是有折线图相关图标的设置,x,y轴的设置,x,y轴或者数据加上单位的设置.饼状图如何默认显示几个数据中的某个数据 折线图:legend(小标题)中间默认是圆圈 改变成直线 在legend设置的时候就改变icon的形状 legend: { data:[ { name:'访问次数', icon:'line' }, { name:'访', icon:'line' }, { name:'访问', icon:'line' }, ], textStyle:{ color:'#fff' }, right

AngularJS in Action读书笔记5(实战篇)——在directive中引入D3饼状图显示

前言: "宁肯像种子一样等待  也不愿像疲惫的陀螺  旋转得那样勉强" 这是前几天在查资料无意间看到的一位园友的签名,看完后又读了两遍,觉得很有味道.后来一寻根究底才知这是出资大诗人汪国真之口,出处<她>.且抛开上下文,单从这短短几句,正恰如其分的折射出有一群人,他们穿着不那么fashion,言辞不那么犀利,但是内心某一块地方像是躁动的火山,拥有无尽的动力和激情,矢志不渝种子般投身到技术研究和心得分享当中. 或许每一次的生长都是那么悄无声息,但是无数次的坚持只是为了破土那日

【插件】ECharts---超级强大的图表插件使用(柱状图和饼状图及部分设置)

序言 最近一直在赶项目,遇到过很多问题,也找到了一些解决的方法,现在准备静下心来整理一下这段时间的成果,完善代码,把遇到的问题和解决方法记下来,备忘. 前几天做统计页面的时候,需求为对在线/离线人员统计,对不同类别统计,需要显示统计信息并能单击某一类别触发事件. 用到的插件当然是强大的echarts了.这里为官方文档案例,最全面的还是官方文档啦. html <!-- 统计表 --> <div class="chart" id="leaderchart&quo