首页 > 编程语言 >零基础前端项目实战】数据大屏可视化项目完整教程 - 手把手教你用Vue+ECharts打造炫酷数据展示页面 【前端入门必看】一篇文章搞定数据大屏开发 - 含Vue2.0源码+ECharts图表配置详解

零基础前端项目实战】数据大屏可视化项目完整教程 - 手把手教你用Vue+ECharts打造炫酷数据展示页面 【前端入门必看】一篇文章搞定数据大屏开发 - 含Vue2.0源码+ECharts图表配置详解

时间:2024-12-12 21:58:29浏览次数:6  
标签:color type 前端 charts value 大屏 20px data ECharts

效果图:

在这里插入图片描述

完整代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>数据大屏展示</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        body {
            background: #041633;
            color: #fff;
            font-family: Arial, sans-serif;
        }
        .dashboard {
            padding: 20px;
        }
        .header {
            text-align: center;
            padding: 20px 0;
        }
        .header h1 {
            color: #00ffff;
            font-size: 36px;
        }
        .data-overview {
            display: flex;
            justify-content: space-between;
            margin-bottom: 20px;
        }
        .data-card {
            background: rgba(0,255,255,0.1);
            padding: 20px;
            border-radius: 10px;
            width: 23%;
            text-align: center;
        }
        .data-card h3 {
            font-size: 14px;
            margin-bottom: 10px;
        }
        .data-card .number {
            font-size: 24px;
            color: #00ffff;
        }
        .charts-container {
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
        }
        .chart-box {
            background: rgba(0,255,255,0.1);
            padding: 20px;
            border-radius: 10px;
            width: calc(50% - 10px);
            min-height: 400px;
        }
        .chart {
            width: 100%;
            height: 350px;
        }
        .image-box {
            margin-top: 20px;
            text-align: center;
        }
        .image-box img {
            max-width: 100%;
            border-radius: 10px;
        }
    </style>
</head>
<body>
    <div id="app" class="dashboard">
        <div class="header">
            <h1>企业运营数据大屏</h1>
        </div>
        
        <div class="data-overview">
            <div class="data-card" v-for="item in overviewData" :key="item.title">
                <h3>{{item.title}}</h3>
                <div class="number">{{item.value}}</div>
            </div>
        </div>

        <div class="charts-container">
            <div class="chart-box">
                <h3>月度销售趋势</h3>
                <div ref="salesChart" class="chart"></div>
            </div>
            <div class="chart-box">
                <h3>产品类别分布</h3>
                <div ref="categoryChart" class="chart"></div>
            </div>
            <div class="chart-box">
                <h3>地区分布</h3>
                <div ref="regionChart" class="chart"></div>
            </div>
            <div class="chart-box">
                <h3>实时监控</h3>
                <div class="image-box">
                    <img src="https://via.placeholder.com/200x150?text=实时监控" alt="实时监控">
                </div>
            </div>
        </div>
    </div>

    <script>
        new Vue({
            el: '#app',
            data: {
                overviewData: [
                    { title: '今日销售额', value: '¥1,234,567' },
                    { title: '订单总量', value: '8,846' },
                    { title: '用户总数', value: '12,345' },
                    { title: '同比增长', value: '23.5%' }
                ],
                charts: {}
            },
            mounted() {
                this.initCharts();
                // 模拟实时数据更新
                setInterval(this.updateData, 5000);
            },
            methods: {
                initCharts() {
                    // 销售趋势图
                    this.charts.sales = echarts.init(this.$refs.salesChart);
                    this.charts.sales.setOption({
                        tooltip: {
                            trigger: 'axis'
                        },
                        xAxis: {
                            type: 'category',
                            data: ['1月', '2月', '3月', '4月', '5月', '6月'],
                            axisLine: {
                                lineStyle: {
                                    color: '#fff'
                                }
                            }
                        },
                        yAxis: {
                            type: 'value',
                            axisLine: {
                                lineStyle: {
                                    color: '#fff'
                                }
                            }
                        },
                        series: [{
                            data: [150, 230, 224, 218, 135, 147],
                            type: 'line',
                            smooth: true,
                            itemStyle: {
                                color: '#00ffff'
                            }
                        }]
                    });

                    // 产品类别分布图
                    this.charts.category = echarts.init(this.$refs.categoryChart);
                    this.charts.category.setOption({
                        tooltip: {
                            trigger: 'item'
                        },
                        series: [{
                            type: 'pie',
                            radius: '60%',
                            data: [
                                { value: 335, name: '电子产品' },
                                { value: 310, name: '服装' },
                                { value: 234, name: '食品' },
                                { value: 135, name: '家具' },
                                { value: 1548, name: '其他' }
                            ],
                            emphasis: {
                                itemStyle: {
                                    shadowBlur: 10,
                                    shadowOffsetX: 0,
                                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                                }
                            }
                        }]
                    });

                    // 地区分布图
                    this.charts.region = echarts.init(this.$refs.regionChart);
                    this.charts.region.setOption({
                        tooltip: {
                            trigger: 'axis',
                            axisPointer: {
                                type: 'shadow'
                            }
                        },
                        xAxis: {
                            type: 'category',
                            data: ['华东', '华南', '华北', '西南', '东北'],
                            axisLine: {
                                lineStyle: {
                                    color: '#fff'
                                }
                            }
                        },
                        yAxis: {
                            type: 'value',
                            axisLine: {
                                lineStyle: {
                                    color: '#fff'
                                }
                            }
                        },
                        series: [{
                            data: [320, 302, 301, 334, 390],
                            type: 'bar',
                            itemStyle: {
                                color: '#00ffff'
                            }
                        }]
                    });
                },
                updateData() {
                    // 模拟数据更新
                    const randomData = Array(6).fill(0).map(() => 
                        Math.floor(Math.random() * 100 + 100)
                    );
                    
                    this.charts.sales.setOption({
                        series: [{
                            data: randomData
                        }]
                    });
                }
            }
        })
    </script>
