Vue 3+Vite+Eectron从入门到实战系列之(六)一工作台界面开发及实现响应式

工作台,是每个后台系统必备的,也是管理系统的首页。这次我们来实现一个工作台,并适配他的响应性

请添加图片描述

在这里插入图片描述

实现效果

请添加图片描述

代码实现

<template><div class="dashboard"><el-row :gutter="20"><el-col class="mb-2" :xs="{span:24}" :md="{span:12}" :sm="{span:24}" :lg="{span:6}"><el-card><template #header><h3 class="header-top flex justify-between items-center"><span class="font-bold">访问数</span><el-icon><Pointer /></el-icon></h3></template><div class="py-4 px-4 flex justify-between items-center"><span class="text-2xl">$2,000</span><el-icon><Calendar /></el-icon></div><div class="p-2 px-4 flex justify-between"><span>总访问数</span><span>$120,000</span></div></el-card></el-col><el-col class="mb-2" :xs="{span:24}" :md="{span:12}" :sm="{span:24}" :lg="{span:6}"><el-card><template #header><h3 class="header-top flex justify-between items-center"><span class="font-bold">成交额</span><el-icon><Tickets /></el-icon></h3></template><div class="py-4 px-4 flex justify-between items-center"><span class="text-2xl">$2,000</span><el-icon><Monitor /></el-icon></div><div class="p-2 px-4 flex justify-between"><span>总访问数</span><span>$120,000</span></div></el-card></el-col><el-col class="mb-2" :xs="{span:24}" :md="{span:12}" :sm="{span:24}" :lg="{span:6}"><el-card><template #header><h3 class="header-top flex justify-between items-center"><span class="font-bold">下载数</span><el-icon><Pointer /></el-icon></h3></template><div class="py-4 px-4 flex justify-between items-center"><span class="text-2xl">$2,000</span><el-icon><Guide color="#4E0505" /></el-icon></div><div class="p-2 px-4 flex justify-between"><span>总访问数</span><span>$120,000</span></div></el-card></el-col><el-col class="mb-2" :xs="{span:24}" :md="{span:12}" :sm="{span:24}" :lg="{span:6}"><el-card><template #header><h3 class="header-top flex justify-between items-center"><span class="font-bold">成交数</span><el-icon><DataLine /></el-icon></h3></template><div class="py-4 px-4 flex justify-between items-center"><span class="text-2xl">$2,000</span><el-icon><Van color="#1969BA" /></el-icon></div><div class="p-2 px-4 flex justify-between"><span>总访问数</span><span>$120,000</span></div></el-card></el-col></el-row><el-row :gutter="10" class="mt-2 mb-4"><el-col :span="24"><el-card style="width:100%"><el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"><el-tab-pane label="流量趋势" name="first"><BarPiev-if="activeName === 'first'":chartData="chartData":height="'300px'":option="option"/></el-tab-pane><el-tab-pane label="访问量" name="second"><LinePiev-if="activeName === 'second'":chartData="chartData":height="'300px'":option="option1"/></el-tab-pane></el-tabs></el-card></el-col></el-row><el-row :gutter="20"><el-col class="mb-2" :xs="{span:24}" :md="{span:12}" :sm="{span:24}" :lg="{span:8}"><el-card><template #header><h3 class="header-top flex justify-between items-center"><span class="font-bold">转化率</span></h3></template><div class="py-4 px-4 flex justify-between items-center"><chartPieRef :chartData="pieData" :height="'400px'" /></div></el-card></el-col><el-col class="mb-2" :xs="{span:24}" :md="{span:12}" :sm="{span:24}" :lg="{span:8}"><el-card><template #header><h3 class="header-top flex justify-between items-center"><span class="font-bold">访问来源</span></h3></template><div class="py-4 px-4 flex justify-between items-center"><chartPieRef :chartData="pieData" :height="'400px'" /></div></el-card></el-col><el-col class="mb-2" :xs="{span:24}" :md="{span:12}" :sm="{span:24}" :lg="{span:8}"><el-card><template #header><h3 class="header-top flex justify-between items-center"><span class="font-bold">成交占比</span></h3></template><div class="py-4 px-4 flex justify-between items-center"><chartPieRef :chartData="pieData" :height="'400px'" /></div></el-card></el-col></el-row></div>
</template>
  • 封装echarts组件
  • 引入Tailwind CSS,简化我们书写css样式
