需求:根据不同的入参调同一接口,循环展示一组饼形图或折线图;

主要问题:在于给定的数据格式不符合图表的配置项格式,需要拆分组装数据;首先默认展示几个图表,当选中一个类别,需要展示其中一个的时候,页面中的Dom没有清除,用了clear()无效,于是乎,就在页面中做两个div,一个用于展示选中的某一项,一个用于展示所有图表。

 <div v-if="showPie1">
<div id="chart-row" v-for="(item,index) in dataList" :key="index" style="display: flex;justify-content: center;margin-bottom: 40px;width: 80%;margin:0 auto;">
<div class="left-chart" :id="'left-chart-'+item.id" style="width:500px;height: 400px;margin-bottom:20px;padding-top:10px;border: 1px solid #f0f0f0;">
<img src="../../assets/timg.jpg" alt="暂无图片" style="width:100px;height:100px;"></div> <div class="right-chart" :id="'right-chart-'+item.id" style="width:500px;height: 400px;margin-bottom:20px;padding-top:10px;border: 1px solid #f0f0f0;">
<img src="../../assets/timg.jpg" alt="暂无图片" style="width:100px;height:100px;"></div>
</div>
</div>
<div id="pie" v-if="showPie2">
<div id="chart-row" v-for="(item,index) in itemList" :key="index" style="display: flex;justify-content: center;margin-bottom: 40px;width: 80%;margin:0 auto;">
<div class="left-chart" :id="'left-chart-'+item.id" style="width:500px;height: 400px;margin-bottom:20px;padding-top:10px;border: 1px solid #f0f0f0;"><img src="../../assets/timg.jpg" alt="暂无图片" style="width:100px;height:100px;"></div> <div class="right-chart" :id="'right-chart-'+item.id" style="width:500px;height: 400px;margin-bottom:20px;padding-top:10px;border: 1px solid #f0f0f0;"><img src="../../assets/timg.jpg" alt="暂无图片" style="width:100px;height:100px;"></div>
</div>
</div>

id为chart-row的是选中某一项的dom,id为pie的是默认展示所有图表的dom.

dom的id取名跟绑定图表初始化的dom名一致,且命名是有规律的。

我这里是同时展示两种类型的图表,成功率和明细,使用axios.all()方法将数据同时请求回来,在请求接口时,使用ES7中的async异步执行,保证数据在.all方法中能够全部获取完。

 //获取折线图成功失败率接口定义
async getLeftLineData(list){
var data = {}
if(this.filters.invoice){
data = { ticketType: this.filters.invoice}
}else{
data = { ticketType: list.id }
}
return this.$api.report.ocrMonthCount(data)
},

获取到的数据在axios.all方法里做处理,其中optionList是存放循环入参信息的;

