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

Vue3+ElementPlus 开箱即用后台管理系统,支持白天黑夜主题切换,通用管理组件,

        Vue3+ElementPlus后台管理系统,支持白天黑夜主题切换,专为教育管理场景设计。主要功能包括用户管理(管理员、教师、学生)、课件资源管理(课件列表、下载中心)和数据统计(使用情况、教学效率等)。系统采用响应式布局,内置智能主题切换功能,可自动保存用户偏好。基于Vue3组合式API开发,TypeScript支持,组件化架构易于扩展,适合各类教育管理平台快速搭建

拿走请记得给我点赞加关注!!!

<template><el-container class="root-container" :class="{ 'dark-mode': isDarkMode }"><!-- 侧边栏 --><el-aside width="250px" class="sidebar"><div class="logo-container"><img:src="logoImage"alt="Logo"class="logo-img"/></div><el-menu:default-active="$route.path"class="el-menu-vertical-demo":active-text-color="isDarkMode ? '#409EFF' : '#2a3643'":background-color="isDarkMode ? '#2a3643' : '#ffffff'":text-color="isDarkMode ? '#ffffff' : '#2a3643'"router><!-- 用户管理菜单 --><el-sub-menu index="1"><template #title><el-icon><User /></el-icon><span>用户管理</span></template><el-menu-item index="/user/admin"><el-icon><User /></el-icon><span>管理员</span></el-menu-item><el-menu-item index="/user/teacher"><el-icon><Avatar /></el-icon><span>教师</span></el-menu-item><el-menu-item index="/user/student"><el-icon><School /></el-icon><span>学生</span></el-menu-item></el-sub-menu><!-- 课件资源管理菜单 --><el-sub-menu index="2"><template #title><el-icon><Folder /></el-icon><span>课件资源管理</span></template><el-menu-item index="/resource/list"><el-icon><List /></el-icon><span>课件列表</span></el-menu-item><el-menu-item index="/resource/download"><el-icon><Download /></el-icon><span>课件下载中心</span></el-menu-item></el-sub-menu><!-- 数据统计菜单 --><el-sub-menu index="3"><template #title><el-icon><DataAnalysis /></el-icon><span>数据统计</span></template><el-menu-item index="/dashboard/overview"><el-icon><Monitor /></el-icon><span>大屏概览</span></el-menu-item><el-menu-item index="/stats/teacher-usage"><el-icon><User /></el-icon><span>教师使用次数统计</span></el-menu-item><el-menu-item index="/stats/student-usage"><el-icon><School /></el-icon><span>学生使用次数统计</span></el-menu-item><el-menu-item index="/stats/teaching-efficiency"><el-icon><PieChart /></el-icon><span>教学效率指数</span></el-menu-item><el-menu-item index="/stats/learning-effect"><el-icon><TrendCharts /></el-icon><span>学生学习效果</span></el-menu-item></el-sub-menu></el-menu></el-aside><!-- 主体区域 --><el-container><!-- 顶部导航 --><el-header class="header"><h1 class="header-title"></h1><div class="header-right"><el-inputv-model="searchText"placeholder="Search for something..."prefix-icon="Search"class="search-input"/><el-icon class="header-icon"><Search /></el-icon><el-icon class="header-icon"><Bell /></el-icon><el-switchv-model="isDarkMode"inline-prompt:active-icon="Moon":inactive-icon="Sunny"style="margin-right: 10px"/><el-dropdown><el-avatarsize="small":src="'https://ai-public.mastergo.com/ai/img_res/de3f08ed1935c2e296ca6111c0906527.jpg'"/><template #dropdown><el-dropdown-menu><el-dropdown-item>个人中心</el-dropdown-item><el-dropdown-item @click="logout">退出登录</el-dropdown-item></el-dropdown-menu></template></el-dropdown></div></el-header><!-- 内容区插槽 --><el-main class="main-content"><router-view></router-view></el-main></el-container></el-container>
</template><script setup lang="ts">
import {Document,Search,Bell,Sunny,Moon, User, Avatar, UserFilled, DataAnalysis, School, Folder, List, Download, Monitor, TrendCharts, PieChart
} from '@element-plus/icons-vue'
import { ref, watch, computed } from 'vue'
import { useRoute } from 'vue-router'
// 导入两种主题的logo图片const route = useRoute()
const searchText = ref('')
const isDarkMode = ref(false)import logoDark from '@/assets/慧教引擎.png'
import logoLight from '@/assets/慧教引擎(白天版).png'const logoImage = computed(() => {return isDarkMode.value ? logoDark : logoLight
})
// 监听模式变化
watch(isDarkMode, (newVal) => {if (newVal) {document.documentElement.classList.add('dark')} else {document.documentElement.classList.remove('dark')}// 保存到本地存储localStorage.setItem('darkMode', String(newVal))
})// 初始化时检查本地存储
const initDarkMode = () => {const savedMode = localStorage.getItem('darkMode')if (savedMode === 'true') {isDarkMode.value = truedocument.documentElement.classList.add('dark')}
}
initDarkMode()const logout = () => {console.log('退出登录')
}
</script><style scoped>/* 侧边栏样式调整 */
.sidebar {background: v-bind('isDarkMode ? "#283042" : "#3f9dfd"');transition: background-color 0.3s;
}.el-menu {border-right: none;
}/* 子菜单样式 */
.el-sub-menu .el-menu-item {padding-left: 50px !important;background-color: v-bind('isDarkMode ? "#1e2430" : "#3688e8"');
}.el-sub-menu .el-menu-item:hover {background-color: v-bind('isDarkMode ? "#2d3648" : "#4aa0ff"') !important;
}.el-sub-menu .el-menu-item.is-active {background-color: v-bind('isDarkMode ? "#409EFF" : "#2a7de9"');color: white;
}/* 菜单图标样式 */
.el-menu-item [class^="el-icon"],
.el-sub-menu [class^="el-icon"] {font-size: 18px;margin-right: 10px;
}
.root-container {height: 100vh;width: 100%;margin: 0;padding: 0;transition: background-color 0.3s, color 0.3s;}.sidebar {background: v-bind('isDarkMode ? "#283042" : "#3f9dfd"');margin: 0;padding: 0;transition: background-color 0.3s;color: #3f9dfd;
}.logo-container {display: flex;align-items: center;padding: 20px;height: 60px;
}.logo-img {width: 150px;height: 110px;transition: opacity 0.3s ease;
}.el-menu {background: v-bind('isDarkMode ? "#283042" : "#3f9dfd"');border-right: none;transition: background-color 0.3s;color: #9dd5d8;
}.el-menu-item {color: v-bind('isDarkMode ? "#ffffff" : "#2a3643"');display: flex;padding: 0 36px !important;transition: background-color 0.3s, color 0.3s;
}.el-menu-item .el-icon {margin-right: 8px;
}.el-menu-item:hover {background-color: v-bind('isDarkMode ? "#3a495a" : "#f5f7fa"');
}.header {display: flex;justify-content: space-between;align-items: center;padding: 0 20px;height: 60px;border-bottom: 1px solid v-bind('isDarkMode ? "#3a495a" : "#e6e6e6"');background-color: v-bind('isDarkMode ? "#2a3643" : "#ffffff"');transition: background-color 0.3s, border-color 0.3s;
}.header-title {font-size: 18px;margin: 0;color: v-bind('isDarkMode ? "#ffffff" : "#2a3643"');
}.header-right {display: flex;align-items: center;gap: 20px;
}.search-input {width: 200px;
}.header-icon {font-size: 18px;cursor: pointer;color: v-bind('isDarkMode ? "#ffffff" : "#606266"');
}/*内容区样式*/
.main-content {padding: 20px;background-color: v-bind('isDarkMode ? "#1a2029" : "#f5f7fa"');color: v-bind('isDarkMode ? "#ffffff" : "#2a3643"');transition: background-color 0.3s, color 0.3s;
}/* 搜索框容器样式 */
.search-container {position: relative;display: flex;align-items: center;
}/* 搜索输入框基础样式 */
.search-input {width: 180px;transition: width 0.3s;
}/* 搜索框悬停状态 */
.search-input:hover {width: 220px;
}/* 深度选择器修改Element Plus输入框内部样式 */
.search-input :deep(.el-input__wrapper) {padding-right: 30px;background-color: v-bind('isDarkMode ? "#3a495a" : "#f5f7fa"');border-radius: 20px;transition: background-color 0.3s;
}.search-input :deep(.el-input__inner) {color: v-bind('isDarkMode ? "#ffffff" : "#2a3643"');
}/* 搜索图标样式 */
.search-icon {position: absolute;color: v-bind('isDarkMode ? "#ffffff" : "#909399"');cursor: pointer;
}/* 顶部导航图标基础样式 */
.header-icon {font-size: 28px;color: v-bind('isDarkMode ? "#ffffff" : "#606266"');padding: 5px;border-radius: 50%;transition: background-color 0.3s;
}/* 顶部导航图标悬停状态 */
.header-icon:hover {background-color: v-bind('isDarkMode ? "#3a495a" : "#f0f2f5"');
}/* 全局暗色模式样式 */
:root.dark {--el-color-primary: #409EFF;--el-color-primary-light-3: #3375b9;--el-color-primary-light-5: #2a598a;--el-color-primary-light-7: #213d5b;--el-color-primary-light-8: #1d3043;--el-color-primary-light-9: #18222c;--el-color-primary-dark-2: #66b1ff;
}
</style>