</body>
</html>

标签:color,type,前端,charts,value,大屏,20px,data,ECharts
From: https://blog.csdn.net/sky10100100/article/details/144437055

相关文章

  • 微信小程序中使用echarts 自定义图片时报错: Image is not defined
    最近需要在小程序中完成一个图表,其中需要导入一些自定义的图片来显示。使用echarts-for-weixin项目之后,发现报了如下错误:ReferenceError:Imageisnotdefined经查看源码发现,Echarts.Js文件中是使用NewImage来创建图片的,而小程序中应该使用Canvas.Createimage()因此需要修......
  • 前端性能优化实战:从加载到渲染的全链路提速
    "网站太慢了,用户都在抱怨!"上周,我接手了一个正在运行的电商项目,首屏加载时间竟然长达8秒。作为一个对性能有执念的前端开发者,这个数字让我夜不能寐。经过一周的优化,我们把首屏时间压缩到了2秒以内。今天,我想和大家分享这个过程中的实战经验。......
  • (三)Springboot + vue + 达梦数据库构建RBAC权限模型前后端分离脚手架保姆级教程(前端项
    XX后台管理系统1.技术选型与环境要求1.1项目技术选型1.1.1前端技术HTML5CSS3lavaScriptVueElementUI1.1.2后端技术SpringBootMyBatisPlusSpringSecurityjwtDM81.2项目环境要求1.2.1前端环境要求node.jsVSCodegit1.2.2后端环境要求jdk8+maven......
  • 微前端到底应该怎么学?
    以目前的时代来说,微前端并不算是一个很新的概念了,微前端的本质就是大型应用的拆分与关联。在我刚开始学微前端的时候,就接触到了如下的概念:比如基座式微应用、自组织式微应用,或者微前端的实现方案比如:路由分发、iframe、应用微服务化、微件化、微应用化等等。如果你刚开始接触......
  • 前端的 Python 入门指南(七):异步场景的实现方案对比 - 内置+显示事件循环 + async+await
    《前端的Python入门指南》系列文章:(一):常用语法和关键字对比(二):函数的定义、参数、作用域对比(三):数据类型对比-彻底的一切皆对象实现和包装对象异同(四):参数传递方式对比-值与引用传递vs可变不可变数据(五):面向对象特性之继承实现的方式对比-基于原型链和基于类各有什么......
  • 前端框架 React 与 Vue3对比 —— 技术选型
    在进行前端框架React与Vue3的技术选型对比时,我们可以从以下几个方面进行综合考虑:1.性能比较• Vue3通过Vite打包工具实现了快速的开发和构建,同时使用了响应式系统和Proxy技术来提高数据响应速度。在大部分测试用例中,Vue3比React更快,但在一些特定测试用例中,React......
  • 经验笔记:前端堆栈分配
    https://blog.csdn.net/qq_45831414/article/details/141990707 前端堆栈分配经验笔记概述在前端开发中,“堆栈分配”通常不是一个直接涉及的概念,因为现代前端开发语言如JavaScript已经很大程度上抽象掉了底层的内存管理。然而,理解JavaScript中的内存管理机制对于避免内存泄漏和......
  • 前端自己也能开启HTTPS
    目录前言使用mkcert安装创建证书利用mkcert创建ca 根据ca创建cert 安装证书项目开启HTTPS安装插件 配置vitecofnig.js最终效果前言今天我发现了一个宝藏,兄弟们!就是前端开发阶段是可以使用https来开发的。对不懂前端的后端兄弟来说,这不就是个通讯协议......
  • 【免费大屏版】JeecgBoot v3.7.2 大屏版发布,开源低代码平台
    项目介绍JeecgBoot是一款企业级的低代码平台!前后端分离架构SpringBoot2.x,SpringCloud,AntDesign&Vue3,Mybatis-plus,Shiro,JWT支持微服务。强大的代码生成器让前后端代码一键生成!JeecgBoot引领低代码开发模式(OnlineCoding->代码生成->手工MERGE),帮助解决Java项目70%的重复......
  • php网站前端页面修改,如何更新PHP网站前端页面
    更新PHP网站的前端页面是提升用户体验和优化设计的重要步骤。以下是详细的修改步骤:确定需要修改的页面:列出需要更新的页面,如首页、产品页、关于我们页等。备份文件:在进行任何修改之前,请确保备份网站的所有文件和数据库,以防出现问题时能够恢复。编辑HTML文件:找到......