当前位置: 首页 > news >正文

《从零搭建Vue3项目实战》(AI辅助搭建Vue3+ElemntPlus后台管理项目)零基础入门系列第十二篇(完结篇):数据统计功能实现

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关

  • 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息

文章目录

  • 《从零搭建Vue3项目实战》(AI辅助搭建Vue3+ElemntPlus后台管理项目)零基础入门系列第十二篇(完结篇):数据统计功能实现
    • 1. 使用echarts
      • 1.1 提问ai
      • 1.2 安装echarts
    • 2. 折线图实现
      • 2.1 提示词
      • 2.2 src/views/DataStaticsView.vue
      • 2.3 页面效果
    • 3. 折线图优化
      • 3.1 src/views/DataStaticsView.vue
      • 3.2 优化后的页面效果
    • 4. 项目源码(完结)


📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

《从零搭建Vue3项目实战》(AI辅助搭建Vue3+ElemntPlus后台管理项目)零基础入门系列第十二篇(完结篇):数据统计功能实现

从零搭建Vue3项目实战,借助AI工具辅助学习和代码生成,零基础小白亦可轻松上手实现。

以下为系列篇所有文章:
《从零搭建Vue3项目实战》零基础入门系列第一篇:开发环境准备
《从零搭建Vue3项目实战》零基础入门系列第二篇:项目创建和初始化
《从零搭建Vue3项目实战》零基础入门系列第三篇:ElementPlus引入和应用
《从零搭建Vue3项目实战》零基础入门系列第四篇:登录页面实现
《从零搭建Vue3项目实战》零基础入门系列第五篇:登录页面优化及使用AI学习代码
《从零搭建Vue3项目实战》零基础入门系列第六篇:页面跳转功能实现(Router的引入和使用)
《从零搭建Vue3项目实战》零基础入门系列第七篇:菜单栏实现
《从零搭建Vue3项目实战》零基础入门系列第八篇:菜单栏优化和阶段项目源码
《从零搭建Vue3项目实战》零基础入门系列第九篇:用户管理功能实现
《从零搭建Vue3项目实战》零基础入门系列第十篇:商品管理功能实现
《从零搭建Vue3项目实战》零基础入门系列第十一篇:订单管理功能实现
《从零搭建Vue3项目实战》零基础入门系列第十二篇(完结篇):数据统计功能实现
《从零搭建Vue3项目实战》零基础入门一篇通关(AI辅助搭建Vue3+ElemntPlus后台管理项目)

系列文章均收录在前端vue3入门实战专栏中,可订阅专栏了解更多内容


数据统计使用echarts实现,使用柱状图来分析数据

使用以折线图为例实现功能

1. 使用echarts

1.1 提问ai

如何在vue3项目中使用echarts

根据ai回答,安装echarts
打开新的终端(Terminal)窗口,执行命令安装echarts

1.2 安装echarts

npm install echarts --save

注意:如果ai给出了数据统计页面的新代码,先不管,直接看下一步继续提问ai生成折线图

2. 折线图实现

使用echarts实现折线图,展示订单与日期

2.1 提示词

你是一名资深前端开发,现在已经使用vue3+elementplus搭建了一个基础项目,需要你来实现数据统计页面DataStatisticsView.vue组件中的代码,使用echarts中的折线图显示订单和时间,样式尽量美观

生成代码如下

2.2 src/views/DataStaticsView.vue

代码如下

<template>
    <div>
        <div ref="chart" style="width: 100%; height: 400px;"></div>
    </div>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import * as echarts from 'echarts';

const chart = ref(null);

// 模拟订单数据
const orders = [
    { time: '2023-10-01', count: 10 },
    { time: '2023-10-02', count: 15 },
    { time: '2023-10-03', count: 20 },
    { time: '2023-10-04', count: 25 },
    { time: '2023-10-05', count: 30 },
    { time: '2023-10-06', count: 35 },
    { time: '2023-10-07', count: 40 },
];

onMounted(() => {
    const myChart = echarts.init(chart.value);
    const option = {
        title: {
            text: '订单数量统计',
            left: 'center',
            textStyle: {
                fontSize: 18,
                fontWeight: 'bold',
            },
        },
        tooltip: {
            trigger: 'axis',
            axisPointer: {
                type: 'cross',
                label: {
                    backgroundColor: '#6a7985',
                },
            },
        },
        xAxis: {
            type: 'category',
            data: orders.map(order => order.time),
            axisLabel: {
                interval: 0,
                rotate: 45,
                fontSize: 12,
            },
        },
        yAxis: {
            type: 'value',
            name: '订单数量',
            nameTextStyle: {
                fontSize: 14,
            },
            axisLabel: {
                formatter: '{value} 单',
            },
        },
        series: [
            {
                name: '订单数量',
                type: 'line',
                data: orders.map(order => order.count),
                smooth: true,
                itemStyle: {
                    color: '#409EFF',
                },
                areaStyle: {
                    color: {
                        type: 'linear',
                        x: 0,
                        y: 0,
                        x2: 0,
                        y2: 1,
                        colorStops: [
                            { offset: 0, color: 'rgba(64, 158, 255, 0.5)' },
                            { offset: 1, color: 'rgba(64, 158, 255, 0)' },
                        ],
                        global: false,
                    },
                },
            },
        ],
        grid: {
            left: '10%',
            right: '10%',
            bottom: '15%',
        },
    };
    myChart.setOption(option);
});
</script>