相关文章:

Vue3+ElementPlus 开箱即用后台管理系统,支持白天黑夜主题切换,通用管理组件,

Vue3ElementPlus后台管理系统&#xff0c;支持白天黑夜主题切换&#xff0c;专为教育管理场景设计。主要功能包括用户管理&#xff08;管理员、教师、学生&#xff09;、课件资源管理&#xff08;课件列表、下载中心&#xff09;和数据统计&#xff08;使用情况、教学效率等&am…...

AI大模型应用之评测篇

在看到公司对于AI 工程师 的岗位要求 &#xff1a;“能够熟练使用各种自动化评测工具与方法&#xff0c;对AI 模型的输出进行有效评估” 时&#xff0c;其实比较疑惑&#xff0c;这个是对大模型能力例如像Deepseek ,GPT-4 ,千问&#xff0c;LLAMA这些模型的能力评测&#xff0c…...

力扣小题, 力扣113.路径总和II力扣.111二叉树的最小深度 力扣.221最大正方形力扣5.最长回文子串更加优秀的算法:中心扩展算法

目录 力扣113.路径总和II 力扣.111二叉树的最小深度 力扣.221最大正方形 力扣5.最长回文子串 更加优秀的算法:中心扩展算法 力扣113.路径总和II 这道题&#xff0c;让我明白回溯了到底啥意思 之前我找的时候&#xff0c;我一直在想&#xff0c;如果可以&#xff0c;请你对比…...