optionList: [
//选择
{ value: '', label: "请选择"},
{ value: "001", label: "选择一" },
{ value: "002", label: "选择二" },
{ value: "003", label: "选择三" },
],
 for(let i = 0; i < optionList.length; i++){
axios.all([this.getLeftLineData(optionList[i]), this.getRightLineData(optionList[i])])
.then(res=>{
let leftData = res[0].data
let rightData = res[1].data
var xAxis = [];
var failTotal = []
var successTotal = []
var successFailurArry = [1, 2]
for(var y = 0; y<successFailurArry.length; y++){
// 基于准备好的dom,初始化echarts实例,左侧占比
var myChart = echarts.init(document.getElementById('left-line-'+optionList[i].id));
for (var j = 0; j < leftData.fail.length; j++) {
xAxis.push(leftData.fail[j].monthName);
failTotal.push(leftData.fail[j].monthTotal);
}
for (var k = 0; k < leftData.success.length; k++) {
successTotal.push(leftData.success[k].monthTotal);
}
// 绘制图表
var seriesOption = {
//配置信息
}
myChart.setOption(seriesOption, true);
}

有时,myChart.clear()无效,可以手动的将上一次定义的值清空。

Echart饼形图和折线图的循环展示及选择展示的更多相关文章

  1. 使用echart 做出数据折线图

    代码如下: // 基于准备好的dom,初始化echarts图表var myChart = echarts.init(document.getElementById("main")) ...

  2. react-echarts之折线图的显示

    react中想要实现折线图和饼图的功能,需要引入react-echarts包,然后再实现折线图的功能.我这里引用的版本是:0.1.1.其他的写法参echarts官网即可.下面详细讲解的是我在react ...

  3. HighCharts实现多数据折线图分列显示

    HighCharts实现多数据折线图分列显示 BY ZYZ HighCharts是一个很好用的web端绘图插件,用起来很方便,它的官方支持很好.并且有中文API(不全然).画出来的图像也挺美丽的. 近 ...

  4. C# WinForm开发系列之c# 通过.net自带的chart控件绘制饼图,柱形图和折线图的基础使用和扩展

    一.需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 1.设置chart1的属性Legends中默认的Legend1的Enable为false: ...

  5. ECharts折线图多个折线每次只显示一条

    echart 两条折线图如何默认只显示一条,另一条隐藏呢 只需要在legend后加上, selectedMode: 'single', selectedMode [ default: true ] 图 ...

  6. swift app中展示折线图, 饼状图, 柱状图等数据图表

    github 下载Charts-master SDK,该SDK有多种可自定义的图表样式 lineChart 正弦余弦线图 LineChart (cubic lines) LineChart (grad ...

  7. 微信小程序echart 折线图legend不显示的问题

    最近使用小程序echart折线图,遇到表头一直不显示问题,查询之后解决方案:

  8. echart折线图,柱状图,饼图设置颜色

    转载: 之前在做报表的时候用过echart 用完也就完了,而这次在用的时候已经忘了,所以这里简单记录一下,好记性不如烂笔头!!! 1.折线图修改颜色: xAxis: { type: 'category ...

  9. FusionCharts数据展示成饼状图、柱状图和折线图

    FusionCharts数据展示成饼状图.柱状图和折线图 本文以展示柱状图为例进行介绍,当然这仅仅是一种方法而已:还有很多方法可以用于展示图表,例如echarts,自定义图表标签.使用jfreecha ...

随机推荐

  1. python常用包

    今日所得 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 subprocess模块 collections模块 namedtuple:具名元组 #定义方式一: ...

  2. OpenCV 读取、修改、保存图像

    代码如下: #include <cv.h> #include <highgui.h> using namespace cv; int main( int argc, char* ...

  3. 【转】【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】

    [关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明][指数循环节] 原文地址:http://hi.baidu.com/aekdycoin/item/e493 ...

  4. [Python] Advanced features

    Slicing 12345 L[:10:2] # [0, 2, 4, 6, 8]L[::5] # 所有数,每5个取一个# [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, ...

  5. Vimmer一套全语言支持的完美Vim配置——附Monaco字体

    本配置轻量,强大,支持流行语言,包括现代前段框架react,jsx,vue,pug(jade)高亮和格式化,支持各种语言的自动补全.同时新增了MonacoNerd字体,可以显示文件类型logo,Mon ...

  6. VMware 虚拟机重启后获取不到ip的问题

    问题: VMware 虚拟机重启后获取不到ip,如图: 解决: 打开windows服务管理器,将VMware相关服务启动. 验证: 重启网络服务后,成功获取ip.

  7. UMD: 通用模块规范

    既然CommonJs和AMD风格一样流行,似乎缺少一个统一的规范.所以人们产生了这样的需求,希望有支持两种风格的“通用”模式,于是通用模块规范(UMD)诞生了.

  8. TCPCopy 线上流量复制工具

    TCPCopy是一种重放TCP流的工具,使用真实环境来测试互联网服务器上的应用程序. 一.描述: 虽然真实的实时流量对于Internet服务器应用程序的测试很重要,但是由于生产环境中的情况很负责,测试 ...

  9. golang实现chunk方式的查询

    有一个需求,是把表里面所有的数据都查询出来,并且生成json文件.因为一张表里面的数据很多,所以不可能一次性全部查询出来,所以需要用到chunk.之前用的gorm,但是发现gorm没有chunk方式的 ...

  10. Tian Tian 菾菾 导游 陪同

    自画像系列是梵高的代表作之一,他是一位自学成才的画家,下笔完全自由,主观提取了当时印象派画家学到的技巧,在这幅画中,我们可以看到,颜色在画中的堆叠,色彩与笔在画中表现的形态,都表现出,梵高在他作画中内 ...