base.html 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>{% block title %}逐鹿人才-证件合同管理系统{% endblock %}</title>
  7. <!-- Bootstrap & Icons -->
  8. <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
  9. <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.8.1/font/bootstrap-icons.css" rel="stylesheet">
  10. <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
  11. <link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}">
  12. <style>
  13. /* 全局字体和背景 */
  14. body {
  15. font-family: "Microsoft YaHei", Arial, sans-serif;
  16. background-color: #f8f9fa;
  17. }
  18. /* 渐变导航栏 */
  19. .navbar.bg-primary {
  20. background: linear-gradient(90deg, #4e73df, #224abe);
  21. }
  22. /* 下拉菜单卡片化 */
  23. .dropdown-menu {
  24. border-radius: 0.5rem;
  25. box-shadow: 0 0.5rem 1rem rgba(0,0,0,0.15);
  26. }
  27. .dropdown-item:hover {
  28. background-color: #f1f1f1;
  29. color: #224abe;
  30. }
  31. /* 提示信息过渡效果 */
  32. .alert {
  33. border-radius: 0.5rem;
  34. box-shadow: 0 0.25rem 0.5rem rgba(0,0,0,0.1);
  35. }
  36. /* 页脚美化 */
  37. footer {
  38. box-shadow: inset 0 1px 0 rgba(0,0,0,0.05);
  39. }
  40. /* 主容器更宽 */
  41. .main-container {
  42. max-width: 1600px;
  43. margin: 0 auto;
  44. padding-left: 20px;
  45. padding-right: 20px;
  46. }
  47. /* 响应式导航 */
  48. @media (max-width: 576px) {
  49. .navbar-brand { font-size: 1.1rem; }
  50. .nav-link { font-size: 0.95rem; }
  51. }
  52. /* 未登录状态下的登录链接样式 */
  53. .navbar-nav-login {
  54. margin-left: auto;
  55. }
  56. .navbar-nav-login .nav-link {
  57. padding: 0.5rem 1rem;
  58. border-radius: 0.5rem;
  59. background-color: rgba(255,255,255,0.15);
  60. transition: all 0.3s;
  61. }
  62. .navbar-nav-login .nav-link:hover {
  63. background-color: rgba(255,255,255,0.25);
  64. }
  65. </style>
  66. </head>
  67. <body>
  68. <nav class="navbar navbar-expand-lg navbar-dark bg-primary shadow-sm">
  69. <div class="container-fluid px-4">
  70. <a class="navbar-brand fw-bold" href="{{ url_for('dashboard') }}">逐鹿人才-证件合同管理系统</a>
  71. <!-- 添加登录状态判断 -->
  72. {% if current_user.is_authenticated %}
  73. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
  74. <span class="navbar-toggler-icon"></span>
  75. </button>
  76. <div class="collapse navbar-collapse" id="navbarNav">
  77. <ul class="navbar-nav me-auto">
  78. <li class="nav-item"><a class="nav-link" href="{{ url_for('contract_list') }}">合同管理</a></li>
  79. {% if current_user.is_admin %}
  80. <li class="nav-item"><a class="nav-link" href="{{ url_for('user_list') }}">用户管理</a></li>
  81. <li class="nav-item"><a class="nav-link" href="{{ url_for('system_config') }}">系统配置</a></li>
  82. {% endif %}
  83. </ul>
  84. <ul class="navbar-nav">
  85. <li class="nav-item dropdown">
  86. <a class="nav-link dropdown-toggle d-flex align-items-center" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown">
  87. <i class="bi bi-person-circle me-2 fs-5"></i> {{ current_user.name }} ({{ current_user.department }})
  88. </a>
  89. <ul class="dropdown-menu dropdown-menu-end">
  90. <li><a class="dropdown-item" href="{{ url_for('profile') }}"><i class="bi bi-gear me-2"></i>个人资料</a></li>
  91. <li><hr class="dropdown-divider"></li>
  92. <li><a class="dropdown-item text-danger" href="{{ url_for('logout') }}"><i class="bi bi-box-arrow-right me-2"></i>退出登录</a></li>
  93. </ul>
  94. </li>
  95. </ul>
  96. </div>
  97. {% else %}
  98. <!-- 未登录时只显示登录链接 -->
  99. <div class="d-flex">
  100. <ul class="navbar-nav navbar-nav-login">
  101. <li class="nav-item">
  102. <a class="nav-link" href="{{ url_for('login') }}">
  103. <i class="bi bi-box-arrow-in-right me-1"></i>登录
  104. </a>
  105. </li>
  106. </ul>
  107. </div>
  108. {% endif %}
  109. </div>
  110. </nav>
  111. <!-- 主内容区 -->
  112. <div class="main-container mt-4">
  113. {% with messages = get_flashed_messages(with_categories=true) %}
  114. {% if messages %}
  115. {% for category, message in messages %}
  116. <div class="alert alert-{{ category }} alert-dismissible fade show" role="alert">
  117. {{ message }}
  118. <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
  119. </div>
  120. {% endfor %}
  121. {% endif %}
  122. {% endwith %}
  123. {% block content %}{% endblock %}
  124. </div>
  125. <footer class="mt-5 py-3 bg-light text-center">
  126. <div class="container">
  127. <span class="text-muted">逐鹿人才-证件合同管理系统 &copy; 2025</span>
  128. </div>
  129. </footer>
  130. <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
  131. <script src="{{ url_for('static', filename='js/main.js') }}"></script>
  132. </body>
  133. </html>