el-form elform 对齐方式调整

如下页面表单&#xff0c;展示后就很丑。 页面表单&#xff0c;有时候我们想着最左侧的应该合理整齐的左对齐&#xff0c;右侧的表单都是右对齐&#xff0c;这样页面看起来会整洁很多。 <el-form class"w-100 a_form" style"padding: 0 15px 0px 15px"…...

JESD204 ip核使用与例程分析(二)

JESD204 ip核使用与例程分析(二) JESD204时钟方案专用差分时钟对例程分析jesd204_0_transport_layer_demapperjesd204_0_sig_chkjesd204_0_clockingjesd204_0 ip核port寄存器AXI-LITE寄存器配置jesd204_phy ip核JESD204时钟方案 图3-1所示为最通用、灵活的时钟解决方案。在图…...

Linux shell 正则表达式高效使用

Linux正则表达式高效使用教程 正则表达式是Linux命令行中强大的文本处理工具&#xff0c;能够极大提高搜索和匹配效率。下面为新手提供一个简单教程&#xff0c;介绍如何在grep和find命令中使用正则表达式。 使用建议&#xff1a;使用grep时要加-E选项使其支持扩展正则表达式&…...

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Blurry Loading (毛玻璃加载)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— Blurry Loading 组件 仓库地址&#xff1a;https://github.com/SunACong/50-vue-projects 项目预览地址&#xff1a;https://50-vue-projects.vercel.app/ ✨ 组件目标 实现一个加载进度条&#xff0c;随着加载进度的…...

C#中的ThreadStart委托

ThreadStart 委托&#xff1a; ThreadStart 是 .NET 中的一个内置委托类型&#xff0c;表示无参数且无返回值的方法。其定义如下&#xff1a; public delegate void ThreadStart(); 通常用于定义线程的入口方法。 List<ThreadStart>&#xff1a; 这是一个泛型集合&…...

GPU加速Kubernetes集群助力音视频转码与AI工作负载扩展

