vue 项目下使用dataV和echarts 开发可视化大屏

本文展示了如何在Vue项目中利用dataV和Echarts开发数据可视化大屏,通过安装必要的依赖,如data-view、echarts和screenfull,并在首页及组件(Center.vue、Left.vue、Right.vue)中进行集成应用,最终实现静态图到动态展示的转变。
摘要由CSDN通过智能技术生成

先贴效果图,静态图开不出动态效果。
在这里插入图片描述
首先得安装依赖
“@jiaminghi/data-view”: “^2.10.0”,
“echarts”: “^5.2.1”,
“screenfull”: “^5.2.0”,

首页代码

<template>
    <div :class="figureBG == 1 ? 'figure-page' : 'figure-page'" ref="figure" class="img_bg">
      <dv-decoration-9 class="loading" v-if="isShowLoading">
        <dv-digital-flop class="schedule" :config="configLoad" />
      </dv-decoration-9>
      <dv-full-screen-container>
        <div>&nbsp;</div>
        <template v-if="!isShowLoading">
          <!-- 第一行 -->
          <!-- <div class="jc-center">
            <dv-decoration-10 style="width: 33.3%; height: 5px" />
            <div class="jc-center">
              <dv-decoration-8
                :color="color"
                style="width: 200px; height: 50px"
              />
              <div class="title">
                <span class="title-text">车险人伤第三方机构多维数字化看板</span>
                <dv-decoration-6
                  class="title-bototm"
                  :reverse="true"
                  :color="['#50e3c2', '#67a1e5']"
                  style="width: 130px; height: 18px"
                />
              </div>
              <dv-decoration-8
                :reverse="true"
                :color="color"
                style="width: 200px; height: 50px"
              />
            </div>
            <dv-decoration-10
              style="width: 33.3%; height: 5px; transform: rotateY(180deg)"
            />
          </div> -->
     <dv-border-box-11 title="大数据展示" class="box_11">
          <!-- 第二行 -->
          <div class="jc-between">
            <div class="d-flex" style="width: 40%">
              <div
                class="react-right ml-4"
                style="width: 625px; text-align: left; background-color: #233556"
                @click="toBack"
              >
                <span class="react-before"></span>
                <span class="text">返回上级页面</span>
              </div>
              <div
                class="react-right bg-color-blue ml-3"
                @click="handleScreenfull"
              >
                <span class="text">全屏展示</span>
              </div>
            </div>
            <dv-decoration-5 style="width:300px;height:40px;" />"
            <div style="width: 40%" class="d-flex">
              <div
                class="react-left mr-3"
                style="background-color: #233556"
                @click="toggleBg"
              >
                <span class="text fw-b"></span>
              </div>
              <div
                class="react-left mr-4"
                style="width: 625px; background-color: #233556; text-align: right"
              >
                <span class="react-after"></span>
                <div class="date-row text react-left_qj">
                  <span class="title_qj">数据统计区间:&nbsp;</span>
                  <el-date-picker
                    class="daterange_qj"
                    v-model="date"
                    type="daterange"
                    align="right"
                    unlink-panels
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期"
                    :picker-options="pickerOptions"
                    @change="init"
                  ></el-date-picker>
                </div>
              </div>
            </div>
          </div>
  
          <div class="table-flex-box">
            <Left ref="left" />
            <Center ref="center" />
            <Right ref="right" />
          </div>
      </dv-border-box-11>    
        </template>
      </dv-full-screen-container>
    </div>
  </template>
  
  <script>
  import Vue from 'vue'
  import dataV from '@jiaminghi/data-view'
  import * as echarts from 'echarts/core'
  import { BarChart } from 'echarts/charts'
  import screenfull from 'screenfull'
  
//   import Left from '@/components/board/Left'
  import Left from './board/Left'
  import Center from './board/Center'
  import Right from './board/Right'
  
  Vue.use(dataV)
  // 注册必须的组件
  echarts.use([BarChart])
  export default {
    data() {
      let end = new Date()
      let start = new Date(`2022/01/01`)
  
      return {
        color: ['#568aea', '#020814'], // 第一行的背景色
        screenfullBut: false, //全屏
        configLoad: {
          // 加载数值
          number: [parseInt(parseInt(Math.random() * 20) + 30)],
          content: '{nt}%',
          style: {
            fontSize: 18,
            fill: '#3de7c9'
          }
        },
        isShowLoading: true, // 展示加载
        figureBG: 1, // 背景模式 1图片 0纯色
        date: [start, end], //选择时间
        pickerOptions: {
          shortcuts: [
            {
              text: '最近一个月',
              onClick(picker) {
                const end = new Date()
                const start = new Date()
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
                picker.$emit('pick', [start, end])
              }
            },
            {
              text: '最近三个月',
              onClick(picker) {
                const end = new Date()
                const start = new Date()
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
                picker.$emit('pick', [start, end])
              }
            },
            {
              text: '最近一年',
              onClick(picker) {
                const end = new Date()
                const start = new Date()
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 365)
                picker.$emit('pick', [start, end])
              }
            }
          ]
        }
      }
    },
    components: {
      Left,
      Center,
      Right
    },
    created() {
      if (localStorage.hasOwnProperty('figure-bg')) {
        // 初始化背景
        this.figureBG = localStorage.getItem('figure-bg')
        if (this.figureBG == 0) {
          this.color = ['#568aea', '#0e2140']
        }
      }
    },
    mounted() {
      for (let i = 0; i <= 4; i++) {
        setTimeout(() => {
          if (i == 4) {
            this.isShowLoading = false
            this.$nextTick(() => {
              this.init()
            })
            return
          }
          let num = i == 3 ? 100 : parseInt(Math.random() * 15) + 50 + 15 * i
          this.configLoad = {
            number: [num],
            content: '{nt}%',
            style: {
              fontSize: 18,
              fill: '#3de7c9'
            }
          }
        }, i * 100)
      }
    },
    methods: {
      init() {
        // 传入时间,组件根据时间重新获取数据
        if (Object.is(this.date, null) || !(this.date instanceof Array)) {
          return
        }
        let start = new Date(this.date[0])
        let end = new Date(this.date[1])
        start = `${start.getFullYear()}-${this.fillNum(
          start.getMonth() + 1
        )}-${this.fillNum(start.getDate())} 00:00:00`
        end = `${end.getFullYear()}-${this.fillNum(
          end.getMonth() + 1
        )}-${this.fillNum(end.getDate())} 23:59:59`
  
        this.$refs.left.componentInit(start, end)
        this.$refs.center.componentInit(start, end)
        this.$refs.right.componentInit(start, end)
      },
      fillNum(num, size = 2) {
        return String.prototype.padStart.call(num, size, '0')
      },
      handleScreenfull() {
        if (!screenfull.isEnabled) {
          this.$message.error(
            '您的浏览器无法使用全屏功能,请更换谷歌浏览器或者请手动点击F11按钮全屏展示!'
       
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值