Vue+DataV+echarts大屏可视化开发注意点

前提是装好所需依赖开发包,默认都已经装好。
1.页面最外层使用DataV全屏容器组件

<dv-full-screen-container>content</dv-full-screen-container>

2.一般最外层div设置宽度(width:100vw),高度(height:100vh)。一定要设置。不然全屏组件显示页面不全。
3.建议一:(不用做多个echart切换等动态效果使用这个)echart一般封装成组件,下面是基本示例:

<template>
  <div style="width: 100%; height: calc(100% - 40px);" :id="charid">
    <dv-loading></dv-loading>
  </div>
</template>

<script>
export default {
  data() {
    return {
      charid: Math.random(1),
      chart: null //关键一
    };
  },
  props: ["chardata"],
  watch: {
    chardata() {
      this.initcarinfo();
      this.init();
    }
  },
  methods: {
    initcarinfo() {
      let that = this;

      // 基于准备好的dom,初始化echarts实例
      this.chart = this.echarts.init(document.getElementById(this.charid));
      // 指定图表的配置项和数据
      var colorList = [
        "#1bb1f5",
        "#ffbb19",
        "#ed4014", //红
        "#af89ff",
        "#67c23a", //绿
        "#ff9599",
        "#00a1ff",
        "#fad254",
        "#ffa149",
        "#aac3e0",
        "#ffbb19",
        "#ed4041",
        "#af89ef",
        "#67c2a3"
      ];
      let rounddata = [];
      for (let item of that.chardata) {
        rounddata.push({ name: item.name, value: item.num });
      }
      let option = {
        tooltip: {
          trigger: "item"
        },
        legend: {
          show: false,
          bottom: -4,
          orient: "horizontal",
          align: "auto",
          itemGap: 10,
          itemWidth: 10,
          itemHeight: 10,
          formatter: function(name) {
            for (let item of rounddata) {
              if (item.name == name) {
                return `${name} (${item.value})`;
              }
            }
            // console.log(name);
          },
          textStyle: {
            color: function(params) {
              return colorList[params.dataIndex];
            },
            fontSize: 12
          }
        },
        series: [
          {
            type: "pie",
            center: ["50%", "50%"],
            radius: ["40%", "62%"],
            clockwise: true,
            avoidLabelOverlap: true,
            hoverOffset: 5,
            itemStyle: {
              normal: {
                color: function(params) {
                  return colorList[params.dataIndex];
                }
              }
            },
            label: {
              show: true,
              position: "outside",
              formatter: function(params) {
                // console.log(params);
                return `${params.name}(${params.value})`;
              }
            },
            labelLine: {
              normal: {
                length: 5,
                length2: 10,
                lineStyle: {
                  width: 1
                }
              }
            },
            data: rounddata
          }
        ]
      };

      // 使用刚指定的配置项和数据显示图表。
      this.chart.setOption(option);
    },
    init() {
      window.addEventListener("resize", () => {
          this.chart.resize();
        });
    }
  }
};
</script>

4.建议二:(echart做动态切换,动效时建议使用)主要结合vue的diff算法,元素绑定的key值变化时,vue认为两个元素不是同一个元素,会重新渲染元素,可以给外层元素添加动态key值,屏幕大小改变时改变绑定元素的key值,key值改变发生diff算法,元素在界面上重新渲染,echart也会重新绘制,实现自适应。缺点:因为重新渲染元素,性能也会有所影响。还有就是改变key值时需要重新绑定echart数据,不然无法显示

 <div class="mainbar" :key="timer">
 ...
//echart代码
 </div>

 window.onresize = () => {
      this.timer = new Date().getTime();
      this.goinitmethods();//重新请求echart数据接口
    };
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3可视化大屏ECharts是一个基于Vue3、Typescript、DataV、ECharts5框架的大数据可视化项目。它使用`.vue`和`.tsx`文件实现界面,并采用新版动态屏幕适配方案。该项目提供了全局渲染组件封装,支持数据动态刷新。它包含了柱状图、饼状图、折线图等多种图表类型的基本设置和效果实现,以及折线图的堆叠效果和散图等其他功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue3/ECharts5数据可视化大屏展示项目案例源码.zip](https://download.csdn.net/download/weixin_55305220/85436637)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [可视化大屏 Vue3 版本基于 Vue3、Typescript、DataV、ECharts5 框架的大数据可视化大屏展示)开发](https://download.csdn.net/download/qq_41701956/87748646)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Echarts+Vue3.0 大数据可视化项目,大数据可视化大屏系统源码](https://download.csdn.net/download/u012392578/87506541)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值