从0开始搭建vue + flask 旅游景点数据分析系统(四):编写前端首页【数据驾驶舱】

  • 本期我们编写数据驾驶舱页面(Dashboard)这个页面。
  • 主要任务是引入echarts 组件编写数据驾驶舱页面。

视频教程后续会更新在我的B站:https://space.bilibili.com/1583208775?spm_id_from=666.25.0.0
推荐从教程第一集开始从零开始学习:https://blog.csdn.net/roccreed/article/details/140734085?spm=1001.2014.3001.5501

1 美化菜单

先美化下菜单,给aside 添加一个class=“aside”,然后写一下背景颜色样式:

.aside{
  background-color: #545c64;;
}

给el-menu添加3个有关颜色的属性,删掉原来的颜色配置

<el-menu :default-active="activeIndex"
               background-color="#545c64"
               text-color="#fff"
               active-text-color="#ffd04b"
               class="el-menu-vertical">

同时,把菜单的名字也修改一下

  <el-menu-item index="/dashboard" @click="navigateTo('/dashboard')">数据驾驶舱</el-menu-item>
  <el-menu-item index="/users" @click="navigateTo('/users')">用户管理</el-menu-item>

再此基础上,再引入elemnt-ui自带的图标方案,进一步美化菜单,为代码添加图标:

       	<el-menu-item index="/dashboard" @click="navigateTo('/dashboard')">
          <i class="el-icon-s-marketing"></i>
          数据驾驶舱</el-menu-item>
        <el-menu-item index="/users" @click="navigateTo('/users')">
          <i class="el-icon-s-custom"></i>
          用户管理</el-menu-item>

然后就获得了和官方菜单例子中一样的配色了:

在这里插入图片描述

2 数据驾驶舱页面-布局编写

还是先搞定布局,修改Dashboard.vue页面,这里使用官方的row和col来简单实现布局效果,可以参考官方文档:https://element.eleme.cn/#/zh-CN/component/layout

<template>
  <div>
    <el-row :gutter="20">
      <!-- Top chart -->
      <el-col :span="24">
        <div class="chart" style="background-color: #f56c6c; height: 300px;">
          Top Chart
        </div>
      </el-col>
    </el-row>
    <el-row :gutter="20" style="margin-top: 20px;">
      <!-- Bottom left chart -->
      <el-col :span="12">
        <div class="chart" style="background-color: #67c23a; height: 300px;">
          Bottom Left Chart
        </div>
      </el-col>
      <!-- Bottom right chart -->
      <el-col :span="12">
        <div class="chart" style="background-color: #409eff; height: 300px;">
          Bottom Right Chart
        </div>
      </el-col>
    </el-row>
  </div>
</template>

<script>
export default {
  name: 'Dashboard',
};
</script>

<style scoped>
.chart {
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 20px;
  border-radius: 10px;
}
</style>

使用不同颜色展示布局编写的成果:

在这里插入图片描述

下一步开始集成 echarts 和 vue-echarts,然后把上图中三个图形替换为echarts的图形。

3 安装 echarts

执行命令

npm install echarts vue-echarts

vue-echarts 现在已经是7.0-beta版本了,可以查看其github页面获得更多信息:https://github.com/ecomfe/vue-echarts/blob/main/README.zh-Hans.md

4 注册 vue-echarts 组件

修改main.js,添加这3行代码

import ECharts from 'vue-echarts';
import 'echarts';
Vue.component('v-chart', ECharts);

5 编写折线图组件

下面编写一个折线图组件,并且放到Dashboard.vue中的Top Chart的位置。

在components文件夹下创建LineChart.vue:

<template>
  <div>
    <v-chart :option="chartOptions" style="width: 100%; height: 300px;"></v-chart>
  </div>
</template>

<script>
export default {
  name: 'TouristSpotRanking',
  data() {
    return {
      chartOptions: {
        title: {
          text: '旅游景点评论排名',
        },
        tooltip: {
          trigger: 'axis',
        },
        legend: {
          data: ['评论数'],
        },
        xAxis: {
          type: 'category',
          data: ['景点A', '景点B', '景点C', '景点D', '景点E'],
        },
        yAxis: {
          type: 'value',
        },
        series: [
          {
            name: '评论数',
            type: 'line',
            data: [820, 932, 901, 934, 1290],
          },
        ],
      },
    };
  },
};
</script>

<style scoped>
/* 添加一些样式使图表看起来更好 */
</style>

然后修改Dashboard.vue文件

# 先把.chart样式中的flex去掉
.chart {
  /*display: flex;*/
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 20px;
  border-radius: 10px;
}

