1.解决以下几点问题

1.新数据和旧数据合并的问题(旧数据残留在画布上)
2.根据axios动态修改表现数据

2.初始需求:根据不同的按钮,切换画布的数据表现

3.表现

4.代码实现

import { use } from 'echarts/core'; // 挂载组件方法
import { CanvasRenderer } from 'echarts/renderers';
import { BarChart } from 'echarts/charts'; // 引入 柱状图类型
import {// 相关组件TitleComponent, TooltipComponent, LegendComponent,GridComponent,
} from 'echarts/components';
// InjectionKey 引入
// THEME_KEY 主题关键字
// UPDATE_OPTIONS_KEY 刷新画布关键字
import VChart,{  THEME_KEY, UPDATE_OPTIONS_KEY } from 'vue-echarts';// 挂载
use([CanvasRenderer,BarChart,// LineChart,TitleComponent,TooltipComponent,LegendComponent,GridComponent,
]);

export default ({mixins: [infoList], // 个人通用方法库components: {VChart, // },provide: {[THEME_KEY]: 'while', // 白色主题[UPDATE_OPTIONS_KEY]: {notMerge:true}, // 新旧数据不合并,需要使用object的形式传入},data(){return {echartOption: {title: {text: 'Traffic Sources',left: 'center',},tooltip: {trigger: 'axis',axisPointer: {type: 'shadow'}},grid: {left: '3%',right: '4%',bottom: '3%',containLabel: true},xAxis: {type: 'category',data: [],},yAxis: [{type: 'value',name: '数量',min: 0,interval: 1,axisLabel: {formatter: '{value}单'}},{type: 'value',name: '金额',min: 0,interval: 50,axisLabel: {formatter: '¥{value}'}},],series: [],}}},//新获取一个EchartOption对象getNewEchartOption() {let EchartOption = {series: [],yAxis: [],xAxis: {type: 'category',data: [],},grid: {left: '3%',right: '4%',bottom: '3%',containLabel: true},tooltip: {trigger: 'axis',axisPointer: {type: 'shadow'}},title: {text: 'Traffic Sources',left: 'center',},}return EchartOption},// 获取一个series数据makeOneseries(name, func, data, yindex) {let Oneseries = {name: name,type: 'bar',yAxisIndex: yindex,emphasis: {focus: 'series'},tooltip: {valueFormatter: func},data: data,}return Oneseries},// 提示数据的方法makeDanFunc(value) {return value + ' 单';},// 汇总数据makeSumData(titleText) {// console.log(this.fzSumReports)if (!this.fzSumReports) { return } // 没有数据即刻返回this.echartOption = this.getNewEchartOption() // 重新获取新的对象this.echartOption.yAxis.push(this.makeDanYaxis(), this.makeYuanYaxis()) // 重构y坐标,数组位代表第n个y坐标this.echartOption.title.text = titleText // 修改标题let orderCount = []let rightCount = []let notRightCount = []let orderMoney = []this.fzSumReports.forEach((item) => {orderCount.push(item.orderCount)rightCount.push(item.rightCount)notRightCount.push(item.notRightCount)orderMoney.push(item.orderMoney)})this.echartOption.xAxis.data = this.formatYMD2Str(this.dateList) // 修改x坐标的值this.echartOption.series = [] // 重新创建关键数据,其实直接修改值即可在画布呈现this.echartOption.series.push(this.makeOneseries('总订单数', this.makeDanFunc, orderCount, 0)) // series数据,对标第一y轴this.echartOption.series.push(this.makeOneseries('生效订单数', this.makeDanFunc, rightCount, 0))this.echartOption.series.push(this.makeOneseries('失效订单数', this.makeDanFunc, notRightCount, 0))this.echartOption.series.push(this.makeOneseries('金额', this.makeYuanFunc, orderMoney, 1)) // series数据,对标第二y轴},// 单一数据makeDetialData(titleText) {this.echartOption = this.getNewEchartOption()this.echartOption.title.text = titleTextthis.echartOption.xAxis.data = this.formatYMD2Str(this.dateList)this.echartOption.series = []let orderCount = []let rightCount = []let notRightCount = []let orderMoney = []this.freezerIdsswitch (titleText) {case '订单总收入':this.echartOption.yAxis.push(this.makeYuanYaxis())this.fzDetailReports.forEach(item1 => {this.filterDateList(item1.reportList, titleText, orderMoney)this.echartOption.series.push(this.makeOneseries(this.filterDict(item1.freezerId,'freezerName'), this.makeYuanFunc, orderMoney, 0))})breakcase '订单总数':this.echartOption.yAxis.push(this.makeDanYaxis())this.fzDetailReports.forEach(item1 => {this.filterDateList(item1.reportList, titleText, orderCount)this.echartOption.series.push(this.makeOneseries(this.filterDict(item1.freezerId,'freezerName'), this.makeDanFunc, orderCount, 0))})breakcase '生效订单总数':this.echartOption.yAxis.push(this.makeDanYaxis())this.fzDetailReports.forEach(item1 => {this.filterDateList(item1.reportList, titleText, rightCount)this.echartOption.series.push(this.makeOneseries(this.filterDict(item1.freezerId,'freezerName'), this.makeDanFunc, rightCount, 0))})breakcase '不生效订单总数':this.echartOption.yAxis.push(this.makeDanYaxis())this.fzDetailReports.forEach(item1 => {this.filterDateList(item1.reportList, titleText, notRightCount)this.echartOption.series.push(this.makeOneseries(this.filterDict(item1.freezerId,'freezerName'), this.makeDanFunc, notRightCount, 0))})breakdefault:console.log("not right")break}console.log(this.echartOption.series)},filterDateList(useList, ty, showList) {this.dateList.forEach(date => {let one = useList.filter(function (item) {if (item.dateKey == date) { return item }})let setp = 0if (one) {switch (ty) {case '订单总收入':setp = one[0].orderMoneybreakcase '订单总数':setp = one[0].orderCountbreakcase '生效订单总数':setp = one[0].rightCountbreakcase '不生效订单总数':setp = one[0].notRightCountbreakdefault:console.log(ty)setp = 0break}}showList.push(setp)})},},
})