<script setup>
import { ref, onMounted } from "vue";
import {Pointer,Tickets,DataAnalysis,DataLine,Monitor,Van,Guide,Calendar
} from "@element-plus/icons-vue";
import BarPie from "@/components/echarts/bar.vue";
import LinePie from "@/components/echarts/line.vue";
import chartPieRef from "@/components/echarts/pie.vue";
const handleClick = (tab, event) => {console.log(tab, event);
};
const activeName = ref("first");
//柱状图的数据
const chartData = [{name: "衬衫",value: "5"},{name: "羊毛衫",value: "10"},{name: "雪纺衫",value: "15"},{name: "裤子",value: "20"},{name: "高跟鞋",value: "25"}
];
const option = {title: {text: "流量趋势"},tooltip: {},yAxis: {}
};
const option1 = {title: {text: "访问量"},tooltip: {},yAxis: {}
};
const pieData = [{ value: 1048, name: "Search Engine" },{ value: 735, name: "Direct" },{ value: 580, name: "Email" },{ value: 484, name: "Union Ads" },{ value: 300, name: "Video Ads" }
];
</script><style scoped>
</style>

组件的封装

  • 以饼图为例
<template><div ref="chartPieRef" :style="{ height:height, width }"></div>
</template><script>
import {unref,nextTick,watch,computed,ref,defineComponent,reactive,watchEffect
} from "vue";
import { useEcharts } from "@/hooks/useEcharts";
export default defineComponent({name: "bar",props: {chartData: {type: Array,default: () => []},option: {type: Object,default: () => ({})},width: {type: String,default: "100%"},height: {type: String,default: "calc(100vh - 78px)"}},setup(props) {//创建dom节点的引用const chartPieRef = ref(null);const { echarts, setOptions } = useEcharts(chartPieRef);const COLORS = ["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83"];//默认的配置const option = reactive({tooltip: {trigger: "item"},legend: {top: "5%",left: "center"},series: [{name: "pie",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: 40,fontWeight: "bold"}},labelLine: {show: false},data: []}]});//监听父组件传递的属性变化,时时响应变化watchEffect(() => {props.chartData && initCharts();});function initCharts() {if (props.option) {Object.assign(option, props.option);}console.log(option, "option");option.series[0].data = props.chartData;setOptions(option);}return {chartPieRef};}
});
</script><style></style>

这样我们就实现了一个大概的dashboard页面,细节需要自己去完善美化了。
在这里插入图片描述
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flink车联网项目前篇:建模设计(第65天)

系列文章目录 2.2 维度建模 2.2.1 维度表 2.2.2 事实表 2.2.3 维度建模的三种模型 3. 建模设计 3.1 ODS层 3.2 DWD层 3.3 DWS层 3.4 ADS层 文章目录 系列文章目录前言2.2 维度建模2.2.1 维度表2.2.2 事实表2.2.3 维度建模的三种模型 3. 建模设计3.1 ODS层3.2 DWD层3.3 DWS层3.…

基于ssm+vue+uniapp的停车场小程序的设计与实现

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

sql语句优化(mysql select语句)-索引方式

1、上图是mysql user表的一小部分数据,一共有: 100万条数据 2、假如现在需要查询name列的某一条数据&#xff08;name‘user3’&#xff09; 3、下图是查询优化器评估的最佳方案&#xff0c;索引我删除了还走索引&#xff0c;还他呀的在&#xff0c;奇怪&#xff0c;就先不研究…

Review Learning : 推进一体化超高清图像恢复训练方法

Review Learning: Advancing All-in-One Ultra-High-Definition Image Restoration Training Method 摘要 一体化图像恢复任务变得越来越重要&#xff0c;特别是对于超高清&#xff08;UHD&#xff09;图像。 现有的一体机UHD图像恢复方法通常通过引入针对不同退化类型的即时…

Python,Spire.Doc模块,处理word、docx文件,极致丝滑

Python处理word文件&#xff0c;一般都是推荐的Python-docx&#xff0c;但是只写出一个&#xff0c;一句话的文件&#xff0c;也没有什么样式&#xff0c;就是36K。 再打开word在另存一下&#xff0c;就可以到7-8k&#xff0c;我想一定是python-docx的问题&#xff0c;但一直没…

加和分数、训练、测试

一、加和所有alignment的分数 1、路线图中 2、l_i只与token有关&#xff0c;有一个专门训练的网络&#xff1b;h_i变化只与null有关 3、distribution生成的概率不受路径影响&#xff0c;只要到达位置概率就是一样的 4、计算alignment分数的总和 &#xff08;1&#xff09;αi…

C 语言结构体赋值分析和其优点(使用方式和汇编分析)

1. 例子 #include <stdio.h> #include <stdlib.h> #include <string.h>struct Foo {char a;int b;double c; };int main() {// 定义结构体对象struct Foo foo1;struct Foo foo2;// 初始化为 0memset(&foo1, 0, sizeof(foo1));memset(&foo2, 0, size…

Kubernetes/K8s集群1.23.6搭建

1 集群规划 HostnameIP角色centos702192.168.131.102mastercentos704192.168.131.104nodecentos705192.168.131.105node 2 安装步骤 初始操作和安装基础软件每个节点都要执行。 2.1 初始操作 2.1.1 关闭防火墙 systemctl stop firewalld systemctl disable firewalld2.1.…

Science Robotics 受鳞片启发的可编程机器人结构,可同时进行形状变形和刚度变化

一、前言速览 生物有机体通常凭借复杂的结构表现出显著的多功能性&#xff0c;例如章鱼具有可以同时改变形状和刚度的能力。现有的仿生软体机器人要想实现这样的能力&#xff0c;往往需要繁琐的结构和复杂的控制系统。为此&#xff0c;来自新加坡南洋理工大学的研究人员从覆盖…

ARM高性能计算(HPC)处理器Neoverse介绍

思考: Neoverse系列中的N、V、E有什么区别? 这三个字母的缩写又是什么? ARM Neoverse架构是ARM专为服务器、数据中心、高性能计算(HPC)和网络基础设施设计的一系列处理器架构。Neoverse架构分为N系列、V系列和E系列,这些系列面向不同的应用场景,各自有不同的设计目标和…

44 个 React 前端面试问题

1.你知道哪些React hooks&#xff1f; useState&#xff1a;用于管理功能组件中的状态。useEffect&#xff1a;用于在功能组件中执行副作用&#xff0c;例如获取数据或订阅事件。useContext&#xff1a;用于访问功能组件内的 React 上下文的值。useRef&#xff1a;用于创建对跨…

人工智能新纪元

人类社会正式从信息科技时代步入了人工智能时代&#xff0c;相比信息科技革命&#xff0c;人工智能科技革命的影响要深远的多&#xff0c;在这新旧交替剧烈变革期&#xff0c;绝大多数人都有机会。 为了更好的理解人工智能科技革命&#xff0c;首先我们首先梳理一下技术的发展…

全网最最最详细的haproxy详解!!!

1 什么是负载均衡 负载均衡&#xff08;Load Balancing&#xff09;是一种将网络请求或工作负载分散到多个服务器或计算机资源上的技术&#xff0c;以实现优化资源使用、提高系统吞吐量、增强数据冗余和故障容错能力、以及减少响应时间的目的。在分布式系统、云计算环境、Web服…

ArkUI---Swiper、Grid、List组件简单介绍

前言&#xff1a;ForEach ForEach语法如下&#xff1a; ForEach(arr: Array,itemGenerator: (item: Array, index?: number) > void,keyGenerator?: (item: Array, index?: number) : string > string ) 参数1&#xff1a;数据源&#xff0c;为Array的数组 参数2&am…

KOLA: CAREFULLY BENCHMARKING WORLD KNOWLEDGE OF LARGE LANGUAGE MODELS

文章目录 题目摘要简介KOLA 基准实验评估结论和未来工作道德声明 题目 KOLA&#xff1a;仔细对大型语言模型的世界知识进行基准测试 论文地址:https://arxiv.org/abs/2306.09296 项目地址:https://github.com/ranahaani/GNews 摘要 大型语言模型 (LLM) 的卓越性能要求评估方法…

Grok-2的Beta版发布

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

图论------Bellman-Ford算法求单源最短路径的优化

目录 前情回顾&#xff1a; 画图分析&#xff1a; 具体代码&#xff1a; 前情回顾&#xff1a; 大家是否还记得我们之前讲过的Bellman-Ford算法&#xff0c;如果忘记的话可以点击链接去复习一下&#xff1a;图论------贝尔曼-福德&#xff08;Bellman-Ford&#xff09;算法-…

8月13日学习笔记 LVS

一.描述以及工作原理 1. 什么是LVS linux virtural server的简称&#xff0c;也就是linxu虚拟机服务器&#xff0c;这是一个 由章文嵩博士发起的开源项目&#xff0c;官网是 http://www.linuxvirtualserver.org,现在lvs已经是linux内核标 准的一部分&#xff0c;使用lvs可以达…

杭州网络安全等保测评——数据守护者的金盾牌️

在数字化转型疾驰的杭州&#xff0c;网络疆域的每一次拓展都伴随着安全风险的增长。如何在创新与安全之间找到黄金平衡点&#xff1f;《杭州等保测评&#xff1a;守护网络安全的坚实屏障》一文&#xff0c;深入探索这座智慧城市如何依托等保测评体系&#xff0c;构建起一道道安…

【已EI检索会议】第五届新材料与清洁能源国际学术会议(ICAMCE 2024)

重要信息 会议官网&#xff1a;2024.icceam.com 接受/拒稿通知&#xff1a;投稿后1周内 收录检索&#xff1a;EI, Scopus 会议召开视频 见刊封面 EI检索页面 Scopus 检索页面 相关会议 第六届新材料与清洁能源国际学术会议&#xff08;ICAMCE 2025&#xff09; 大会官网&…