# 引入LineChart组件
<script>
import LineChart from "@/components/LineChart";

export default {
  name: 'Dashboard',
  components: {
    LineChart
  }
};
</script>

# 修改原本的红色区域的代码
<el-col :span="24">
        <div class="chart" style="background-color: #f4eeee; height: 300px;">
          <LineChart/>
        </div>
      </el-col>

为了展示效果把div的背景色改为淡灰色,这样就完成了第一个图形的编写:

在这里插入图片描述

6 编写柱状图 & 饼图 组件

继续在components下编写BarChart.vue

<template>
  <div>
    <v-chart :option="chartOptions" style="width: 100%; height: 400px;"></v-chart>
  </div>
</template>

<script>
export default {
  name: 'TouristSpotRating',
  data() {
    return {
      chartOptions: {
        title: {
          text: '旅游景点评分排名',
        },
        tooltip: {
          trigger: 'axis',
        },
        xAxis: {
          type: 'category',
          data: ['景点A', '景点B', '景点C', '景点D', '景点E'],
        },
        yAxis: {
          type: 'value',
          max: 10,
        },
        series: [
          {
            name: '评分',
            type: 'bar',
            data: [8.5, 9.0, 7.5, 9.3, 8.0],
            itemStyle: {
              color: '#67c23a',
            },
          },
        ],
      },
    };
  },
};
</script>

<style scoped>
/* 添加一些样式使图表看起来更好 */
</style>

编写PieChart.vue

<template>
  <div>
    <v-chart :option="chartOptions" style="width: 100%; height: 400px;"></v-chart>
  </div>
</template>

<script>
export default {
  name: 'PieChart',
  data() {
    return {
      chartOptions: {
        title: {
          text: '日本景点城市分布'
        },
        tooltip: {},
        series: [{
          type: 'pie',
          data: [
            {name:'东京',value:104},
            {name:'大阪',value:81},
            {name:'京都',value:47},
            {name:'横滨',value:51},
            {name:'名古屋',value:62}]
        }]
      },
    };
  },
};
</script>

<style scoped>
/* 添加一些样式使图表看起来更好 */
</style>

引入到Dashboard.vue中

import LineChart from "@/components/LineChart";
import BarChart from "@/components/BarChart";
import PieChart from "@/components/PieChart";

export default {
  name: 'Dashboard',
  components: {
    LineChart, BarChart, PieChart
  }
};

修改template部分

<el-col :span="12">
        <div class="chart" style="background-color: #f4eeee; height: 400px;">
          <bar-chart/>
        </div>
      </el-col>
      <!-- Bottom right chart -->
      <el-col :span="12">
        <div class="chart" style="background-color: #f4eeee; height: 400px;">
          <pie-chart/>
        </div>
      </el-col>

完成效果:

在这里插入图片描述

小结

这期内容非常多啊(1)本节我们完成了echarts的引入,同时做了3个静态的图形,动态的数据等待后端程序搭建起来后就可以实现。(2)本节在菜单中引入了element-ui的图标

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
旅游景点数据大屏实时监控系统是一个基于Python的FlaskVue框架的应用。它的目标是实时监控和展示旅游景点的相关数据,以提供实时的信息和洞察力。 在这个系统中,Flask是用于构建后端的Web框架,负责处理前端请求、与数据库交互以及提供API接口。Vue是一种现代化的前端框架,用于构建用户界面和实现数据可视化。 以下是系统的基本架构和一些关键功能: 1. 数据采集:通过网络爬虫或API接口,定期获取旅游景点的相关数据,如游客数量、天气情况、交通状况等。 2. 数据存储:将采集到的数据存储到数据库中,以便后续查询和分析。 3. 数据处理:根据需求对数据进行清洗、转换和聚合,以便生成可视化图表和指标。 4. 实时监控:通过WebSocket等技术,将处理好的数据实时推送到前端,以便展示最新的数据和状态。 5. 数据可视化:使用Vue框架构建用户界面,通过图表、地图等方式展示旅游景点的相关数据,并提供交互功能,如筛选、排序、搜索等。 6. 报警和预警:根据设定的阈值和规则,对数据进行监控,一旦出现异常情况,则触发报警或预警机制,及时通知相关人员。 7. 用户管理:实现用户登录、权限管理等功能,保证系统安全性和数据的隐私性。 通过以上的功能,旅游景点数据大屏实时监控系统可以帮助相关人员快速了解旅游景点的实时情况,及时做出决策和调整。同时,也可以提供历史数据的查询和分析,为后续的运营和规划提供参考依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦麦大数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值