admin_requirements.html 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=1920">
  6. <title>实验室安全教育考试系统 · 管理后台使用说明文档</title>
  7. <style>
  8. *{box-sizing:border-box;margin:0;padding:0;}
  9. :root{
  10. --blue:#1857d4;--blue-mid:#2e6fe0;--blue-light:#eef3fd;--blue-xlight:#f5f8ff;
  11. --green:#10a37f;--green-light:#edfaf6;
  12. --orange:#e67e22;--orange-light:#fef6ec;
  13. --red:#e53e3e;--red-light:#fff5f5;
  14. --purple:#722ed1;--purple-light:#f9f0ff;
  15. --gray:#8896a7;--gray-light:#f4f6fa;--gray-border:#dde3ed;
  16. --text-primary:#1a2233;--text-secondary:#4a5568;--text-hint:#8896a7;
  17. --bg:#f0f4fb;--white:#fff;
  18. --shadow:0 2px 12px rgba(24,87,212,.08);
  19. --shadow-md:0 4px 24px rgba(24,87,212,.12);
  20. }
  21. body{font-family:"PingFang SC","Microsoft YaHei",sans-serif;background:#f0f4fb;color:var(--text-primary);font-size:15px;line-height:1.7;min-width:1920px;}
  22. /* ===== LAYOUT ===== */
  23. .page{max-width:1920px;min-height:1080px;margin:0 auto;display:flex;flex-direction:column;}
  24. .doc-header{background:linear-gradient(135deg,#1857d4 0%,#2e6fe0 60%,#0f3ea8 100%);color:#fff;padding:48px 80px 40px;position:relative;overflow:hidden;}
  25. .doc-header::before{content:'';position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.04'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");}
  26. .doc-header-inner{position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:space-between;}
  27. .doc-title{font-size:36px;font-weight:800;letter-spacing:1px;margin-bottom:10px;}
  28. .doc-subtitle{font-size:16px;opacity:.82;letter-spacing:.5px;}
  29. .doc-meta{display:flex;gap:32px;font-size:13px;opacity:.75;margin-top:14px;}
  30. .doc-meta span{display:flex;align-items:center;gap:6px;}
  31. .doc-badge{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);border-radius:20px;padding:6px 18px;font-size:13px;font-weight:600;}
  32. /* ===== NAV SIDEBAR ===== */
  33. .doc-body{display:flex;flex:1;}
  34. .sidebar{width:260px;flex-shrink:0;background:var(--white);border-right:1px solid var(--gray-border);padding:24px 0;position:sticky;top:0;height:calc(100vh - 148px);overflow-y:auto;}
  35. .sidebar::-webkit-scrollbar{width:4px;}
  36. .sidebar::-webkit-scrollbar-thumb{background:rgba(24,87,212,.15);border-radius:2px;}
  37. .nav-section{padding:0 20px;margin-bottom:6px;}
  38. .nav-section-title{font-size:11px;font-weight:700;color:var(--text-hint);letter-spacing:1.5px;text-transform:uppercase;padding:14px 4px 6px;}
  39. .nav-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;font-size:13px;color:var(--text-secondary);cursor:pointer;text-decoration:none;transition:all .15s;}
  40. .nav-item:hover{background:var(--blue-xlight);color:var(--blue);}
  41. .nav-item.active{background:var(--blue-light);color:var(--blue);font-weight:600;}
  42. .nav-item .nav-icon{width:20px;height:20px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0;}
  43. /* ===== MAIN CONTENT ===== */
  44. .main-content{flex:1;padding:40px 60px;max-width:1580px;}
  45. .section{margin-bottom:56px;}
  46. .section-title{font-size:24px;font-weight:800;color:var(--text-primary);margin-bottom:6px;display:flex;align-items:center;gap:10px;}
  47. .section-title::before{content:'';width:4px;height:24px;background:linear-gradient(180deg,var(--blue-mid),var(--blue));border-radius:3px;display:inline-block;}
  48. .section-desc{font-size:14px;color:var(--text-hint);margin-bottom:28px;padding-left:14px;}
  49. .sub-section{margin-bottom:36px;}
  50. .sub-title{font-size:17px;font-weight:700;color:var(--text-primary);margin-bottom:14px;padding-left:12px;border-left:3px solid var(--blue-mid);}
  51. /* ===== FEATURE CARDS ===== */
  52. .feature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px;}
  53. .feature-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px;}
  54. .feature-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-bottom:24px;}
  55. .feature-card{background:var(--white);border:1px solid var(--gray-border);border-radius:14px;padding:22px;box-shadow:var(--shadow);transition:box-shadow .2s;}
  56. .feature-card:hover{box-shadow:var(--shadow-md);}
  57. .feature-card-header{display:flex;align-items:center;gap:12px;margin-bottom:14px;}
  58. .feature-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;}
  59. .feature-name{font-size:15px;font-weight:700;color:var(--text-primary);}
  60. .feature-tag{font-size:11px;color:var(--text-hint);margin-top:2px;}
  61. .feature-list{list-style:none;padding:0;}
  62. .feature-list li{font-size:13px;color:var(--text-secondary);padding:5px 0;border-bottom:1px solid var(--gray-light);display:flex;align-items:flex-start;gap:8px;line-height:1.6;}
  63. .feature-list li:last-child{border-bottom:none;}
  64. .feature-list li::before{content:'·';color:var(--blue);font-size:16px;flex-shrink:0;line-height:1.4;}
  65. /* ===== SPEC TABLE ===== */
  66. .spec-table{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:16px;}
  67. .spec-table th{background:var(--blue-xlight);color:var(--blue);font-weight:700;padding:10px 16px;text-align:left;border:1px solid var(--blue-light);}
  68. .spec-table td{padding:10px 16px;border:1px solid var(--gray-border);vertical-align:top;line-height:1.7;}
  69. .spec-table tr:nth-child(even) td{background:#fafbfd;}
  70. .spec-table tr:hover td{background:var(--blue-xlight);}
  71. /* ===== TAGS ===== */
  72. .tag{display:inline-flex;align-items:center;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:600;}
  73. .tag-blue{background:var(--blue-light);color:var(--blue);}
  74. .tag-green{background:var(--green-light);color:var(--green);}
  75. .tag-orange{background:var(--orange-light);color:var(--orange);}
  76. .tag-red{background:var(--red-light);color:var(--red);}
  77. .tag-gray{background:var(--gray-light);color:var(--gray);}
  78. .tag-purple{background:var(--purple-light);color:var(--purple);}
  79. /* ===== FLOW ===== */
  80. .flow-row{display:flex;align-items:stretch;gap:0;margin-bottom:24px;flex-wrap:wrap;}
  81. .flow-step{background:var(--white);border:1px solid var(--gray-border);border-radius:12px;padding:16px 20px;min-width:160px;flex:1;position:relative;box-shadow:var(--shadow);}
  82. .flow-arrow{display:flex;align-items:center;padding:0 10px;color:var(--blue);font-size:22px;flex-shrink:0;}
  83. .flow-num{width:24px;height:24px;border-radius:50%;background:var(--blue);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-bottom:8px;}
  84. .flow-name{font-size:13px;font-weight:700;color:var(--text-primary);margin-bottom:4px;}
  85. .flow-desc{font-size:12px;color:var(--text-hint);}
  86. /* ===== NOTICE BOX ===== */
  87. .notice{border-radius:10px;padding:14px 18px;margin-bottom:18px;display:flex;gap:12px;align-items:flex-start;font-size:13px;line-height:1.7;}
  88. .notice-info{background:var(--blue-xlight);border:1px solid var(--blue-light);}
  89. .notice-warn{background:#fffbe6;border:1px solid #ffe58f;}
  90. .notice-icon{font-size:18px;flex-shrink:0;margin-top:1px;}
  91. /* ===== OVERVIEW HERO ===== */
  92. .overview-hero{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr;gap:16px;margin-bottom:32px;}
  93. .stat-card{background:var(--white);border-radius:14px;padding:22px 20px;border:1px solid var(--gray-border);box-shadow:var(--shadow);text-align:center;}
  94. .stat-num{font-size:32px;font-weight:800;background:linear-gradient(135deg,var(--blue-mid),var(--blue));-webkit-background-clip:text;-webkit-text-fill-color:transparent;line-height:1.1;}
  95. .stat-label{font-size:12px;color:var(--text-hint);margin-top:6px;}
  96. /* ===== SCREEN OVERVIEW GRID ===== */
  97. .screen-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:24px;}
  98. .screen-card{background:var(--white);border:1px solid var(--gray-border);border-radius:12px;padding:16px;box-shadow:var(--shadow);}
  99. .screen-card-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:10px;}
  100. .screen-card-name{font-size:13px;font-weight:700;margin-bottom:4px;}
  101. .screen-card-desc{font-size:11px;color:var(--text-hint);line-height:1.5;}
  102. /* ===== DIVIDER ===== */
  103. .divider{height:1px;background:var(--gray-border);margin:40px 0;}
  104. /* ===== FOOTER ===== */
  105. .doc-footer{background:var(--white);border-top:1px solid var(--gray-border);padding:24px 80px;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-hint);}
  106. /* ===== MENU TREE ===== */
  107. .menu-tree{background:var(--white);border:1px solid var(--gray-border);border-radius:14px;padding:24px 28px;margin-bottom:24px;box-shadow:var(--shadow);}
  108. .menu-l1{font-size:15px;font-weight:700;color:var(--text-primary);margin-bottom:10px;display:flex;align-items:center;gap:8px;}
  109. .menu-l1-icon{width:28px;height:28px;background:var(--blue-light);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;}
  110. .menu-l2-list{margin-left:36px;border-left:2px solid var(--blue-light);padding-left:16px;}
  111. .menu-l2{font-size:13px;color:var(--text-secondary);padding:6px 0;display:flex;align-items:flex-start;gap:8px;line-height:1.6;}
  112. .menu-l2-dot{width:6px;height:6px;border-radius:50%;background:var(--blue-mid);flex-shrink:0;margin-top:7px;}
  113. </style>
  114. </head>
  115. <body>
  116. <div class="page">
  117. <!-- ===== HEADER ===== -->
  118. <div class="doc-header">
  119. <div class="doc-header-inner">
  120. <div>
  121. <div style="font-size:13px;opacity:.7;margin-bottom:8px;letter-spacing:2px;">LABORATORY SAFETY EDUCATION SYSTEM · ADMIN BACKEND</div>
  122. <div class="doc-title">实验室安全教育考试系统</div>
  123. <div class="doc-subtitle">管理后台 (admin.html) · 产品使用说明文档</div>
  124. <div class="doc-meta">
  125. <span>&#128187; PC 管理后台</span>
  126. <span>&#128197; 文档版本:v1.0 · 2026-08</span>
  127. <span>&#128274; 适用范围:培训管理员 / 考试配置管理员 / 系统管理员</span>
  128. <span>&#128421; 推荐分辨率:1920 × 1080</span>
  129. </div>
  130. </div>
  131. <div style="text-align:right;">
  132. <div class="doc-badge">&#128295; 管理后台 v1.0</div>
  133. <div style="margin-top:12px;font-size:13px;opacity:.7;">共 2 个一级菜单 · 5 个功能页面 · 3 种考试类型</div>
  134. </div>
  135. </div>
  136. </div>
  137. <!-- ===== BODY ===== -->
  138. <div class="doc-body">
  139. <!-- SIDEBAR -->
  140. <div class="sidebar">
  141. <div class="nav-section">
  142. <div class="nav-section-title">概览</div>
  143. <a class="nav-item active" href="#overview"><span class="nav-icon" style="background:#eef3fd;">&#127968;</span>系统概述</a>
  144. <a class="nav-item" href="#arch"><span class="nav-icon" style="background:#eef3fd;">&#128194;</span>页面架构</a>
  145. </div>
  146. <div class="nav-section">
  147. <div class="nav-section-title">功能模块</div>
  148. <a class="nav-item" href="#training"><span class="nav-icon" style="background:#fff7e6;">&#127979;</span>培训活动</a>
  149. <a class="nav-item" href="#training-plan"><span class="nav-icon" style="background:#fff7e6;">&#128203;</span>培训计划</a>
  150. <a class="nav-item" href="#offline-training"><span class="nav-icon" style="background:#fff7e6;">&#127908;</span>线下培训</a>
  151. <a class="nav-item" href="#exam"><span class="nav-icon" style="background:#eef3fd;">&#127891;</span>考试管理</a>
  152. </div>
  153. <div class="nav-section">
  154. <div class="nav-section-title">权限说明</div>
  155. <a class="nav-item" href="#roles"><span class="nav-icon" style="background:#f9f0ff;">&#128274;</span>角色权限</a>
  156. </div>
  157. </div>
  158. <!-- MAIN CONTENT -->
  159. <div class="main-content">
  160. <!-- ===== OVERVIEW ===== -->
  161. <div class="section" id="overview">
  162. <div class="section-title">系统概述</div>
  163. <div class="section-desc">实验室安全教育考试系统管理后台,面向培训管理员、考试配置管理员和系统管理员,提供培训活动管理与考试模板配置功能。</div>
  164. <div class="overview-hero">
  165. <div class="stat-card"><div class="stat-num">2</div><div class="stat-label">一级菜单</div></div>
  166. <div class="stat-card"><div class="stat-num">5</div><div class="stat-label">功能页面</div></div>
  167. <div class="stat-card"><div class="stat-num">3</div><div class="stat-label">考试类型</div></div>
  168. <div class="stat-card"><div class="stat-num">1920<span style="font-size:18px;">×</span>1080</div><div class="stat-label">推荐分辨率</div></div>
  169. <div class="stat-card"><div class="stat-num" style="font-size:22px;">PC端</div><div class="stat-label">运行平台</div></div>
  170. </div>
  171. <div class="notice notice-info"><span class="notice-icon">&#128187;</span><div>本文档描述的是 <strong>PC 管理后台(admin.html)</strong>,面向具有管理权限的管理员用户使用。推荐在 1920×1080 分辨率下全屏访问,以获得最佳使用体验。管理员账号由系统超级管理员统一分配,普通学生无法访问管理后台。</div></div>
  172. <div class="sub-title">管理员角色说明</div>
  173. <div class="feature-grid-3">
  174. <div class="feature-card">
  175. <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">&#127979;</div><div><div class="feature-name">培训管理员</div><div class="feature-tag">Training Admin</div></div></div>
  176. <ul class="feature-list">
  177. <li>发布与管理培训计划(新建、编辑、发布/草稿切换)</li>
  178. <li>管理线下培训活动列表与详情</li>
  179. <li>查看培训签到统计数据与参与名单</li>
  180. <li>展示和刷新签到二维码</li>
  181. <li>查看已签到与未签到人员名单</li>
  182. </ul>
  183. </div>
  184. <div class="feature-card">
  185. <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">&#127891;</div><div><div class="feature-name">考试配置管理员</div><div class="feature-tag">Exam Config Admin</div></div></div>
  186. <ul class="feature-list">
  187. <li>配置开学考试、分级考试、应知应会三类考试模板</li>
  188. <li>设置考试基本参数(名称/时长/满分/及格分/答题次数)</li>
  189. <li>配置考试适用范围(学院/专业/年级)</li>
  190. <li>管理试卷配置(题目数量/题型比例/随机规则)</li>
  191. <li>配置考前学习要求与证书颁发条件</li>
  192. </ul>
  193. </div>
  194. <div class="feature-card">
  195. <div class="feature-card-header"><div class="feature-icon" style="background:#f9f0ff;">&#9881;</div><div><div class="feature-name">系统管理员</div><div class="feature-tag">Super Admin</div></div></div>
  196. <ul class="feature-list">
  197. <li>拥有管理后台全部操作权限</li>
  198. <li>可执行培训管理员的所有操作</li>
  199. <li>可执行考试配置管理员的所有操作</li>
  200. <li>管理其他管理员账号的角色与权限分配</li>
  201. <li>查看全局数据统计与系统运行状态</li>
  202. </ul>
  203. </div>
  204. </div>
  205. </div>
  206. <div class="divider"></div>
  207. <!-- ===== PAGE ARCHITECTURE ===== -->
  208. <div class="section" id="arch">
  209. <div class="section-title">页面架构</div>
  210. <div class="section-desc">管理后台共包含 2 个一级菜单、5 个功能页面,通过左侧菜单导航切换,页面布局为经典的左侧菜单 + 右侧内容区结构。</div>
  211. <div class="notice notice-info"><span class="notice-icon">&#128194;</span><div>管理后台采用 <strong>左侧固定菜单 + 右侧内容区</strong> 的经典后台布局。一级菜单点击可展开/收起二级菜单,二级菜单点击切换右侧内容页面。顶部通栏显示系统名称、当前管理员账号与退出入口。</div></div>
  212. <div class="sub-title">菜单结构说明</div>
  213. <div style="display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:24px;">
  214. <div class="menu-tree">
  215. <div class="menu-l1"><div class="menu-l1-icon">&#127979;</div>一级菜单:培训活动</div>
  216. <div class="menu-l2-list">
  217. <div class="menu-l2"><div class="menu-l2-dot"></div><div><strong>培训计划</strong> — 管理培训计划列表,支持新建、编辑、发布/草稿状态切换,表格展示培训名称、分类、时间、签到人数</div></div>
  218. <div class="menu-l2"><div class="menu-l2-dot"></div><div><strong>线下培训</strong> — 线下培训活动列表,支持卡片/列表视图切换,点击活动卡片可查看培训详情(签到统计、已签到/未签到名单、二维码展示)</div></div>
  219. </div>
  220. </div>
  221. <div class="menu-tree">
  222. <div class="menu-l1"><div class="menu-l1-icon" style="background:#eef3fd;">&#127891;</div>一级菜单:考试管理</div>
  223. <div class="menu-l2-list">
  224. <div class="menu-l2"><div class="menu-l2-dot"></div><div><strong>考试模板</strong> — 配置考试模板,分三个子 Tab(开学考试 / 分级考试 / 应知应会),每个 Tab 内有左侧子导航(基本配置 / 考试范围 / 试卷配置 / 考前配置 / 获得证书)</div></div>
  225. </div>
  226. </div>
  227. </div>
  228. <div class="sub-title">功能页面一览</div>
  229. <div class="screen-grid" style="grid-template-columns:repeat(3,1fr);">
  230. <div class="screen-card"><div class="screen-card-icon" style="background:#fff7e6;">&#128203;</div><div class="screen-card-name">page-training-plan</div><div class="screen-card-desc">培训计划列表页,表格展示所有培训计划,支持搜索过滤、状态切换,含新建入口</div></div>
  231. <div class="screen-card"><div class="screen-card-icon" style="background:#fff7e6;">&#10133;</div><div class="screen-card-name">page-training-new</div><div class="screen-card-desc">新建/编辑培训表单页,填写培训基本信息,支持保存草稿与直接发布</div></div>
  232. <div class="screen-card"><div class="screen-card-icon" style="background:#fff7e6;">&#128202;</div><div class="screen-card-name">page-training-record</div><div class="screen-card-desc">培训详情与签到记录页,展示签到统计、二维码、已签到/未签到名单</div></div>
  233. <div class="screen-card"><div class="screen-card-icon" style="background:#fff7e6;">&#127908;</div><div class="screen-card-name">page-training-activity-list</div><div class="screen-card-desc">线下培训活动列表,支持卡片/列表视图切换,可按活动状态筛选</div></div>
  234. <div class="screen-card"><div class="screen-card-icon" style="background:#fff7e6;">&#128205;</div><div class="screen-card-name">page-training-activity-detail</div><div class="screen-card-desc">线下培训活动详情,含基本信息、签到统计高亮区域、两个人员名单 Tab</div></div>
  235. <div class="screen-card"><div class="screen-card-icon" style="background:#eef3fd;">&#127891;</div><div class="screen-card-name">page-exam-template</div><div class="screen-card-desc">考试模板配置页,三个考试类型 Tab,每个 Tab 含五个配置子导航</div></div>
  236. </div>
  237. </div>
  238. <div class="divider"></div>
  239. <!-- ===== TRAINING MODULE ===== -->
  240. <div class="section" id="training">
  241. <div class="section-title">培训活动模块</div>
  242. <div class="section-desc">培训活动模块包含培训计划和线下培训两个子功能,支持管理员全流程管理培训的创建、发布、签到与统计。</div>
  243. <div class="sub-section" id="training-plan">
  244. <div class="sub-title">培训计划</div>
  245. <div class="feature-grid-3">
  246. <div class="feature-card">
  247. <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">&#128203;</div><div><div class="feature-name">培训计划列表</div><div class="feature-tag">page-training-plan</div></div></div>
  248. <ul class="feature-list">
  249. <li>表格形式展示所有培训计划,支持按培训名称关键字搜索过滤</li>
  250. <li>表格列:培训名称、分类、培训时间、签到人数、状态、操作</li>
  251. <li>状态标签区分:<span class="tag tag-green">已发布</span> / <span class="tag tag-gray">草稿</span>,一键切换发布状态</li>
  252. <li>操作列含编辑、查看详情、删除入口</li>
  253. <li>右上角"新建培训"按钮,跳转新建表单页</li>
  254. <li>支持按状态(已发布/草稿)筛选培训记录</li>
  255. </ul>
  256. </div>
  257. <div class="feature-card">
  258. <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">&#10133;</div><div><div class="feature-name">新建/编辑培训</div><div class="feature-tag">page-training-new</div></div></div>
  259. <ul class="feature-list">
  260. <li>培训名称:文本输入,必填,最大 100 字</li>
  261. <li>培训分类:下拉选择,如化学安全、生物安全、消防安全等</li>
  262. <li>培训时间:起止时间选择器,精确到分钟</li>
  263. <li>培训地点:文本输入,如具体教室楼层</li>
  264. <li>主讲人:输入主讲人姓名与单位</li>
  265. <li>学时/积分:设置本次培训可获得的学时数和积分值</li>
  266. <li>培训简介:富文本编辑区域,支持图文描述</li>
  267. <li>底部操作:保存草稿 / 直接发布,两种保存方式</li>
  268. </ul>
  269. </div>
  270. <div class="feature-card">
  271. <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">&#128202;</div><div><div class="feature-name">培训详情与签到记录</div><div class="feature-tag">page-training-record</div></div></div>
  272. <ul class="feature-list">
  273. <li>页面顶部展示签到二维码,管理员现场投影供学生扫码</li>
  274. <li>二维码每 5 分钟自动刷新,防止截图滥用</li>
  275. <li>统计数据卡片:总报名人数、已签到人数、未签到人数、签到率</li>
  276. <li>参与名单列表:姓名、学工号、学院、签到时间,支持手动补签</li>
  277. <li>支持按已签到/未签到切换查看名单</li>
  278. <li>名单可导出为 Excel 表格文件</li>
  279. </ul>
  280. </div>
  281. </div>
  282. <div class="sub-title" style="margin-top:8px;">培训计划操作流程</div>
  283. <div class="flow-row">
  284. <div class="flow-step"><div class="flow-num">1</div><div class="flow-name">新建培训</div><div class="flow-desc">点击"新建培训"进入表单填写页</div></div>
  285. <div class="flow-arrow">→</div>
  286. <div class="flow-step"><div class="flow-num">2</div><div class="flow-name">填写信息</div><div class="flow-desc">填写名称、时间、地点、主讲人、学时积分</div></div>
  287. <div class="flow-arrow">→</div>
  288. <div class="flow-step"><div class="flow-num">3</div><div class="flow-name">切换发布</div><div class="flow-desc">保存草稿后在列表中一键切换为已发布</div></div>
  289. <div class="flow-arrow">→</div>
  290. <div class="flow-step"><div class="flow-num">4</div><div class="flow-name">学生报名签到</div><div class="flow-desc">学生在移动端报名并到场扫码签到</div></div>
  291. <div class="flow-arrow">→</div>
  292. <div class="flow-step"><div class="flow-num">5</div><div class="flow-name">查看统计</div><div class="flow-desc">管理员在详情页实时查看签到数据与名单</div></div>
  293. </div>
  294. </div>
  295. <div class="sub-section" id="offline-training">
  296. <div class="sub-title">线下培训</div>
  297. <div class="feature-grid-2">
  298. <div class="feature-card">
  299. <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">&#127908;</div><div><div class="feature-name">活动列表</div><div class="feature-tag">page-training-activity-list</div></div></div>
  300. <ul class="feature-list">
  301. <li>默认卡片视图展示线下培训活动,每张卡片显示封面图、活动名称、时间地点、报名人数</li>
  302. <li>右上角切换按钮:卡片视图 / 列表视图,列表视图以表格行展示</li>
  303. <li>顶部状态筛选栏:全部 / 进行中 / 待开始 / 已结束,快速过滤活动</li>
  304. <li>搜索框支持按活动名称关键字查找</li>
  305. <li>活动卡片右上角显示活动状态标签:<span class="tag tag-green">进行中</span> / <span class="tag tag-blue">待开始</span> / <span class="tag tag-gray">已结束</span></li>
  306. <li>点击卡片或行进入活动详情页查看完整信息</li>
  307. </ul>
  308. </div>
  309. <div class="feature-card">
  310. <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">&#128205;</div><div><div class="feature-name">培训详情</div><div class="feature-tag">page-training-activity-detail</div></div></div>
  311. <ul class="feature-list">
  312. <li>基本信息区域:活动名称、时间、地点、主讲人、活动简介</li>
  313. <li>签到统计高亮区域:大号数字卡片突出展示总报名、已签到、未签到人数及签到率百分比</li>
  314. <li>签到二维码展示区:管理员现场展示供学生扫码,支持一键刷新二维码</li>
  315. <li>人员名单双 Tab 切换:已签到名单 Tab / 未签到名单 Tab</li>
  316. <li>名单表格列:姓名、学工号、所在学院、签到时间(未签到则为空)</li>
  317. <li>支持手动为未签到学生补录签到记录,需填写补签原因</li>
  318. </ul>
  319. </div>
  320. </div>
  321. <div class="notice notice-info"><span class="notice-icon">&#128161;</span><div>线下培训中的<strong>已签到/未签到名单</strong>按学工号与姓名双列展示,并标注所在学院信息,方便管理员快速核对人员。未签到名单支持手动补签功能,需管理员权限操作,补签记录留存审计日志。</div></div>
  322. </div>
  323. </div>
  324. <div class="divider"></div>
  325. <!-- ===== EXAM MODULE ===== -->
  326. <div class="section" id="exam">
  327. <div class="section-title">考试管理模块</div>
  328. <div class="section-desc">考试管理模块目前包含考试模板一个功能页面,支持配置三类考试(开学考试/分级考试/应知应会)的全部参数,每类考试通过五个子导航分步配置。</div>
  329. <div class="notice notice-warn"><span class="notice-icon">&#9888;&#65039;</span><div>考试模板为<strong>全局唯一模板</strong>,修改任意配置项后,将对所有已分配该考试类型的学生产生影响。建议在非考试高峰期进行配置修改,并提前通知相关管理人员。配置修改后系统自动记录变更日志,可在审计记录中查阅。</div></div>
  330. <div class="sub-title">三种考试类型说明</div>
  331. <div class="feature-grid-3">
  332. <div class="feature-card">
  333. <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">&#127891;</div><div><div class="feature-name">开学考试</div><div class="feature-tag">Tab 1</div></div></div>
  334. <ul class="feature-list">
  335. <li>面向新入学学生,学年开始时强制参加</li>
  336. <li>考察基础安全知识,覆盖面广</li>
  337. <li>通过后颁发基础安全教育证书</li>
  338. <li>包含基本配置、考试范围、试卷配置、考前配置、获得证书五个子导航</li>
  339. <li>可配置不同年级、学院的差异化要求</li>
  340. </ul>
  341. </div>
  342. <div class="feature-card">
  343. <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">&#127919;</div><div><div class="feature-name">分级考试</div><div class="feature-tag">Tab 2</div></div></div>
  344. <ul class="feature-list">
  345. <li>面向有特定实验室准入需求的学生</li>
  346. <li>按实验室危险等级分级设置考试难度</li>
  347. <li>通过后颁发对应等级安全操作资质证书</li>
  348. <li>包含基本配置、考试范围、试卷配置、考前配置、获得证书五个子导航</li>
  349. <li>考试范围可精细到专业与年级维度</li>
  350. </ul>
  351. </div>
  352. <div class="feature-card">
  353. <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">&#128214;</div><div><div class="feature-name">应知应会</div><div class="feature-tag">Tab 3</div></div></div>
  354. <ul class="feature-list">
  355. <li>面向实验室日常安全知识巩固</li>
  356. <li>题目偏向操作规范与应急处置知识</li>
  357. <li>可设置为周期性参加,持续强化安全意识</li>
  358. <li>包含基本配置、考试范围、试卷配置、考前配置、获得证书五个子导航</li>
  359. <li>答题次数可配置,支持多次重考</li>
  360. </ul>
  361. </div>
  362. </div>
  363. <div class="sub-title">子导航配置项详解</div>
  364. <div class="feature-grid-3" style="margin-bottom:18px;">
  365. <div class="feature-card">
  366. <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">&#128221;</div><div><div class="feature-name">基本配置</div><div class="feature-tag">子导航 1 · 考试参数</div></div></div>
  367. <ul class="feature-list">
  368. <li>考试名称:可自定义展示给学生的考试标题</li>
  369. <li>考试时长:设置答题限制时间,单位分钟,范围 10~180 分钟</li>
  370. <li>满分设置:设置本次考试总分值,默认 100 分</li>
  371. <li>及格分数线:设置通过考试所需最低得分,默认 60 分</li>
  372. <li>答题次数限制:设置学生最多可参加该考试的次数,0 表示不限</li>
  373. <li>考试说明:富文本区域,向学生展示考前注意事项与考试规则</li>
  374. </ul>
  375. </div>
  376. <div class="feature-card">
  377. <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">&#127979;</div><div><div class="feature-name">考试范围</div><div class="feature-tag">子导航 2 · 适用人群</div></div></div>
  378. <ul class="feature-list">
  379. <li>适用学院:多选下拉框,选择哪些学院的学生需参加本考试</li>
  380. <li>适用专业:在所选学院下进一步限定专业范围,支持全选</li>
  381. <li>适用年级:多选年级(大一/大二/大三/大四/研一/研二等)</li>
  382. <li>排除规则:可设置特定学院或专业豁免该考试</li>
  383. <li>范围生效时间:设置考试范围的有效起止日期</li>
  384. <li>保存后实时生效,范围内学生将在考试列表中看到该考试任务</li>
  385. </ul>
  386. </div>
  387. <div class="feature-card">
  388. <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">&#128196;</div><div><div class="feature-name">试卷配置</div><div class="feature-tag">子导航 3 · 出题规则</div></div></div>
  389. <ul class="feature-list">
  390. <li>题目总数:设置每次考试抽取的总题目数量</li>
  391. <li>题型比例:分别设置单选题、多选题、判断题的数量或比例</li>
  392. <li>随机出题规则:从题库随机抽取,每次考试题目不重复</li>
  393. <li>知识点覆盖:可设置各知识点模块的抽题数量,保证覆盖面</li>
  394. <li>难度分布:按难度(简单/中等/困难)设置抽题比例</li>
  395. <li>预览试卷:配置完成后可预览示例试卷结构,校验配置合理性</li>
  396. </ul>
  397. </div>
  398. </div>
  399. <div class="feature-grid-2">
  400. <div class="feature-card">
  401. <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">&#128218;</div><div><div class="feature-name">考前配置</div><div class="feature-tag">子导航 4 · 考前门槛</div></div></div>
  402. <ul class="feature-list">
  403. <li>考前学习要求:是否强制要求学生完成指定课程后方可参加考试</li>
  404. <li>关联课程:多选绑定考前必修课程,未完成则考试入口置灰</li>
  405. <li>学时门槛:设置学生需完成的最低学时数才能解锁考试资格</li>
  406. <li>学习时间窗口:限定学生必须在考试开始前 N 天内完成考前学习</li>
  407. <li>考前提醒:开启后系统在考试截止前自动向未完成学生推送通知</li>
  408. <li>配置保存后自动同步至学生端考试任务卡片的门槛提示信息</li>
  409. </ul>
  410. </div>
  411. <div class="feature-card">
  412. <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">&#127885;</div><div><div class="feature-name">获得证书</div><div class="feature-tag">子导航 5 · 证书配置</div></div></div>
  413. <ul class="feature-list">
  414. <li>是否颁发证书:开关控制,关闭则通过考试后不颁发证书</li>
  415. <li>证书模板:选择证书外观模板,支持多种样式(正式/简约/彩色)</li>
  416. <li>颁发条件:设置通过该考试且达到指定分数后自动颁发</li>
  417. <li>证书有效期:设置证书的有效时长(如 1 年/2 年/永久有效)</li>
  418. <li>证书名称:自定义证书上展示的资质名称,如"实验室安全操作资质证书"</li>
  419. <li>证书预览:可预览证书样式,填写示例信息确认展示效果</li>
  420. </ul>
  421. </div>
  422. </div>
  423. </div>
  424. <div class="divider"></div>
  425. <!-- ===== ROLES ===== -->
  426. <div class="section" id="roles">
  427. <div class="section-title">角色权限</div>
  428. <div class="section-desc">管理后台内置三种管理员角色,权限由系统管理员在后台统一分配。不同角色可操作的功能范围不同,前端根据角色动态控制菜单显示与操作按钮权限。</div>
  429. <table class="spec-table">
  430. <thead>
  431. <tr>
  432. <th>角色</th>
  433. <th>可操作功能</th>
  434. <th>备注</th>
  435. </tr>
  436. </thead>
  437. <tbody>
  438. <tr>
  439. <td><span class="tag tag-orange">培训管理员</span></td>
  440. <td>培训计划 CRUD(新建、编辑、删除、查看);线下培训管理(查看活动列表与详情);签到统计(查看统计数据、已签到/未签到名单);签到二维码展示与刷新;手动补签操作;名单导出 Excel</td>
  441. <td>仅可操作"培训活动"一级菜单下的所有功能,无法访问考试管理模块</td>
  442. </tr>
  443. <tr>
  444. <td><span class="tag tag-blue">考试配置管理员</span></td>
  445. <td>考试模板配置(开学考试/分级考试/应知应会三类);基本配置修改;考试范围设置;试卷配置(题目数量/题型/随机规则);考前配置(学习要求/学时门槛);证书配置(模板/颁发条件/有效期)</td>
  446. <td>仅可操作"考试管理"一级菜单下的所有功能,无法访问培训活动模块</td>
  447. </tr>
  448. <tr>
  449. <td><span class="tag tag-purple">系统管理员</span></td>
  450. <td>拥有以上两种角色的全部权限;另可管理管理员账号(创建/禁用/角色分配);查看全局操作审计日志;配置系统公告与平台基础参数</td>
  451. <td>最高权限角色,建议仅分配给信息化管理中心核心运维人员,数量控制在 2~3 人</td>
  452. </tr>
  453. </tbody>
  454. </table>
  455. <div class="notice notice-warn"><span class="notice-icon">&#9888;&#65039;</span><div>角色权限由系统管理员在后台账号管理模块统一配置,一个账号可同时拥有多个角色(如同时具备培训管理员和考试配置管理员权限)。权限变更实时生效,无需重新登录。请妥善保管管理员账号,定期审查账号权限分配的合理性。</div></div>
  456. </div>
  457. </div><!-- end main-content -->
  458. </div><!-- end doc-body -->
  459. <!-- ===== FOOTER ===== -->
  460. <div class="doc-footer">
  461. <div>&#169; 2026 实验室安全教育平台 · 管理后台 v1.0 | 文档版本:2026-08 | 技术支持:信息化管理中心</div>
  462. <div style="display:flex;gap:24px;align-items:center;">
  463. <span>&#128187; PC 管理后台</span>
  464. <span>&#128194; 5 个功能页面</span>
  465. <span>&#128274; 3 种管理员角色</span>
  466. </div>
  467. </div>
  468. </div><!-- end page -->
  469. </body>
  470. </html>