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>

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

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

相关文章

java云原生实战之graalvm 环境安装

windows环境安装 在Windows环境下安装GraalVM并启用原生镜像功能时&#xff0c;需要Visual Studio的组件支持。具体要点如下&#xff1a; 核心依赖&#xff1a; 需要安装Visual Studio 2022或更新版本&#xff0c;并确保勾选以下组件&#xff1a; "使用C的桌面开发"…

Flask-SQLAlchemy_数据库配置

1、基本概念&#xff08;SQLAlchemy与Flask-SQLAlchemy&#xff09; SQLAlchemy 是 Python 生态中最具影响力的 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;其设计理念强调 “框架无关性”&#xff0c;支持在各类 Python 项目中独立使用&#xff0c;包括 Flask、D…

MySQL高可用架构:复制与集群实战指南

引言 各位数据库爱好者们好&#xff01;今天我们要深入探讨MySQL高可用架构的核心技术——复制与集群 &#x1f3d7;️。在现代互联网应用中&#xff0c;数据库的高可用性就像建筑物的抗震设计一样重要&#xff0c;直接决定了系统的稳定性和可靠性。本教程将从主从复制原理讲起…

【物联网】基于树莓派的物联网开发【6】——汉化+字体库输入法安装

树莓派系统默认是英文&#xff0c;面向智能设备控制终端或物联网开发场景&#xff0c;需支持中文日志显示与本地化交互。 系统汉化 &#xff08;1&#xff09;输入命令sudo raspi-config,然后选择 Localisation 回车 &#xff08;2&#xff09;选择 locale 回车 &#xff0…

python新手学习笔记①

本笔记是根据Bilibili里的【3小时超快速入门Python | 动画教学【2025新版】【自学Python教程】【零基础Python】【计算机二级Python】【Python期末速成】】 https://www.bilibili.com/video/BV1Jgf6YvE8e/这个视频合集制作的代码笔记&#xff01; 1.字符串连接 运行结果 2.…

当通过PHP在线修改文件数组遇到不能及时生效问题

当你通过PHP在线修改文件中的数组(比如配置文件、缓存文件等)后,发现修改不能及时生效,常见原因和解决办法如下: 1. 缓存未刷新 问题描述:PHP应用通常会对配置、数据等做缓存(如Redis、Memcached、OPcache、文件缓存等),导致你修改了文件但实际运行时还是旧内容。解决…

LLaMA-Adapter

一、技术背景与问题 1.1 传统方法的数学局限 二、LLaMA-Adapter 核心技术细节 2.1 Learnable Adaption Prompts 的设计哲学 这种零初始化注意力机制的目的是在训练初期稳定梯度,避免由于随机初始化的适配提示带来的不稳定因素。通过门控因子gl​的自适应调整,在训…

以太联Intellinet带您深度解析PoE交换机的上行链路端口(Uplink Ports)

在当今网络技术日新月异的时代&#xff0c;以太网供电(PoE)交换机已然成为现代网络连接解决方案中不可或缺的“利器”。它不仅能够出色地完成数据传输任务&#xff0c;还能为所连接的设备提供电力支持&#xff0c;彻底摆脱了单独电源适配器的束缚&#xff0c;让网络部署更加简洁…

Linux服务器安全如何加固?禁用不必要的服务与端口如何操作?

保护Linux服务器的安全性对于确保系统的稳定性和数据的保密性至关重要。加固Linux服务器的安全性包括禁用不必要的服务和端口&#xff0c;以减少潜在的攻击面。本文将探讨如何加固Linux服务器的安全性&#xff0c;具体介绍如何禁用不必要的服务和端口&#xff0c;从而提高服务器…

RabbitMQ的核心原理及应用

在分布式系统架构中&#xff0c;消息中间件是实现服务解耦、流量缓冲的关键组件。RabbitMQ 作为基于 AMQP 协议的开源消息代理&#xff0c;凭借高可靠性、灵活路由和跨平台特性&#xff0c;被广泛应用于企业级开发和微服务架构中。本文将系统梳理 RabbitMQ 的核心知识&#xff…

