前端修复,日志功能加入

This commit is contained in:
Zzzz
2026-04-28 18:26:28 +08:00
parent dc192e8223
commit cc32c222a4
35 changed files with 874 additions and 132 deletions
+60 -37
View File
@@ -1,83 +1,102 @@
<%@ page pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<header class="app-header">
<header class="app-header ${not empty sessionScope.authenticatedUser ? 'app-header-auth' : 'app-header-public'}">
<c:choose>
<c:when test="${not empty sessionScope.authenticatedUser}">
<c:set var="currentUri" value="${pageContext.request.requestURI}" />
<aside class="app-sidebar" aria-label="主导航">
<a class="sidebar-brand" href="${pageContext.request.contextPath}/dashboard">
<span class="brand-mark" aria-hidden="true">书</span>
<span>图书管理系统</span>
<span class="brand-text">图书管理系统</span>
</a>
<section class="role-workbench" aria-label="角色工作台">
<p class="sidebar-section-title">角色工作台</p>
<c:if test="${sessionScope.userRole == 'administrator'}">
<a class="role-chip role-chip-admin" href="${pageContext.request.contextPath}/admin/home">
<span aria-hidden="true">管</span>
<strong>管理员</strong>
<small>/admin/home</small>
<span class="role-chip-icon" aria-hidden="true">管</span>
<span class="role-chip-copy">
<strong>管理员</strong>
<small>系统管理</small>
</span>
</a>
</c:if>
<c:if test="${sessionScope.userRole == 'administrator' or sessionScope.userRole == 'librarian'}">
<a class="role-chip role-chip-librarian" href="${pageContext.request.contextPath}/librarian/home">
<span aria-hidden="true">馆</span>
<strong>馆员</strong>
<small>/librarian/home</small>
<span class="role-chip-icon" aria-hidden="true">馆</span>
<span class="role-chip-copy">
<strong>馆员</strong>
<small>流通工作</small>
</span>
</a>
</c:if>
<c:if test="${sessionScope.userRole == 'reader'}">
<a class="role-chip role-chip-reader" href="${pageContext.request.contextPath}/reader/home">
<span class="role-chip-icon" aria-hidden="true">读</span>
<span class="role-chip-copy">
<strong>读者</strong>
<small>自助服务</small>
</span>
</a>
</c:if>
<a class="role-chip role-chip-reader" href="${pageContext.request.contextPath}/reader/home">
<span aria-hidden="true">读</span>
<strong>读者</strong>
<small>/reader/home</small>
</a>
</section>
<nav class="side-nav" aria-label="模块导航">
<a class="side-nav-link ${fn:contains(currentUri, '/dashboard') ? 'is-active' : ''}"
href="${pageContext.request.contextPath}/dashboard">
<span aria-hidden="true">台</span>工作台
<span class="nav-icon" aria-hidden="true">台</span>
<span class="nav-text">工作台</span>
</a>
<a class="side-nav-link ${fn:contains(currentUri, '/catalog') ? 'is-active' : ''}"
href="${pageContext.request.contextPath}/catalog">
<span aria-hidden="true">搜</span>馆藏检索
<span class="nav-icon" aria-hidden="true">搜</span>
<span class="nav-text">馆藏检索</span>
</a>
<c:if test="${sessionScope.userRole == 'administrator' or sessionScope.userRole == 'librarian'}">
<a class="side-nav-link ${fn:contains(currentUri, '/books') ? 'is-active' : ''}"
href="${pageContext.request.contextPath}/books">
<span aria-hidden="true">书</span>图书管理
<span class="nav-icon" aria-hidden="true">书</span>
<span class="nav-text">图书管理</span>
</a>
<a class="side-nav-link ${fn:contains(currentUri, '/book-categories') ? 'is-active' : ''}"
href="${pageContext.request.contextPath}/book-categories">
<span aria-hidden="true">类</span>图书分类管理
<span class="nav-icon" aria-hidden="true">类</span>
<span class="nav-text">图书分类管理</span>
</a>
<a class="side-nav-link ${fn:contains(currentUri, '/readers') ? 'is-active' : ''}"
href="${pageContext.request.contextPath}/readers">
<span aria-hidden="true">人</span>读者管理
<span class="nav-icon" aria-hidden="true">人</span>
<span class="nav-text">读者管理</span>
</a>
<a class="side-nav-link ${fn:contains(currentUri, '/borrowing') ? 'is-active' : ''}"
href="${pageContext.request.contextPath}/borrowing">
<span aria-hidden="true">借</span>借阅流通
<span class="nav-icon" aria-hidden="true">借</span>
<span class="nav-text">借阅流通</span>
</a>
<a class="side-nav-link ${fn:contains(currentUri, '/reports') ? 'is-active' : ''}"
href="${pageContext.request.contextPath}/reports">
<span aria-hidden="true">报</span>报表中心
<span class="nav-icon" aria-hidden="true">报</span>
<span class="nav-text">报表中心</span>
</a>
</c:if>
<c:if test="${sessionScope.userRole == 'reader'}">
<a class="side-nav-link ${fn:contains(currentUri, '/reader/loans') ? 'is-active' : ''}"
href="${pageContext.request.contextPath}/reader/loans">
<span aria-hidden="true">历</span>读者借阅历史
<span class="nav-icon" aria-hidden="true">历</span>
<span class="nav-text">读者借阅历史</span>
</a>
</c:if>
<c:if test="${sessionScope.userRole == 'administrator'}">
<a class="side-nav-link ${fn:contains(currentUri, '/admin/users') ? 'is-active' : ''}"
href="${pageContext.request.contextPath}/admin/users">
<span aria-hidden="true">户</span>用户管理
<span class="nav-icon" aria-hidden="true">户</span>
<span class="nav-text">用户管理</span>
</a>
<a class="side-nav-link ${fn:contains(currentUri, '/admin/system-logs') ? 'is-active' : ''}"
href="${pageContext.request.contextPath}/admin/system-logs">
<span aria-hidden="true">志</span>系统日志
<span class="nav-icon" aria-hidden="true">志</span>
<span class="nav-text">系统日志</span>
</a>
</c:if>
</nav>
@@ -89,26 +108,30 @@
</aside>
<div class="app-topbar">
<div class="breadcrumb">已登录 <span>/</span> Dashboard</div>
<div class="breadcrumb">已登录 <span>/</span> 工作台</div>
<form class="global-search" action="${pageContext.request.contextPath}/catalog" method="get">
<label class="sr-only" for="globalTitle">搜索图书、读者、功能</label>
<input id="globalTitle" name="title" type="search" placeholder="搜索图书、读者、功能...">
<button type="submit" aria-label="搜索"></button>
<button type="submit" aria-label="搜索"></button>
</form>
<div class="topbar-actions">
<span class="notification-dot" aria-label="通知">!</span>
<span class="avatar" aria-hidden="true">
<c:choose>
<c:when test="${sessionScope.userRole == 'administrator'}">管</c:when>
<c:when test="${sessionScope.userRole == 'librarian'}"></c:when>
<c:otherwise>读</c:otherwise>
</c:choose>
</span>
<span class="user-pill">
<c:out value="${sessionScope.authenticatedUser.displayName}" />
</span>
<span class="role-label">
<c:out value="${sessionScope.authenticatedUser.role.displayName}" />
<span class="user-summary">
<span class="avatar" aria-hidden="true">
<c:choose>
<c:when test="${sessionScope.userRole == 'administrator'}"></c:when>
<c:when test="${sessionScope.userRole == 'librarian'}">馆</c:when>
<c:otherwise>读</c:otherwise>
</c:choose>
</span>
<span class="user-meta">
<span class="user-pill">
<c:out value="${sessionScope.authenticatedUser.displayName}" />
</span>
<span class="role-label">
<c:out value="${sessionScope.authenticatedUser.role.displayName}" />
</span>
</span>
</span>
</div>
</div>