【Vue+Element-plus】记录后台首页多echart图静态页面

news2024/11/16 1:59:10

一、页面效果

二、完整代码

 Index.vue


<template>
  <div>
    <div>
      <DateTime />
      <!-- {{username}} -->
    </div>
    <el-row :gutter="20">
      <el-col :span="8">
        <div class="grid-content bg-purple">
          <PeopleNum />
        </div>
      </el-col>
      <el-col :span="8">
        <div class="grid-content bg-purple">
          <TrackPatients />
        </div>
      </el-col>
      <el-col :span="8">
        <div class="grid-content bg-purple">
          <HealPatients />
        </div>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="12">
        <div class="grid-content bg-purple">
          <DataComparison />
        </div>
      </el-col>
      <el-col :span="12">
        <div class="grid-content bg-purple">
          <VisitsNumber /> <Text></Text>
        </div>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="6">
        <div class="grid-content bg-purple"><Text></Text></div>
      </el-col>
      <el-col :span="12">
        <div class="grid-content bg-purple"></div>
      </el-col>
      <el-col :span="6">
        <div class="grid-content bg-purple"></div>
      </el-col>
    </el-row>
    <Text></Text>
  </div>
</template>
  
  
<script>
import DateTime from "@/components/HomeChart/DateTime.vue";
import PeopleNum from "@/components/HomeChart/PeopleNumber.vue";
import TrackPatients from "@/components/HomeChart/TrackPatients.vue";
import HealPatients from "@/components/HomeChart/HealPatient.vue";
import DataComparison from "@/components/HomeChart/DataComparison.vue";
import VisitsNumber from "@/components/HomeChart/VisitsNumber.vue";

export default {
  name: "home",
  components: {
    DateTime,
    PeopleNum,
    TrackPatients,
    HealPatients,
    DataComparison,
    VisitsNumber,
  },
  data() {
    return {};
  },
  methods: {},
  created() {
  }
};
</script>
  
<style lang="less" scoped>
.el-row {
  margin-bottom: 20px;

  &:last-child {
    margin-bottom: 10px;
  }
}

.el-col {
  border-radius: 4px;
}

.bg-purple-dark {
  background: #99a9bf;
}

.bg-purple {
  background: #d3dce6;
}

.bg-purple-light {
  background: #e5e9f2;
}

.grid-content {
  border-radius: 13px;
  min-height: 150px;
  margin: 15px 12px 0px 12px;
}

.row-bg {
  padding: 10px 0;
  background-color: #f9fafc;
}
</style>

 DataComparison.vue

<template>
  <div>
    <el-card class="box-card">
      <div slot="header" class="clearfix">
        <span>粉丝数量排名前五城市</span>
        <el-button style="float: right; padding: 3px 0" type="text"><i class="el-icon-more"></i></el-button>
      </div>
      <div id="charts4" style="width: 460px; height: 220px"></div>
      <!-- <div v-for="o in 4" :key="o" class="text item">
        {{ "列表内容 " + o }}
      </div> -->
    </el-card>
  </div>
</template>

<script>
import * as echarts from "echarts";

export default {
  name: "HealPatients",
  data() {
    return {};
  },
  mounted() {
    let myChart4 = echarts.init(document.getElementById("charts4"));
    myChart4.setOption({
      tooltip: {
        trigger: 'axis',
        axisPointer: {
          // Use axis to trigger tooltip
          type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
        }
      },
      legend: {},
      grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
      },
      xAxis: {
        type: 'value'
      },
      yAxis: {
        type: 'category',
        data: ['广州', '深圳', '上海', '重庆', '北京']
      },
      series: [
        {
          name: '原有粉丝',
          type: 'bar',
          stack: 'total',
          label: {
            // show: true
          },
          emphasis: {
            focus: 'series'
          },
          data: [820, 902, 901, 1134, 1390]
        },
        {
          // name: '良好人数',
          type: 'bar',
          stack: 'total',
          label: {
            // show: true
          },
          emphasis: {
            focus: 'series'
          },
          // data: [1233, 1142, 1041, 1344, 1940]
        },
        {
          // name: '111',
          type: 'bar',
          stack: 'total',
          label: {
            // show: true
          },
          emphasis: {
            focus: 'series'
          },
          // data: [220, 182, 191, 234, 290]
        },
        {
          // name: '',
          type: 'bar',
          stack: 'total',
          label: {
            // show: true
          },
          emphasis: {
            focus: 'series'
          },
          // data: [23, 28, 34, 39, 50]
        },
        {
          name: '新增粉丝',
          type: 'bar',
          stack: 'total',
          label: {
            // show: true
          },
          emphasis: {
            focus: 'series'
          },
          data: [150, 212, 201, 154, 190, 330, 410]
        }
      ]
    });
  },
};
</script>