容器编排与GPU计算的结合&#xff0c;为追求性能优化的企业开辟了战略转型的新路径 基于GPU的托管Kubernetes集群不仅是技术选择&#xff0c;更是彻底改变企业处理高负载任务的战略部署方式。 随着人工智能和机器学习项目激增、实时数据处理需求的剧增&#xff0c;以及高性能媒…...

LeetCode[222]完全二叉树的节点个数

思路&#xff1a; 这个节点个数可以使用递归左儿子个数递归右儿子个数1&#xff0c;这个1是根节点&#xff0c;最后结果为节点个数&#xff0c;但我们没有练习到完全二叉树的性质. 完全二叉树的性质是&#xff1a;我简单说一下&#xff0c;大概就是其他节点都满了&#xff0c;就…...

DPDK 技术详解:榨干网络性能的“瑞士军刀”

你是否曾感觉&#xff0c;即使拥有顶级的服务器和万兆网卡&#xff0c;你的网络应用也总是“喂不饱”硬件&#xff0c;性能总差那么一口气&#xff1f;传统的网络处理方式&#xff0c;就像在高速公路上设置了太多的收费站和检查点&#xff0c;限制了数据包的“奔跑”速度。 今…...

anaconda的c++环境与ros2需要的系统变量c++环境冲突