WPF MVVM Community Toolkit. Mvvm 社区框架

Community Toolkit. Mvvm 社区框架 微软官方文档 主要内容&#xff1a;CommunityToolkit.Mvvm 框架 概念&#xff0c;安装&#xff0c;使用&#xff08;重要API&#xff1a;ObservableObject&#xff0c;RelayCommand&#xff09;源生成器&#xff08;[ObservableProperty]&…

Mcu_Bsdiff_Upgrade

系统架构 概述 MCU BSDiff 升级系统通过使用二进制差分技术&#xff0c;提供了一种在资源受限的微控制器上进行高效固件更新的机制。系统不传输和存储完整的固件映像&#xff0c;而是只处理固件版本之间的差异&#xff0c;从而显著缩小更新包并降低带宽要求。 该架构遵循一个…

vscode连接WSL卡住

原因&#xff1a;打开防火墙 解决&#xff1a; 使用sudo ufw disable关闭防火墙

FreeSWITCH rtcp-mux 测试

rtcp 跟 rtp 占用同一个端口&#xff0c;这就是 rtcp 复用 Fs 呼出是这样的&#xff1a; originate [rtcp_muxtrue][rtcp_audio_interval_msec5000]user/1001 &echo 需要同时指定 rtcp_audio_interval_msec&#xff0c;否则 rtcp_mux 不能生效 Fs 呼入不需要配置&#xf…

CI/CD的演进之路

CI/CD的演进之路 一、CI/CD的成长演变 早期起源与初步实践&#xff1a;CI/CD的概念可以追溯到软件开发的早期阶段&#xff0c;但真正开始受到关注是在敏捷开发方法兴起之后。在传统的瀑布模型开发模式下&#xff0c;软件开发周期长、发布频率低&#xff0c;更新往往需要数月甚…

Docker 镜像打包到本地

保存镜像 使用 docker save 命令将镜像保存为一个 tar 文件。命令格式如下&#xff1a; docker save [options] IMAGE [IMAGE...]示例&#xff1a;docker save -o centos.tar centos:latest--output 或 -o&#xff1a;将输出保存到指定的文件中。 加载镜像 如果需要在其他机器…

在 Excel xll 自动注册操作 中使用东方仙盟软件2————仙盟创梦IDE

// 获取当前工作表名称string sheetName (string)XlCall.Excel(XlCall.xlfGetDocument, 7);// 构造动态名称&#xff08;例如&#xff1a;Sheet1!MyNamedCell&#xff09;string fullName $"{sheetName}!MyNamedCell";// 获取引用并设置值var namedRange (ExcelRe…

云计算与大数据进阶 | 28、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(下)

在上篇中&#xff0c;我们围绕存储系统可扩展架构详细探讨了基础技术原理与典型实践。然而&#xff0c;在实际应用场景中&#xff0c;存储系统面临的挑战远不止于此。随着数据规模呈指数级增长&#xff0c;业务需求日益复杂多变&#xff0c;存储系统还需不断优化升级&#xff0…

从0到1打造AI Copilot:用SpringBoot + ChatGPT API实现智能开发助手

本文将从0到1系统性地讲解如何基于SpringBoot与OpenAI ChatGPT API打造一款智能开发助手&#xff08;AI Copilot&#xff09;。文章首先介绍AI Copilot的背景与价值&#xff0c;接着深入架构设计与环境准备&#xff0c;然后通过详尽的代码示例演示SpringBoot项目的搭建、依赖配…

C# AI(Trae工具+claude3.5-sonnet) 写前后端

这是一个AI 写的前后端分离项目,通过AI编程&#xff0c;开发电商管理系统&#xff08;登陆、注册&#xff09; 使用的AI工具为 Trae工具(字节国际版)claude3.5-sonnet(目前代码最强模型) 前端为 vue3Bootstrap 后端为 C# net5.0(因为我电脑里面已经安装了这个新版更好) do…