<style scoped>
span{
    font-size: 15px;
}

.clearfix:before,
.clearfix:after {
  display: table;
  content: "";
}

.clearfix:after {
  clear: both;
}

.box-card {
  width: 480px;
}
</style>

DateTime.vue

<template>
  <div>
    <div class="today">今天,</div>
    <div class="date">2023年3月12日星期日,欢迎您使用乐游后台管理平台。</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // date,
    };
  },
  methods: {
    // date() {}
  }
}
</script>

<style scoped>
.today{
    font-size: 38px;
    margin: 15px;
}
.date{
    margin: 15px;
}
</style>

HealPatient.vue

<template>
  <div>
    <el-card class="box-card">
      <span>一个占位的表</span>
      <el-button style="float: right; padding: 3px 0" type="text"
        ><i class="el-icon-more"></i>
      </el-button>
      <div id="charts3" style="width: 100%; height: 90px"></div>
    </el-card>
  </div>
</template>

<script>
import * as echarts from "echarts";

export default {
  name: "HealPatients",
  data() {
    return {};
  },
  mounted() {
    let myChart3 = echarts.init(document.getElementById("charts3"));
    myChart3.setOption({
      xAxis: {
        type: "category",
        data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
      },
      yAxis: {
        type: "value",
      },
      series: [
        {
          data: [6, 12, 10, 4, 12, 13, 10],
          type: "line",
          smooth: true,
        },
      ],
    });
  },
};
</script>

<style scoped>
span {
  font-size: 15px;
}
.text {
  font-size: 12px;
}

.item {
  margin-bottom: 50px;
}

.clearfix:before,
.clearfix:after {
  display: table;
  content: "";
}
.clearfix:after {
  clear: both;
}
</style>

PeopleNumber.vur

<template>
  <div>
    <el-card class="box-card">
      <span>粉丝总数</span>
      <!-- <div>追踪患者</div> -->
      <el-button style="float: right; padding: 3px 0" type="text"
        ><i class="el-icon-more"></i>
      </el-button>
      <div id="charts1" style="width: 100%; height: 90px"></div>
    </el-card>
  </div>
</template>

<script>
import * as echarts from "echarts";

export default {
  name: "HealPatients",
  data() {
    return {};
  },
  mounted() {
    let myChart1 = echarts.init(document.getElementById("charts1"));
    myChart1.setOption({
      legend: {},
      tooltip: {},
      dataset: {
        source: [
          // ['product', '2015', '2016', '2017'],
          ["1", 55],
          ["2", 56],
          ["3", 66],
          ["4", 73],
          ["5", 83],
          ["6", 103],
          ["7", 108],
        ],
      },
      xAxis: { type: "category" },
      yAxis: {},
      // Declare several bar series, each will be mapped
      // to a column of dataset.source by default.
      series: [{ type: "bar" }],
    });
  },
};
</script>

<style  scoped>
span {
  font-size: 15px;
}
.text {
  font-size: 12px;
}

.item {
  margin-bottom: 50px;
}

.clearfix:before,
.clearfix:after {
  display: table;
  content: "";
}
.clearfix:after {
  clear: both;
}
</style>

TrackPatients.vue

<template>
  <div>
    <el-card class="box-card">
        <span>男女占比</span>
        <!-- <div>追踪患者</div> -->
        <el-button style="float: right; padding: 3px 0" type="text"
          ><i class="el-icon-more"></i>
        </el-button>
      <div id="charts" style="width: 100%; height: 90px"></div>
    </el-card>
  </div>
</template>

<script>
import * as echarts from "echarts";

export default {
  name: "TrackPatients",
  data(){
    return{

    }
  },
  mounted(){
    let myChart = echarts.init(document.getElementById('charts'));
    myChart.setOption({
        tooltip: {
    trigger: 'item'
  },
  legend: {
    top: '10%',
    orient: 'vertical',
    left: 'left'
  },
  series: [
    {
      name: 'Access From',
      type: 'pie',
      radius: ['40%', '70%'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderRadius: 10,
        borderColor: '#fff',
        borderWidth: 2
      },
      label: {
        show: false,
        position: 'center'
      },
      emphasis: {
        label: {
          show: true,
          fontSize: 28,
          fontWeight: 'bold'
        }
      },
      labelLine: {
        show: false
      },
      data: [
        { value: 67, name: '女' },
        { value: 34, name: '男' },
        { value: 13, name: '未知' },
      ]
    }
  ]
    })
  }

}
</script>

<style  scoped>
span{
    font-size: 15px;
}
 .text {
    font-size: 12px;
  }

  .item {
    margin-bottom: 50px;
  }

  .clearfix:before,
  .clearfix:after {
    display: table;
    content: "";
  }
  .clearfix:after {
    clear: both
  }