<style scoped>

</style>

2.3 页面效果

页面效果如下
在这里插入图片描述

这个模拟的数据有点不太正常,每日都比前一日多,我们修改一下数据,将后面几个订单量减少一些

3. 折线图优化

修改后的代码如下

3.1 src/views/DataStaticsView.vue

代码

<template>
    <div>
        <div ref="chart" style="width: 100%; height: 400px;"></div>
    </div>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import * as echarts from 'echarts';

const chart = ref(null);

// 模拟订单数据
const orders = [
    { time: '2025-01-01', count: 10 },
    { time: '2025-01-02', count: 15 },
    { time: '2025-01-03', count: 20 },
    { time: '2025-01-04', count: 50 },
    { time: '2025-01-05', count: 20 },
    { time: '2025-01-06', count: 35 },
    { time: '2025-01-07', count: 16 },
];

onMounted(() => {
    const myChart = echarts.init(chart.value);
    const option = {
        title: {
            text: '订单数量统计',
            left: 'center',
            textStyle: {
                fontSize: 18,
                fontWeight: 'bold',
            },
        },
        tooltip: {
            trigger: 'axis',
            axisPointer: {
                type: 'cross',
                label: {
                    backgroundColor: '#6a7985',
                },
            },
        },
        xAxis: {
            type: 'category',
            data: orders.map(order => order.time),
            axisLabel: {
                interval: 0,
                rotate: 45,
                fontSize: 12,
            },
        },
        yAxis: {
            type: 'value',
            name: '订单数量',
            nameTextStyle: {
                fontSize: 14,
            },
            axisLabel: {
                formatter: '{value} 单',
            },
        },
        series: [
            {
                name: '订单数量',
                type: 'line',
                data: orders.map(order => order.count),
                smooth: true,
                itemStyle: {
                    color: '#409EFF',
                },
                areaStyle: {
                    color: {
                        type: 'linear',
                        x: 0,
                        y: 0,
                        x2: 0,
                        y2: 1,
                        colorStops: [
                            { offset: 0, color: 'rgba(64, 158, 255, 0.5)' },
                            { offset: 1, color: 'rgba(64, 158, 255, 0)' },
                        ],
                        global: false,
                    },
                },
            },
        ],
        grid: {
            left: '10%',
            right: '10%',
            bottom: '15%',
        },
    };
    myChart.setOption(option);
});
</script>

<style scoped>

</style>

3.2 优化后的页面效果

修改后的页面效果如下
在这里插入图片描述


4. 项目源码(完结)

CSDN下载:前端 vue3 vue3入门实战 从零搭建vue3+element-plus后台管理项目 阶段2项目源码
GitHub源码:


除此之外还可以按照上面的提问让ai生成饼状图、柱状图等

以上就是数据统计功能的实现内容


📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

相关文章:

  • Java高性能并发利器-VarHandle
  • 【sgSpliter】自定义组件:可调整宽度、高度、折叠的分割线
  • 【技术派部署篇】云服务器部署技术派
  • jeecg启动所需要安装的软件
  • GitHub Desktop 推送报错 Authentication Failed 身份验证失败
  • HarmonyOS 5.0分布式开发深度踩坑指南:从理论到实践的突围之路
  • Java递归练习----猴子偷桃
  • 基于ueditor编辑器的功能开发之增加自定义一键排版功能
  • Java IO 流
  • 【资料分享】瑞芯微RK3576,8核2.2GHz+6T算力NPU工业核心板说明书
  • STM32(基于标准库)
  • 多模态大模型[CLIP/Flamingo/Coca/BLIP]
  • Unity入门
  • 图谱可视化的海洋生物信息查询网站的设计与实现(springboot+ssm+vue)含文档
  • 十八、TCP多线程、多进程并发服务器
  • 气动V型调节开关球阀气源连接尺寸与方式全解析-耀圣
  • 2025 GGS全球游戏峰会前瞻预告:全新版本控制平台Perforce P4、龙智游戏开发及管理解决方案等即将亮相
  • 【家政平台开发(37)】家政平台蜕变记:性能优化与代码重构揭秘
  • Dify添加ollama插件
  • OpenHarmony5.0.2 音频audio适配
  • jsp新闻网站/数据分析培训机构哪家好
  • VPS如何做镜像网站/seo搜索排名优化公司
  • 郑州一建集团工程建设有限公司网站/百度手机助手苹果版
  • 如何建立一个网站论坛/企业查询宝
  • 广西企业网站有哪些/h5网站制作平台
  • 顺德网站制作公司/软文拟发布的平台与板块