将前端文件从html目录迁移到views目录,按功能模块组织 重构认证中间件和路由处理,简化页面权限控制 更新静态资源引用路径,统一使用/public前缀 添加学生仪表板页面,优化移动端显示 移除旧版html和js文件,更新样式和脚本
343 lines
15 KiB
HTML
343 lines
15 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>摮衣<EFBFBD><EFBFBD>鞟貍蝞∠<EFBFBD>蝟餌<EFBFBD> - 蝞∠<E89D9E><E288A0>䀝貌銵冽踎</title>
|
||
<link rel="stylesheet" href="/public/css/style.css">
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
|
||
</head>
|
||
</head>
|
||
<body>
|
||
<!-- 憿園<E686BF>撖潸⏛<E6BDB8>?-->
|
||
<nav class="navbar">
|
||
<div class="navbar-brand">
|
||
<i class="fas fa-graduation-cap"></i>
|
||
<span>XX摮行嵗<EFBFBD>鞟貍蝞∠<EFBFBD>蝟餌<EFBFBD></span>
|
||
</div>
|
||
<div class="navbar-menu">
|
||
<a href="/" class="btn btn-secondary">
|
||
<i class="fas fa-home"></i> 銝駁△
|
||
</a>
|
||
<div class="navbar-user">
|
||
<span class="user-name" id="userName">蝞∠<EFBFBD><EFBFBD>?/span>
|
||
<button id="logoutBtn" class="btn btn-primary">
|
||
<i class="fas fa-sign-out-alt"></i> <20><><EFBFBD>? </button>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<!-- 隞芾”<E88ABE>踹捆<E8B8B9>?-->
|
||
<div class="dashboard-container">
|
||
<!-- 撌虫儒靘扯器<E689AF>?-->
|
||
<aside class="sidebar">
|
||
<div class="sidebar-header">
|
||
<div class="user-info">
|
||
<div class="user-avatar">
|
||
<i class="fas fa-user-shield"></i>
|
||
</div>
|
||
<div class="user-details">
|
||
<h3 id="adminName">蝞∠<EFBFBD><EFBFBD>?/h3>
|
||
<p>蝟餌<EFBFBD>蝞∠<EFBFBD><EFBFBD>?| <20><><EFBFBD>嚗?span id="adminRole">頞<>漣蝞∠<E89D9E><E288A0>?/span></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<ul class="sidebar-menu">
|
||
<li>
|
||
<a href="#" class="active">
|
||
<i class="fas fa-tachometer-alt"></i>
|
||
<span>隞芾”<EFBFBD>?/span>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="/admin/user_management">
|
||
<i class="fas fa-users"></i>
|
||
<span><EFBFBD>冽<EFBFBD>蝞∠<EFBFBD></span>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="/admin/student_management">
|
||
<i class="fas fa-user-graduate"></i>
|
||
<span>摮衣<EFBFBD>蝞∠<EFBFBD></span>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="teacher_management.html">
|
||
<i class="fas fa-chalkboard-teacher"></i>
|
||
<span><EFBFBD>坔<EFBFBD>蝞∠<EFBFBD></span>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="grade_statistics.html">
|
||
<i class="fas fa-chart-bar"></i>
|
||
<span><EFBFBD>鞟貍蝏蠘恣</span>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="system_settings.html">
|
||
<i class="fas fa-cog"></i>
|
||
<span>蝟餌<EFBFBD>霈曄蔭</span>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="data_export.html">
|
||
<i class="fas fa-download"></i>
|
||
<span><EFBFBD>唳旿撖澆枂</span>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="audit_log.html">
|
||
<i class="fas fa-history"></i>
|
||
<span><EFBFBD>滢<EFBFBD><EFBFBD>亙<EFBFBD></span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</aside>
|
||
|
||
<!-- 銝餃<E98A9D>摰孵躹 -->
|
||
<main class="main-content">
|
||
<div class="content-header">
|
||
<div>
|
||
<h1 class="page-title">蝞∠<EFBFBD><EFBFBD>䀝貌銵冽踎</h1>
|
||
<div class="breadcrumb">
|
||
<a href="/">銝駁△</a>
|
||
<i class="fas fa-chevron-right"></i>
|
||
<span>蝞∠<EFBFBD><EFBFBD>䀝貌銵冽踎</span>
|
||
</div>
|
||
</div>
|
||
<div class="current-time" id="currentTime"></div>
|
||
</div>
|
||
|
||
<!-- 蝏蠘恣<E8A098>∠<EFBFBD> -->
|
||
<div class="stats-grid">
|
||
<div class="stat-card">
|
||
<div class="stat-icon users">
|
||
<i class="fas fa-users"></i>
|
||
</div>
|
||
<div class="stat-content">
|
||
<div class="stat-value" id="totalUsers">1,248</div>
|
||
<div class="stat-label"><EFBFBD>餌鍂<EFBFBD>瑟㺭</div>
|
||
<div class="stat-change positive">
|
||
<i class="fas fa-arrow-up"></i> 12 <20>砍𪂹<E7A08D>啣<EFBFBD>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="stat-card">
|
||
<div class="stat-icon students">
|
||
<i class="fas fa-user-graduate"></i>
|
||
</div>
|
||
<div class="stat-content">
|
||
<div class="stat-value" id="totalStudents">3,567</div>
|
||
<div class="stat-label">摮衣<EFBFBD><EFBFBD>餅㺭</div>
|
||
<div class="stat-change positive">
|
||
<i class="fas fa-arrow-up"></i> 45 <20>砍𪂹<E7A08D>啣<EFBFBD>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="stat-card">
|
||
<div class="stat-icon teachers">
|
||
<i class="fas fa-chalkboard-teacher"></i>
|
||
</div>
|
||
<div class="stat-content">
|
||
<div class="stat-value" id="totalTeachers">128</div>
|
||
<div class="stat-label"><EFBFBD>坔<EFBFBD><EFBFBD>餅㺭</div>
|
||
<div class="stat-change">
|
||
<i class="fas fa-minus"></i> <20>惩<EFBFBD><E683A9>? </div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="stat-card">
|
||
<div class="stat-icon courses">
|
||
<i class="fas fa-book"></i>
|
||
</div>
|
||
<div class="stat-content">
|
||
<div class="stat-value" id="totalCourses">89</div>
|
||
<div class="stat-label">霂曄<EFBFBD><EFBFBD>餅㺭</div>
|
||
<div class="stat-change positive">
|
||
<i class="fas fa-arrow-up"></i> 3 <20>砍𪂹<E7A08D>啣<EFBFBD>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- <20>蠘<EFBFBD><E8A098>∠<EFBFBD> -->
|
||
<div class="function-grid">
|
||
<div class="function-card" onclick="window.location.href='user_management.html'">
|
||
<div class="function-icon">
|
||
<i class="fas fa-users"></i>
|
||
</div>
|
||
<h3 class="function-title"><EFBFBD>冽<EFBFBD>蝞∠<EFBFBD></h3>
|
||
<p class="function-description">
|
||
蝞∠<E89D9E><E288A0><EFBFBD><EFBFBD>厩鍂<E58EA9>瑁揭<E79181>瘀<EFBFBD><E79880><EFBFBD>𡠺瘛餃<E7989B><E9A483><EFBFBD><EFBFBD>颲㻫<E9A2B2><E3BBAB><EFBFBD><EFBFBD>斤鍂<E696A4>瘀<EFBFBD>霈曄蔭<E69B84>冽<EFBFBD>閫坿𠧧<E59DBF>峕<EFBFBD><E5B395>僐<EFBFBD>? </p>
|
||
<button class="btn btn-primary">餈𥕦<EFBFBD>蝞∠<EFBFBD></button>
|
||
</div>
|
||
|
||
<div class="function-card" onclick="window.location.href='student_management.html'">
|
||
<div class="function-icon">
|
||
<i class="fas fa-user-graduate"></i>
|
||
</div>
|
||
<h3 class="function-title">摮衣<EFBFBD>蝞∠<EFBFBD></h3>
|
||
<p class="function-description">
|
||
蝞∠<E89D9E>摮衣<E691AE>靽⊥<E99DBD>嚗<EFBFBD><E59A97><EFBFBD>砍郎蝐滨恣<E6BBA8><E681A3><EFBFBD><EFBFBD>号蝥批<E89DA5><E689B9>溻<EFBFBD><E6BABB>縑<EFBFBD>舐輕<E88890>文<EFBFBD><E69687>寥<EFBFBD>撖澆<E69296>撖澆枂<E6BE86>? </p>
|
||
<button class="btn btn-primary">餈𥕦<EFBFBD>蝞∠<EFBFBD></button>
|
||
</div>
|
||
|
||
<div class="function-card" onclick="window.location.href='teacher_management.html'">
|
||
<div class="function-icon">
|
||
<i class="fas fa-chalkboard-teacher"></i>
|
||
</div>
|
||
<h3 class="function-title"><EFBFBD>坔<EFBFBD>蝞∠<EFBFBD></h3>
|
||
<p class="function-description">
|
||
蝞∠<E89D9E><E288A0>坔<EFBFBD>靽⊥<E99DBD>嚗<EFBFBD><E59A97><EFBFBD>祆<EFBFBD>撣<EFBFBD><E692A3><EFBFBD>溻<EFBFBD><E6BABB>紋蝔见<E89D94><E8A781>鉝<EFBFBD><E9899D><EFBFBD><EFBFBD>鞱挽蝵桀<E89DB5>蝏拇<E89D8F><E68B87><EFBFBD>瓲<EFBFBD>? </p>
|
||
<button class="btn btn-primary">餈𥕦<EFBFBD>蝞∠<EFBFBD></button>
|
||
</div>
|
||
|
||
<div class="function-card" onclick="window.location.href='grade_statistics.html'">
|
||
<div class="function-icon">
|
||
<i class="fas fa-chart-bar"></i>
|
||
</div>
|
||
<h3 class="function-title"><EFBFBD>鞟貍蝏蠘恣</h3>
|
||
<p class="function-description">
|
||
<20>亦<EFBFBD><E4BAA6>冽嵗<E586BD>鞟貍蝏蠘恣嚗𣬚<E59A97><F0A3AC9A>𣂼<EFBFBD><F0A382BC>鞉𥁒<E99E89>𠺪<EFBFBD><F0A0BAAA>舀<EFBFBD><E88880>曇”撅閧內<E996A7>峕㺭<E5B395>桀紡<E6A180>箝<EFBFBD>? </p>
|
||
<button class="btn btn-primary"><EFBFBD>亦<EFBFBD>蝏蠘恣</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 蝟餌<E89D9F><E9A48C>嗆<EFBFBD>?-->
|
||
<div class="system-status">
|
||
<h2 class="section-title">
|
||
<i class="fas fa-server"></i>
|
||
蝟餌<E89D9F><E9A48C>嗆<EFBFBD>? </h2>
|
||
<div class="status-list">
|
||
<div class="status-item">
|
||
<div class="status-indicator online"></div>
|
||
<div>
|
||
<div class="status-label"><EFBFBD>唳旿摨𤘪<EFBFBD><EFBFBD>?/div>
|
||
<div class="status-value">餈鞱<EFBFBD>甇<EFBFBD>虜 | <20>滚<EFBFBD><E6BB9A>園𡢿: 12ms</div>
|
||
</div>
|
||
</div>
|
||
<div class="status-item">
|
||
<div class="status-indicator online"></div>
|
||
<div>
|
||
<div class="status-label">Web<EFBFBD>滚𦛚<EFBFBD>?/div>
|
||
<div class="status-value">餈鞱<EFBFBD>甇<EFBFBD>虜 | <20>函瑪<E587BD>冽<EFBFBD>: 156</div>
|
||
</div>
|
||
</div>
|
||
<div class="status-item">
|
||
<div class="status-indicator online"></div>
|
||
<div>
|
||
<div class="status-label"><EFBFBD><EFBFBD>辣摮睃<EFBFBD></div>
|
||
<div class="status-value">雿輻鍂<EFBFBD>? 65% | <20>拐<EFBFBD>: 35GB</div>
|
||
</div>
|
||
</div>
|
||
<div class="status-item">
|
||
<div class="status-indicator warning"></div>
|
||
<div>
|
||
<div class="status-label">憭<EFBFBD>遢<EFBFBD>滚𦛚</div>
|
||
<div class="status-value">銝𦠜活憭<EFBFBD>遢: 2憭拙<E686AD> | 撱箄悅蝡见朖憭<E69C96>遢</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- <20><>餈烐暑<E78390>?-->
|
||
<div class="recent-activities">
|
||
<h2 class="section-title">
|
||
<i class="fas fa-history"></i>
|
||
<20><>餈烐暑<E78390>? </h2>
|
||
<ul class="activity-list">
|
||
<li class="activity-item">
|
||
<div class="activity-icon">
|
||
<i class="fas fa-user-plus"></i>
|
||
</div>
|
||
<div class="activity-content">
|
||
<div class="activity-title"><EFBFBD>啣<EFBFBD>摮衣<EFBFBD><EFBFBD>冽<EFBFBD></div>
|
||
<div class="activity-time">10<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?| <20>滢<EFBFBD>鈭? 蝞∠<E89D9E><E288A0>?/div>
|
||
</div>
|
||
</li>
|
||
<li class="activity-item">
|
||
<div class="activity-icon">
|
||
<i class="fas fa-edit"></i>
|
||
</div>
|
||
<div class="activity-content">
|
||
<div class="activity-title">靽格㺿<EFBFBD>坔<EFBFBD>靽⊥<EFBFBD></div>
|
||
<div class="activity-time">1撠𤩺𧒄<EFBFBD>?| <20>滢<EFBFBD>鈭? 蝞∠<E89D9E><E288A0>?/div>
|
||
</div>
|
||
</li>
|
||
<li class="activity-item">
|
||
<div class="activity-icon">
|
||
<i class="fas fa-chart-bar"></i>
|
||
</div>
|
||
<div class="activity-content">
|
||
<div class="activity-title"><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鞟貍蝏蠘恣<EFBFBD>亙<EFBFBD></div>
|
||
<div class="activity-time">3撠𤩺𧒄<EFBFBD>?| <20>滢<EFBFBD>鈭? 蝟餌<E89D9F></div>
|
||
</div>
|
||
</li>
|
||
<li class="activity-item">
|
||
<div class="activity-icon">
|
||
<i class="fas fa-download"></i>
|
||
</div>
|
||
<div class="activity-content">
|
||
<div class="activity-title">撖澆枂<EFBFBD>冽<EFBFBD><EFBFBD>唳旿</div>
|
||
<div class="activity-time">5撠𤩺𧒄<EFBFBD>?| <20>滢<EFBFBD>鈭? 蝞∠<E89D9E><E288A0>?/div>
|
||
</div>
|
||
</li>
|
||
<li class="activity-item">
|
||
<div class="activity-icon">
|
||
<i class="fas fa-cog"></i>
|
||
</div>
|
||
<div class="activity-content">
|
||
<div class="activity-title">蝟餌<EFBFBD>霈曄蔭<EFBFBD>湔鰵</div>
|
||
<div class="activity-time">1憭拙<EFBFBD> | <20>滢<EFBFBD>鈭? 蝞∠<E89D9E><E288A0>?/div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</main>
|
||
</div>
|
||
|
||
<script>
|
||
// <20>湔鰵敶枏<E695B6><E69E8F>園𡢿
|
||
function updateCurrentTime() {
|
||
const now = new Date();
|
||
const options = {
|
||
year: 'numeric',
|
||
month: 'long',
|
||
day: 'numeric',
|
||
weekday: 'long',
|
||
hour: '2-digit',
|
||
minute: '2-digit',
|
||
second: '2-digit'
|
||
};
|
||
document.getElementById('currentTime').textContent = now.toLocaleDateString('zh-CN', options);
|
||
}
|
||
|
||
// 憿菟𢒰<E88F9F>㰘蝸<E3B098>嗅<EFBFBD>憪见<E686AA>
|
||
document.addEventListener('DOMContentLoaded', function() {
|
||
updateCurrentTime();
|
||
setInterval(updateCurrentTime, 1000);
|
||
|
||
// <20><><EFBFBD>箇蒈敶? document.getElementById('logoutBtn').addEventListener('click', function() {
|
||
if (confirm('蝖桀<E89D96>閬<EFBFBD><E996AC><EFBFBD><EFBFBD>箇蒈敶訫<E695B6>嚗?)) {
|
||
// 皜<>膄<EFBFBD>餃<EFBFBD><E9A483>嗆<EFBFBD>? localStorage.removeItem('token');
|
||
localStorage.removeItem('userRole');
|
||
localStorage.removeItem('userInfo');
|
||
|
||
// 頝唾蓮<E594BE>啁蒈敶閖△<E99696>? window.location.href = 'login.html';
|
||
}
|
||
});
|
||
|
||
// <20>㰘蝸<E3B098>冽<EFBFBD>靽⊥<E99DBD>
|
||
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}');
|
||
if (userInfo.name) {
|
||
document.getElementById('adminName').textContent = userInfo.name;
|
||
document.getElementById('userName').textContent = userInfo.name;
|
||
}
|
||
});
|
||
</script>
|
||
</body>
|
||
</html>
|