大数据可视化移植

947 阅读4分钟

今年的大数据很火,于是在网上下载了大数据可视化的模板,来练练手,效果如下图

大数据可视化模板.png
动态图(模糊)

数据可视化.gif

模板

模板是用html写的,文件如图所示:

打开index.html查看代码,发现有用到jQuery,echarts,canvas和简单的代码,部分代码如下

<head>
  <script type="text/javascript" src="js/jquery.js"></script>
  <link rel="stylesheet" href="css/comon0.css">
</head>
<script>
  $(window).load(function () {
    $(".loading").fadeOut()
  })

  /****/
  $(document).ready(function () {
    var whei = $(window).width()
    $("html").css({
      fontSize: whei / 20
    })
    $(window).resize(function () {
      var whei = $(window).width()
      $("html").css({
        fontSize: whei / 20
      })
    });
  });
</script>
<script type="text/javascript" src="js/echarts.min.js"></script>
<script language="JavaScript" src="js/js.js"></script>

<body>
    <div class="canvas" style="opacity: .2">
        <iframe frameborder="0" src="js/index.html" style="width: 100%; height: 100%"></iframe>
    </div>
    <script>
      var t = null;
      t = setTimeout(time, 1000); //開始运行
      function time() {
        clearTimeout(t); //清除定时器
        dt = new Date();
        var y = dt.getFullYear();
        var mt = dt.getMonth() + 1;
        var day = dt.getDate();
        var h = dt.getHours(); //获取时
        var m = dt.getMinutes(); //获取分
        var s = dt.getSeconds(); //获取秒
        document.getElementById("showTime").innerHTML = y + "年" + mt + "月" + day + "-" + h + "时" + m + "分" + s + "秒";
        t = setTimeout(time, 1000); //设定定时器,循环运行     
      }
    </script>
    <script type="text/javascript" src="js/china.js"></script>
    <script type="text/javascript" src="js/area_echarts.js"></script>
</body>

css文件用的是rem进行屏幕适配
但现在想要将其移植到vue中使用,使其变成组件化便于维护的大数据模板。


模板已放入网盘中,有需要自行下载

去下载 提取码: aepn

移植到vue中

1、将所有文件移到vue中

在vue中将模板中的所有文件复制进来,新建页面Charts.vue,将模板中index.html的代码拷贝到Charts.vue中,并将linkscript引入的外部文件转换为import引入的形式。代码如下:

<template>
  <div>
    <div class="head">
      <h1>大数据可视化展板通用模板</h1>
      <div class="weather">
        <img src="/picture/weather.png" />
        <span>多云转小雨</span>
        <span id="showTime"></span>
      </div>
    </div>
    <div class="mainbox">
      <ul class="clearfix">
        <li>
          <div class="boxall" style="height: 3.2rem">
            <div class="alltitle">模块标题样式</div>
            <div class="allnav" id="echart1"></div>
            <div class="boxfoot"></div>
          </div>
          <div class="boxall" style="height: 3.2rem">
            <div class="alltitle">模块标题样式</div>
            <div class="allnav" id="echart2"></div>
            <div class="boxfoot"></div>
          </div>
          <div class="boxall" style="height: 3.2rem">
            <div style="height:100%; width: 100%;">
              <div class="sy" id="fb1"></div>
              <div class="sy" id="fb2"></div>
              <div class="sy" id="fb3"></div>
            </div>
            <div class="boxfoot"></div>
          </div>
        </li>
        <li>
          <div class="bar">
            <div class="barbox">
              <ul class="clearfix">
                <li class="pulll_left counter">12581189</li>
                <li class="pulll_left counter">3912410</li>
              </ul>
            </div>
            <div class="barbox2">
              <ul class="clearfix">
                <li class="pulll_left">2018年总收入情况</li>
                <li class="pulll_left">2018年总支出情况</li>
              </ul>
            </div>
          </div>
          <div class="map">
            <div class="map1">
              <img src="/picture/lbx.png" />
            </div>
            <div class="map2">
              <img src="/picture/jt.png" />
            </div>
            <div class="map3">
              <img src="/picture/map.png" />
            </div>
            <div class="map4" id="map_1"></div>
          </div>
        </li>
        <li>
          <div class="boxall" style="height:3.4rem">
            <div class="alltitle">模块标题样式</div>
            <div class="allnav" id="echart4"></div>
            <div class="boxfoot"></div>
          </div>
          <div class="boxall" style="height: 3.2rem">
            <div class="alltitle">模块标题样式</div>
            <div class="allnav" id="echart5"></div>
            <div class="boxfoot"></div>
          </div>
          <div class="boxall" style="height: 3rem">
            <div class="alltitle">模块标题样式</div>
            <div class="allnav" id="echart6"></div>
            <div class="boxfoot"></div>
          </div>
        </li>
      </ul>
    </div>
  </div>
</template>
<script>
import "@/js/china.js";
import chinaMap from "@/js/area_echarts.js";
import {
  echarts_1,
  echarts_2,
  echarts_4,
  echarts_31,
  echarts_32,
  echarts_33,
  echarts_5,
  echarts_6
} from "@/js/js.js";

export default {
  mounted() {
    window.onload = function() {
      /**屏幕适配**/
      document.querySelector("html").style.fontSize =
        window.innerWidth / 20 + "px";

      window.onresize = function() {
        document.querySelector("html").style.fontSize =
          window.innerWidth / 20 + "px";
      };
      
      /*右上角的时间*/
      var t = null;
      t = setTimeout(time, 1000); //開始运行
      function time() {
        clearTimeout(t); //清除定时器
        let dt = new Date();
        var y = dt.getFullYear();
        var mt = dt.getMonth() + 1;
        var day = dt.getDate();
        var h = dt.getHours(); //获取时
        var m = dt.getMinutes(); //获取分
        var s = dt.getSeconds(); //获取秒
        document.getElementById("showTime").innerHTML =
          y + "年" + mt + "月" + day + "-" + h + "时" + m + "分" + s + "秒";
        t = setTimeout(time, 1000); //设定定时器,循环运行
      }

      echarts_1();
      echarts_2();
      echarts_4();
      echarts_31();
      echarts_32();
      echarts_33();
      echarts_5();
      echarts_6();
      chinaMap();
    };
  }
};
</script>
<style scoped>
@import "/css/comon0.css";
</style>

由于没有用jQuery,所以将jQuery代码都转换为js代码,模板中js.jsarea_echarts.js文件都是jQuery自调用的方法,所以去掉jQuery后要export导出,import导入,然后在vue中调用方法

2、拆分成组件

根据每个图表建立不同的组件,依次为chart_1.vue,chart_2.vue,chart_3.vue,chart_4.vue,chart_5.vue,chart_6.vue,chart_7.vue, 然后将js.js中的每个图表放入分别放入进去,同时将Charts.vue中的template内的代码放入相应的组件中去,最后将所有组件引入Charts.vue中。
当然也可以将mounted中的代码进行封装,看上去清爽一点。

3、小结

移植代码还算简单,只是在移植的过程中会出现意想不到的问题,耐心点就可以解决;还有就是echarts图表引起的错误,有时在浏览器中的错误提示令人费解,这也是算是小小的坑了,浪费了些时间。