5.几个注意点

5.1:[UPDATE_OPTIONS_KEY]: {notMerge:true}, // 解决数据合并问题

5.2:vue-echart的画布关联数据(如例:this.echartOption),直接修改里面的数据可以直接在画布中看到变化

*.特别注意

1.有很多前端代码的理解可能不太对,因为不是专业的前端开发,只是恰好要捣鼓一下前端的表现

2.写这个是因为vue-echart还比较少的文档,查个新旧数据不合并的资料都比较困难,就把解决了的方案说一下,仅供参考

vue-echart简单使用相关推荐

  1. 用Vue实现简单的echarts在线编辑器

    用Vue实现简单的echarts在线编辑器 简述 思路 效果图 页面分布 main.js的配置 其中ace编辑器的配置 按钮功能 实现思路 具体实现 图表初始化 图表组件传给父组件option配置对象 ...

  2. 用php做一个简单的汇率,vue实现简单实时汇率计算功能

    最近在自己摸索vue的使用,因为相对于只是去看教程和实例,感觉不如自己动手写一个demo入门来的快.刚好看到小程序中有一个简单但是很精致的应用极简汇率,而且它的表现形式和vue的表现形式很像,于是想着 ...

  3. react构建淘票票webapp,及react与vue的简单比较。

    前言 前段时间使用vue2.0构建了淘票票页面,并写了一篇相关文章vue2.0构建淘票票webapp,得到了很多童鞋的支持,因此这些天又使用react重构了下这个项目,目的无他,只为了学习和共同进步! ...

  4. 前端app调起摄像头 只显示在页面_猫也能看得懂的教程之一分钟使用Vue搭建简单Web页面...

    本教程适合人群: 已经了解过过html.js.css,想深入学习前端技术的小伙伴 有前端开发经验.但是没有使用过Vue的小伙伴 有过其他编程经验,对前端开发感兴趣的小伙伴 学习本教程之后你将会: 了解 ...

  5. 基于vue-cli、elementUI的Vue超简单入门小例子

    基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...

  6. Vue + echart 实现中国地图 和 省市地图(可切换省份

    vue + echart 实现中国地图 和 省市地图(可切换省份) - 伏沙金 - 博客园

  7. 01.vue的简单实例

    前段框架vue.js非常热门,每个vue应用都是通过创建vue函数创建新的vue实例开始,首先我们来创建一个简单的vue实例 多手动写写代码,你会发现真的很烦躁 <!DOCTYPE html&g ...

  8. Vue实现简单图表~满满的干货

    文章目录 前提:安装数据报表的插件 Vue实现简单图表的步骤 导入echarts 为ECharts准备一个具备大小(宽高)的Dom 基于准备好的dom,初始化echarts实例 指定图表的配置项和数据 ...

  9. 从vue项目简单了解什么是SSR

    从vue项目简单了解什么是SSR SSR 从0到1开始 初始化项目 server.js SSR vue是单页应用,创建的项目不利于SEO爬虫,因为SEO爬虫是爬网页的源代码,而vue创建的项目是通过j ...

  10. vue+echart图表数据切换

    vue+echart图表数据切换 前言 一.效果图 二.代码演示 1.准备阶段 2.HTML片段 3.js片段 4.css片段 总结 前言 最近有个需求,同一个echart图表点击切换不同数据,花了点 ...

最新文章

  1. vs 添加ico图 到资源
  2. HW2017笔试编程题
  3. 图解用NetCat连接远程端口
  4. 2.3线性表的链式存储和运算—双向链表
  5. Python之异常追踪模块:traceback
  6. Hexo-fluid主题设置统计博客阅读量
  7. 学习linux/unix编程方法的建议-转
  8. vSphere与Workstation虚拟机交互的几种方法(四)
  9. 《Java语言程序设计与数据结构》编程练习答案(第十七章)
  10. NB-IOT智能云家具项目系列实站
  11. 银行叫号系统简易版,java集合练手
  12. 用PPT就可以做印章?是的,超简单超逼真,教你一分钟搞定
  13. Cookie的path和diamon
  14. 农场花园种花偷花前后端完整项目
  15. 4.1 制定项目章程
  16. 会计分录、科目、账户
  17. 微信小程序unhandled promise rejection报错
  18. 爱奇艺SOAR探索与实践
  19. java编写扑克牌程序
  20. 【练习】第一个微信小程序

热门文章

  1. 编译 scintilla 并且缩小 SciLexer的 体积的做法
  2. html的个人简历边框,怎样制作简历模板边框
  3. 软考·网络工程师认证(第八章)
  4. 110kV变电站电气一次系统设计
  5. 怎么彻底粉碎文件夹?文件还能恢复吗?操作过程在这里
  6. 主板检测卡c5_用诊断卡 搞定主板故障
  7. 测试软硬件系统信息的工具 -- EVEREST Ultimate Edition
  8. Unity 实现部分模型流光效果
  9. 对联广告代码效果大全
  10. 离线ROS API文档(Zeal或Dash)