</style>

VisitsNumber.vue

<template>
  <div>
    <el-card class="box-card">
      <div slot="header" class="clearfix">
        <span>七天内新增用户</span>
        <el-button style="float: right; padding: 3px 0" type="text"><i class="el-icon-more"></i></el-button>
      </div>
      <div id="charts5" style="width: 460px; height: 220px"></div>

    </el-card>
  </div>
</template>

<script>
import * as echarts from "echarts";

export default {
  name: "HealPatients",
  data() {
    return {};
  },
  mounted() {
    let myChart5 = echarts.init(document.getElementById("charts5"));
    myChart5.setOption({
      tooltip: {
        trigger: 'axis',
        axisPointer: {
          type: 'shadow'
        }
      },
      grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
      },
      xAxis: [
        {
          type: 'category',
          data: [
            '2023.03.09',
            '2023.03.10',
            '2023.03.11',
            '2023.03.12',
            '2023.03.13',
            '2023.03.14',
            '2023.03.15'
          ],
          axisTick: {
            alignWithLabel: true
          }
        }
      ],
      yAxis: [
        {
          type: 'value'
        }
      ],
      series: [
        {
          name: 'Direct',
          type: 'bar',
          barWidth: '60%',
          data: [103, 122, 90, 127, 98, 102, 123]
        }
      ]

    });
  },
};
</script>

<style  scoped>
span{
    font-size: 15px;
}

.clearfix:before,
.clearfix:after {
  display: table;
  content: "";
}

.clearfix:after {
  clear: both;
}