在conda虚拟环境中运行有ros2的代码报错 ImportError: /home/user/anaconda3/envs/myenv/bin/../lib/libstdc.so.6: version GLIBCXX_3.4.30 not found(required by /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.…...

Docker 疑难杂症解决指南大纲

一、Docker 基础问题排查 Docker 服务无法启动 错误提示:Cannot connect to the Docker daemon 可能原因:Docker 服务未运行、权限问题、端口冲突。 解决方案: 检查服务状态:systemctl status docker 重启服务:systemctl restart docker 用户权限:将用户加入 docker 组。…...

深入解析Spring Boot与Kafka集成:构建高效消息驱动微服务

深入解析Spring Boot与Kafka集成&#xff1a;构建高效消息驱动微服务 引言 在现代微服务架构中&#xff0c;消息队列是实现服务解耦和异步通信的重要组件。Apache Kafka作为分布式流处理平台&#xff0c;因其高吞吐量、低延迟和可扩展性&#xff0c;成为企业级应用的首选。本…...

Python 实现web请求与响应

目录 一、什么是web 请求与响应&#xff1f; 1、Web 请求 2、web 响应 3、HTTP协议概述 4、常见的HTTP状态码包括 二、Python 的requests库 1、安装requests库 2、发送GET请求 3、发送POST请求 4、处理响应头和状态码 5、发送带查询参数的GET请求 6、发送带表单数据…...

演示:【WPF-WinCC3D】 3D工业组态监控平台源代码

一、目的&#xff1a;分享一个应用WPF 3D开发的3D工业组态监控平台源代码 二、功能介绍 WPF-WinCC3D是基于 WPF 3D研发的工业组态软件&#xff0c;提供将近200个预置工业模型&#xff08;机械手臂、科幻零部件、熔炼生产线、机加生产线、管道等&#xff09;&#xff0c;支持组态…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】1.4 数据库与表的基本操作(DDL/DML语句)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 1.4 数据库与表的基本操作&#xff08;DDL/DML语句&#xff09;1.4.1 数据库生命周期管理&#xff08;DDL核心&#xff09;1.4.1.1 创建数据库&#xff08;CREATE DATABASE&…...

CUDA加速的线性代数求解器库cuSOLVER

cuSOLVER是NVIDIA提供的GPU加速线性代数库&#xff0c;专注于稠密和稀疏矩阵的高级线性代数运算。它建立在cuBLAS和cuSPARSE之上&#xff0c;提供了更高级的线性代数功能。 cuSOLVER主要功能 1. 稠密矩阵运算 矩阵分解: LU分解 (gesvd) QR分解 (geqrf) Cholesky分解 (potrf…...

Oracle 物理存储与逻辑管理

1. 表空间&#xff08;Tablespace&#xff09; 定义&#xff1a; 表空间是Oracle中最高级别的逻辑存储容器&#xff0c;由一个或多个物理数据文件&#xff08;Datafile&#xff09;组成。所有数据库对象&#xff08;如表、索引&#xff09;的逻辑存储均属于某个表空间。 类型与…...

vscode优化使用体验篇(快捷键)

本文章持续更新中 最新更新时间为2025-5-18 1、方法查看方法 1.1当前标签跳到新标签页查看方法实现 按住ctrl 鼠标左键点击方法。 1.2使用分屏查看方法实现(左右分屏) 按住ctrl alt 鼠标左键点击方法。...

如何在电脑上登录多个抖音账号?多开不同IP技巧分解

随着短视频的爆发式增长&#xff0c;抖音已经成为许多人生活和工作的必备平台。不论是个人内容创作者、品牌商家&#xff0c;还是营销人员&#xff0c;都可能需要管理多个抖音账号。如何在电脑上同时登录多个抖音账号&#xff0c;提升工作效率&#xff0c;避免频繁切换账号的麻…...

【东枫科技】usrp rfnoc 开发环境搭建

作者 太原市东枫电子科技有限公司 &#xff0c;代理销售 USRP&#xff0c;Nvidia&#xff0c;等产品与技术支持&#xff0c;培训服务。 环境 Ubuntu 20.04 依赖包 sudo apt-get updatesudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils …...

【JAVA资料,C#资料,人工智能资料,Python资料】全网最全编程学习文档合集,从入门到全栈,保姆级整理!

文章目录 前言一、编程学习前的准备​1.1 明确学习目标​1.2 评估自身基础​ 二、编程语言的选择​2.1 热门编程语言介绍​2.2 如何根据目标选择语言​ 三、编程基础学习​3.1 变量与数据类型​3.2 控制结构​3.3 函数​ 四、面向对象编程&#xff08;OOP&#xff09;​4.1 OOP…...

[IMX] 05.串口 - UART

目录 1.通信格式 2.电平标准 3.IMX UART 模块 4.时钟寄存器 - CCM_CSCDR1 5.控制寄存器 5.1.UART_UCR1 5.2.UART_UCR2 5.3.UART_UCR3 6.状态寄存器 6.1.UART_USR1 6.2.UART_USR2 7.FIFO 控制寄存器 - UART_UFCR 8.波特率寄存器 8.1.分母 - UART_UBIR 8.2.分子 -…...

使用Tkinter写一个发送kafka消息的工具

文章目录 背景工具界面展示功能代码讲解运行环境创建GUI程序搭建前端样式编写功能实现代码 背景 公司是做AR实景产品的&#xff0c;近几年无人机特别的火&#xff0c;一来公司比较关注低空经济这个新型领域&#xff0c;二来很多政企、事业单位都采购了无人机用于日常工作。那么…...

MongoDB 与 EF Core 深度整合实战:打造结构清晰的 Web API 应用

题纲 MongoDB 字符串连接 URIC# 连接字符串实例 实现一个电影信息查询 demo创建项目创建实体实现 DbContext 上下文仓储实现服务实现控制器实现服务注册快照注入数据库连接配置1. 注册配置类2. 注入 IOptionsSnapshot<MongoDbSettings>3. 配置文件 appsettings.json 示例…...

JAVA|后端编码规范

目录 零、引言 一、基础 二、集合 三、并发 四、日志 五、安全 零、引言 规范等级&#xff1a; 【强制】&#xff1a;强制遵守&#xff0c;来源于线上历史故障&#xff0c;将通过工具进行检查。【推荐】&#xff1a;推荐遵守&#xff0c;来源于日常代码审查、开发人员反馈…...

重写B站(网页、后端、小程序)

1. 网页端 1.1 框架 Vue ElementUI axios 1.2 框架搭建步骤 搭建Vue 1.3 配置文件 main.js import {createApp} from vue import ElementUi from element-plus import element-plus/dist/index.css; import axios from "axios"; import router from…...

文档债务拖累交付速度?5大优化策略文档自动化

开发者在追求开发速度的过程中&#xff0c;往往会忽视文档的编写&#xff0c;如省略设计文档、代码注释或API文档等。这种做法往往导致在后期调试阶段需要花费三倍以上的时间来理解代码逻辑&#xff0c;进而形成所谓的文档债务&#xff0c;严重拖累交付速度并造成资源浪费。而积…...

【数据结构与算法】LeetCode 每日三题

如果你已经对数据结构与算法略知一二&#xff0c;现在正在复习数据结构与算法的一些重点知识 ------------------------------------------------------------------------------------------------------------------------- 关注我&#x1f308;&#xff0c;每天更新总结文章…...