.box-card {
  width: 480px;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/855487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python-OpenCV中的图像处理-图像轮廓

Python-OpenCV中的图像处理-图像轮廓 轮廓什么是轮廓查找轮廓绘制轮廓 轮廓特征图像的矩轮廓面积轮廓周长&#xff08;弧长&#xff09;轮廓近似凸包轮廓边界矩形 轮廓 什么是轮廓 轮廓可以简单认为成将连续的点&#xff08;连着边界&#xff09;连在一起的曲线&#xff0c;具…

分布式 - 服务器Nginx:一小时入门系列之动静分离

文章目录 1. 动静分离的好处2. 分离静态文件3. 修改 Nginx 配置文件 1. 动静分离的好处 Apache Tocmat 严格来说是一款java EE服务器&#xff0c;主要是用来处理 servlet请求。处理css、js、图片这些静态文件的IO性能不够好&#xff0c;因此&#xff0c;将静态文件交给nginx处…

os.listdir()读取文件夹下特定命名的文件并合并保存

import pandas as pd from tqdm import tqdm import os # 合并振动信号的所有数据 path D:/code/data/Learning_set/Bearing1_1 acc_csv_files os.listdir(path)acc_data pd.DataFrame() temp_data pd.DataFrame() # 逐个读取并合并CSV文件 # tqdm的作用是显示进度条&#…

【PNC】AStar及常用规划算法原理与实现

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍AStar规划算法原理与实现。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷…

网工内推 | 信息安全负责人,需8年安全经验,CISSP证书

01 上海鹰角网络 招聘岗位&#xff1a;信息安全负责人 职责描述&#xff1a; 1、负责公司总体的信息安全规划、信息安全管理体系、流程、制度的设计和优化&#xff0c;确保在运营、应用、信息和业务等方面的持续安全、稳定&#xff1b; 2、负责对系统&#xff0c;网络&#xf…

内网横向移动—WinLinux内存离线读取Hashcat破解RDPSSH存储提取

内网横向移动—Win&Linux&内存离线读取&Hashcat破解&RDP&SSH存储提取 1. 前言2. Windows系统密码提取2.1. 在线读取2.2. 离线读取2.2.1. 无存储读取2.2.1.1. 读取文件2.2.1.2. 本地解密 2.2.2. 有存储读取 2.3. 解决高版本2.3.1. 修改注册表2.3.2. 重新登陆…

Unity3d C#利用本地网页快速打开萤石云监控视频流(ezopen)实现云台,声音等控制,支持WebGL平台,替代UMP播放(含源码)

前言 之前我介绍了替代Universal?Media?PlayerUMP播放石云监控视频流(ezopen)的功能&#xff0c;效果还是很明显的&#xff0c;笔者的测试是差不多3-5秒就能打开监控画面&#xff0c;不过稍微遗憾的是&#xff0c;之前的功能是iframe打开石云提供的播放网页的形式&#xff0…

SSM——环境搭建、产品操作、订单操作

SSM 环境搭建与产品操作 1. 环境准备 1.1 数据库与表结构 1.1.1 创建用户与授权 数据库我们使用 Oracle Oracle 为每个项目创建单独 user &#xff0c; oracle 数据表存放在表空间下&#xff0c;每个用户有独立表空间 创建用户及密码 语法 [ 创建用户 ] &#xff1a; crea…

js 正则表达式

js 正则表达式 http://tool.oschina.net/regex https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions 11 22

【大厂面试必备】网络收发数据及断开服务器(四次挥手)

接上一篇&#xff1a;【网络知识面试】初识协议栈和套接字及连接阶段的三次握手  前面我们了解到服务器和客户端在创建套接字&#xff0c;建立连接后&#xff0c;就可以进入到下一步&#xff0c;双发可以互相发送和接收数据&#xff0c;本篇博客就来学习一下这个过程。  我们…

C++初阶——拷贝构造和运算符重载(const成员)

目录 1. 拷贝构造函数 1.2 拷贝构造函数特征&#xff1a; 2. 默认拷贝构造函数 2.1 未显式定义&#xff0c;编译器会生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝&#xff0c;这种拷贝叫做浅拷贝&#xff0c;或者值拷贝 3. 运算符重载 3.1…

机器人CPP编程基础-01第一个程序Hello World

很多课程先讲C/C或者一些其他编程课&#xff0c;称之为基础课程。然后到本科高年级进行机器人专业课学习&#xff0c;这样时间损失非常大&#xff0c;效率非常低。 C/单片机/嵌入式/ROS等这些编程基础可以合并到一门课中进行实现&#xff0c;这些素材已经迭代三轮以上&#xf…

C# Equals()方法报错:NullReferenceException was unhandled

下面是一个C# Equals()方法的例子&#xff0c;执行时报错了 static void Main(string[] args) {string name "sandeep";string myName null;Console.WriteLine(" operator result is {0}", name myName);Console.WriteLine("Equals method result…

中通快递:短期财务前景良好,长期财务业绩将遭受严重打击

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 华尔街分析师对中通快递的短期财务前景预测 华尔街分析师目前预测中通快递&#xff08;ZTO&#xff09;将在2023财年全年产生一份相当不错的财务业绩。 根据S&P Capital IQ的数据&#xff0c;在过去的6个月里&#xff…

代码随想录算法训练营第24天| 第七章 回溯算法part01 理论基础、leetcode 77

Part I : 回溯算法基础 背景&#xff1a;一直以来都是半懂不懂的&#xff0c;在逻辑上不难&#xff0c;毕竟属于暴力搜索&#xff1b;在代码上就开始缠绕起来了&#xff0c;自己研究的时候对N皇后问题老是理不清。这次终于在Carl这开始前进啦&#xff01;何为回溯算法&#xf…

【C++】STL——set/multiset 和 map/multimap的使用

文章目录 1. 关联式容器2. 树形结构的关联式容器3. set3.1 认识set3.1 set的使用 4. multiset5. map5.1 认识map5.2 pair5.3 map的使用对map中[]的理解 6. multimap 1. 关联式容器 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器 比如&#xff1a;vector、list、deque、…

VoxWeekly|The Sandbox 生态周报|20230807

欢迎来到由 The Sandbox 发布的《VoxWeekly》。我们会在每周发布&#xff0c;对上一周 The Sandbox 生态系统所发生的事情进行总结。 如果你喜欢我们内容&#xff0c;欢迎与朋友和家人分享。请订阅我们的 Medium 、关注我们的 Twitter&#xff0c;并加入 Discord 社区&#xf…

c++--AVL树简单实现

1.什么是AVL树 AVL树就是在搜索二叉树的基础上通过控制左右子树的高度差实现的&#xff0c;在搜索二叉树的基础上&#xff0c;通过旋转来控制&#xff0c;是左右子树高度差的绝对值严格控制为不超过1&#xff08;通过旋转来控制树的高度&#xff09;。由于搜索二叉树的效率最差…

一起学SF框架系列7.1-spring-AOP-基础知识

AOP(Aspect-oriented Programming-面向切面编程&#xff09;是一种编程模式&#xff0c;是对OOP(Object-oriented Programming-面向对象编程&#xff09;一种有益补充。在OOP中&#xff0c;万事万物都是独立的对象&#xff0c;对象相互耦合关系是基于业务进行的&#xff1b;但在…

【逗老师的PMP学习笔记】8、项目质量管理

目录 一、规划质量管理1、质量管理的发展历史2、戴明环&#xff0c;PDCA理论3、【关键输入】事业环境因素4、【关键输入】成本效益分析5、【关键工具】质量成本6、【关键输出】质量管理计划7、插一嘴&#xff0c;项目的三个标准8、【关键工具】质量测量指标 二、管理质量1、【关…