| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500 |
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=1920">
- <title>实验室安全教育考试系统 · 管理后台使用说明文档</title>
- <style>
- *{box-sizing:border-box;margin:0;padding:0;}
- :root{
- --blue:#1857d4;--blue-mid:#2e6fe0;--blue-light:#eef3fd;--blue-xlight:#f5f8ff;
- --green:#10a37f;--green-light:#edfaf6;
- --orange:#e67e22;--orange-light:#fef6ec;
- --red:#e53e3e;--red-light:#fff5f5;
- --purple:#722ed1;--purple-light:#f9f0ff;
- --gray:#8896a7;--gray-light:#f4f6fa;--gray-border:#dde3ed;
- --text-primary:#1a2233;--text-secondary:#4a5568;--text-hint:#8896a7;
- --bg:#f0f4fb;--white:#fff;
- --shadow:0 2px 12px rgba(24,87,212,.08);
- --shadow-md:0 4px 24px rgba(24,87,212,.12);
- }
- 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;}
- /* ===== LAYOUT ===== */
- .page{max-width:1920px;min-height:1080px;margin:0 auto;display:flex;flex-direction:column;}
- .doc-header{background:linear-gradient(135deg,#1857d4 0%,#2e6fe0 60%,#0f3ea8 100%);color:#fff;padding:48px 80px 40px;position:relative;overflow:hidden;}
- .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");}
- .doc-header-inner{position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:space-between;}
- .doc-title{font-size:36px;font-weight:800;letter-spacing:1px;margin-bottom:10px;}
- .doc-subtitle{font-size:16px;opacity:.82;letter-spacing:.5px;}
- .doc-meta{display:flex;gap:32px;font-size:13px;opacity:.75;margin-top:14px;}
- .doc-meta span{display:flex;align-items:center;gap:6px;}
- .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;}
- /* ===== NAV SIDEBAR ===== */
- .doc-body{display:flex;flex:1;}
- .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;}
- .sidebar::-webkit-scrollbar{width:4px;}
- .sidebar::-webkit-scrollbar-thumb{background:rgba(24,87,212,.15);border-radius:2px;}
- .nav-section{padding:0 20px;margin-bottom:6px;}
- .nav-section-title{font-size:11px;font-weight:700;color:var(--text-hint);letter-spacing:1.5px;text-transform:uppercase;padding:14px 4px 6px;}
- .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;}
- .nav-item:hover{background:var(--blue-xlight);color:var(--blue);}
- .nav-item.active{background:var(--blue-light);color:var(--blue);font-weight:600;}
- .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;}
- /* ===== MAIN CONTENT ===== */
- .main-content{flex:1;padding:40px 60px;max-width:1580px;}
- .section{margin-bottom:56px;}
- .section-title{font-size:24px;font-weight:800;color:var(--text-primary);margin-bottom:6px;display:flex;align-items:center;gap:10px;}
- .section-title::before{content:'';width:4px;height:24px;background:linear-gradient(180deg,var(--blue-mid),var(--blue));border-radius:3px;display:inline-block;}
- .section-desc{font-size:14px;color:var(--text-hint);margin-bottom:28px;padding-left:14px;}
- .sub-section{margin-bottom:36px;}
- .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);}
- /* ===== FEATURE CARDS ===== */
- .feature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px;}
- .feature-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px;}
- .feature-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-bottom:24px;}
- .feature-card{background:var(--white);border:1px solid var(--gray-border);border-radius:14px;padding:22px;box-shadow:var(--shadow);transition:box-shadow .2s;}
- .feature-card:hover{box-shadow:var(--shadow-md);}
- .feature-card-header{display:flex;align-items:center;gap:12px;margin-bottom:14px;}
- .feature-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;}
- .feature-name{font-size:15px;font-weight:700;color:var(--text-primary);}
- .feature-tag{font-size:11px;color:var(--text-hint);margin-top:2px;}
- .feature-list{list-style:none;padding:0;}
- .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;}
- .feature-list li:last-child{border-bottom:none;}
- .feature-list li::before{content:'·';color:var(--blue);font-size:16px;flex-shrink:0;line-height:1.4;}
- /* ===== SPEC TABLE ===== */
- .spec-table{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:16px;}
- .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);}
- .spec-table td{padding:10px 16px;border:1px solid var(--gray-border);vertical-align:top;line-height:1.7;}
- .spec-table tr:nth-child(even) td{background:#fafbfd;}
- .spec-table tr:hover td{background:var(--blue-xlight);}
- /* ===== TAGS ===== */
- .tag{display:inline-flex;align-items:center;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:600;}
- .tag-blue{background:var(--blue-light);color:var(--blue);}
- .tag-green{background:var(--green-light);color:var(--green);}
- .tag-orange{background:var(--orange-light);color:var(--orange);}
- .tag-red{background:var(--red-light);color:var(--red);}
- .tag-gray{background:var(--gray-light);color:var(--gray);}
- .tag-purple{background:var(--purple-light);color:var(--purple);}
- /* ===== FLOW ===== */
- .flow-row{display:flex;align-items:stretch;gap:0;margin-bottom:24px;flex-wrap:wrap;}
- .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);}
- .flow-arrow{display:flex;align-items:center;padding:0 10px;color:var(--blue);font-size:22px;flex-shrink:0;}
- .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;}
- .flow-name{font-size:13px;font-weight:700;color:var(--text-primary);margin-bottom:4px;}
- .flow-desc{font-size:12px;color:var(--text-hint);}
- /* ===== NOTICE BOX ===== */
- .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;}
- .notice-info{background:var(--blue-xlight);border:1px solid var(--blue-light);}
- .notice-warn{background:#fffbe6;border:1px solid #ffe58f;}
- .notice-icon{font-size:18px;flex-shrink:0;margin-top:1px;}
- /* ===== OVERVIEW HERO ===== */
- .overview-hero{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr;gap:16px;margin-bottom:32px;}
- .stat-card{background:var(--white);border-radius:14px;padding:22px 20px;border:1px solid var(--gray-border);box-shadow:var(--shadow);text-align:center;}
- .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;}
- .stat-label{font-size:12px;color:var(--text-hint);margin-top:6px;}
- /* ===== SCREEN OVERVIEW GRID ===== */
- .screen-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:24px;}
- .screen-card{background:var(--white);border:1px solid var(--gray-border);border-radius:12px;padding:16px;box-shadow:var(--shadow);}
- .screen-card-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;margin-bottom:10px;}
- .screen-card-name{font-size:13px;font-weight:700;margin-bottom:4px;}
- .screen-card-desc{font-size:11px;color:var(--text-hint);line-height:1.5;}
- /* ===== DIVIDER ===== */
- .divider{height:1px;background:var(--gray-border);margin:40px 0;}
- /* ===== FOOTER ===== */
- .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);}
- /* ===== MENU TREE ===== */
- .menu-tree{background:var(--white);border:1px solid var(--gray-border);border-radius:14px;padding:24px 28px;margin-bottom:24px;box-shadow:var(--shadow);}
- .menu-l1{font-size:15px;font-weight:700;color:var(--text-primary);margin-bottom:10px;display:flex;align-items:center;gap:8px;}
- .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;}
- .menu-l2-list{margin-left:36px;border-left:2px solid var(--blue-light);padding-left:16px;}
- .menu-l2{font-size:13px;color:var(--text-secondary);padding:6px 0;display:flex;align-items:flex-start;gap:8px;line-height:1.6;}
- .menu-l2-dot{width:6px;height:6px;border-radius:50%;background:var(--blue-mid);flex-shrink:0;margin-top:7px;}
- </style>
- </head>
- <body>
- <div class="page">
- <!-- ===== HEADER ===== -->
- <div class="doc-header">
- <div class="doc-header-inner">
- <div>
- <div style="font-size:13px;opacity:.7;margin-bottom:8px;letter-spacing:2px;">LABORATORY SAFETY EDUCATION SYSTEM · ADMIN BACKEND</div>
- <div class="doc-title">实验室安全教育考试系统</div>
- <div class="doc-subtitle">管理后台 (admin.html) · 产品使用说明文档</div>
- <div class="doc-meta">
- <span>💻 PC 管理后台</span>
- <span>📅 文档版本:v1.0 · 2026-08</span>
- <span>🔒 适用范围:培训管理员 / 考试配置管理员 / 系统管理员</span>
- <span>🖥 推荐分辨率:1920 × 1080</span>
- </div>
- </div>
- <div style="text-align:right;">
- <div class="doc-badge">🔧 管理后台 v1.0</div>
- <div style="margin-top:12px;font-size:13px;opacity:.7;">共 2 个一级菜单 · 5 个功能页面 · 3 种考试类型</div>
- </div>
- </div>
- </div>
- <!-- ===== BODY ===== -->
- <div class="doc-body">
- <!-- SIDEBAR -->
- <div class="sidebar">
- <div class="nav-section">
- <div class="nav-section-title">概览</div>
- <a class="nav-item active" href="#overview"><span class="nav-icon" style="background:#eef3fd;">🏠</span>系统概述</a>
- <a class="nav-item" href="#arch"><span class="nav-icon" style="background:#eef3fd;">📂</span>页面架构</a>
- </div>
- <div class="nav-section">
- <div class="nav-section-title">功能模块</div>
- <a class="nav-item" href="#training"><span class="nav-icon" style="background:#fff7e6;">🏫</span>培训活动</a>
- <a class="nav-item" href="#training-plan"><span class="nav-icon" style="background:#fff7e6;">📋</span>培训计划</a>
- <a class="nav-item" href="#offline-training"><span class="nav-icon" style="background:#fff7e6;">🎤</span>线下培训</a>
- <a class="nav-item" href="#exam"><span class="nav-icon" style="background:#eef3fd;">🎓</span>考试管理</a>
- </div>
- <div class="nav-section">
- <div class="nav-section-title">权限说明</div>
- <a class="nav-item" href="#roles"><span class="nav-icon" style="background:#f9f0ff;">🔒</span>角色权限</a>
- </div>
- </div>
- <!-- MAIN CONTENT -->
- <div class="main-content">
- <!-- ===== OVERVIEW ===== -->
- <div class="section" id="overview">
- <div class="section-title">系统概述</div>
- <div class="section-desc">实验室安全教育考试系统管理后台,面向培训管理员、考试配置管理员和系统管理员,提供培训活动管理与考试模板配置功能。</div>
- <div class="overview-hero">
- <div class="stat-card"><div class="stat-num">2</div><div class="stat-label">一级菜单</div></div>
- <div class="stat-card"><div class="stat-num">5</div><div class="stat-label">功能页面</div></div>
- <div class="stat-card"><div class="stat-num">3</div><div class="stat-label">考试类型</div></div>
- <div class="stat-card"><div class="stat-num">1920<span style="font-size:18px;">×</span>1080</div><div class="stat-label">推荐分辨率</div></div>
- <div class="stat-card"><div class="stat-num" style="font-size:22px;">PC端</div><div class="stat-label">运行平台</div></div>
- </div>
- <div class="notice notice-info"><span class="notice-icon">💻</span><div>本文档描述的是 <strong>PC 管理后台(admin.html)</strong>,面向具有管理权限的管理员用户使用。推荐在 1920×1080 分辨率下全屏访问,以获得最佳使用体验。管理员账号由系统超级管理员统一分配,普通学生无法访问管理后台。</div></div>
- <div class="sub-title">管理员角色说明</div>
- <div class="feature-grid-3">
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">🏫</div><div><div class="feature-name">培训管理员</div><div class="feature-tag">Training Admin</div></div></div>
- <ul class="feature-list">
- <li>发布与管理培训计划(新建、编辑、发布/草稿切换)</li>
- <li>管理线下培训活动列表与详情</li>
- <li>查看培训签到统计数据与参与名单</li>
- <li>展示和刷新签到二维码</li>
- <li>查看已签到与未签到人员名单</li>
- </ul>
- </div>
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">🎓</div><div><div class="feature-name">考试配置管理员</div><div class="feature-tag">Exam Config Admin</div></div></div>
- <ul class="feature-list">
- <li>配置开学考试、分级考试、应知应会三类考试模板</li>
- <li>设置考试基本参数(名称/时长/满分/及格分/答题次数)</li>
- <li>配置考试适用范围(学院/专业/年级)</li>
- <li>管理试卷配置(题目数量/题型比例/随机规则)</li>
- <li>配置考前学习要求与证书颁发条件</li>
- </ul>
- </div>
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#f9f0ff;">⚙</div><div><div class="feature-name">系统管理员</div><div class="feature-tag">Super Admin</div></div></div>
- <ul class="feature-list">
- <li>拥有管理后台全部操作权限</li>
- <li>可执行培训管理员的所有操作</li>
- <li>可执行考试配置管理员的所有操作</li>
- <li>管理其他管理员账号的角色与权限分配</li>
- <li>查看全局数据统计与系统运行状态</li>
- </ul>
- </div>
- </div>
- </div>
- <div class="divider"></div>
- <!-- ===== PAGE ARCHITECTURE ===== -->
- <div class="section" id="arch">
- <div class="section-title">页面架构</div>
- <div class="section-desc">管理后台共包含 2 个一级菜单、5 个功能页面,通过左侧菜单导航切换,页面布局为经典的左侧菜单 + 右侧内容区结构。</div>
- <div class="notice notice-info"><span class="notice-icon">📂</span><div>管理后台采用 <strong>左侧固定菜单 + 右侧内容区</strong> 的经典后台布局。一级菜单点击可展开/收起二级菜单,二级菜单点击切换右侧内容页面。顶部通栏显示系统名称、当前管理员账号与退出入口。</div></div>
- <div class="sub-title">菜单结构说明</div>
- <div style="display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:24px;">
- <div class="menu-tree">
- <div class="menu-l1"><div class="menu-l1-icon">🏫</div>一级菜单:培训活动</div>
- <div class="menu-l2-list">
- <div class="menu-l2"><div class="menu-l2-dot"></div><div><strong>培训计划</strong> — 管理培训计划列表,支持新建、编辑、发布/草稿状态切换,表格展示培训名称、分类、时间、签到人数</div></div>
- <div class="menu-l2"><div class="menu-l2-dot"></div><div><strong>线下培训</strong> — 线下培训活动列表,支持卡片/列表视图切换,点击活动卡片可查看培训详情(签到统计、已签到/未签到名单、二维码展示)</div></div>
- </div>
- </div>
- <div class="menu-tree">
- <div class="menu-l1"><div class="menu-l1-icon" style="background:#eef3fd;">🎓</div>一级菜单:考试管理</div>
- <div class="menu-l2-list">
- <div class="menu-l2"><div class="menu-l2-dot"></div><div><strong>考试模板</strong> — 配置考试模板,分三个子 Tab(开学考试 / 分级考试 / 应知应会),每个 Tab 内有左侧子导航(基本配置 / 考试范围 / 试卷配置 / 考前配置 / 获得证书)</div></div>
- </div>
- </div>
- </div>
- <div class="sub-title">功能页面一览</div>
- <div class="screen-grid" style="grid-template-columns:repeat(3,1fr);">
- <div class="screen-card"><div class="screen-card-icon" style="background:#fff7e6;">📋</div><div class="screen-card-name">page-training-plan</div><div class="screen-card-desc">培训计划列表页,表格展示所有培训计划,支持搜索过滤、状态切换,含新建入口</div></div>
- <div class="screen-card"><div class="screen-card-icon" style="background:#fff7e6;">➕</div><div class="screen-card-name">page-training-new</div><div class="screen-card-desc">新建/编辑培训表单页,填写培训基本信息,支持保存草稿与直接发布</div></div>
- <div class="screen-card"><div class="screen-card-icon" style="background:#fff7e6;">📊</div><div class="screen-card-name">page-training-record</div><div class="screen-card-desc">培训详情与签到记录页,展示签到统计、二维码、已签到/未签到名单</div></div>
- <div class="screen-card"><div class="screen-card-icon" style="background:#fff7e6;">🎤</div><div class="screen-card-name">page-training-activity-list</div><div class="screen-card-desc">线下培训活动列表,支持卡片/列表视图切换,可按活动状态筛选</div></div>
- <div class="screen-card"><div class="screen-card-icon" style="background:#fff7e6;">📍</div><div class="screen-card-name">page-training-activity-detail</div><div class="screen-card-desc">线下培训活动详情,含基本信息、签到统计高亮区域、两个人员名单 Tab</div></div>
- <div class="screen-card"><div class="screen-card-icon" style="background:#eef3fd;">🎓</div><div class="screen-card-name">page-exam-template</div><div class="screen-card-desc">考试模板配置页,三个考试类型 Tab,每个 Tab 含五个配置子导航</div></div>
- </div>
- </div>
- <div class="divider"></div>
- <!-- ===== TRAINING MODULE ===== -->
- <div class="section" id="training">
- <div class="section-title">培训活动模块</div>
- <div class="section-desc">培训活动模块包含培训计划和线下培训两个子功能,支持管理员全流程管理培训的创建、发布、签到与统计。</div>
- <div class="sub-section" id="training-plan">
- <div class="sub-title">培训计划</div>
- <div class="feature-grid-3">
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">📋</div><div><div class="feature-name">培训计划列表</div><div class="feature-tag">page-training-plan</div></div></div>
- <ul class="feature-list">
- <li>表格形式展示所有培训计划,支持按培训名称关键字搜索过滤</li>
- <li>表格列:培训名称、分类、培训时间、签到人数、状态、操作</li>
- <li>状态标签区分:<span class="tag tag-green">已发布</span> / <span class="tag tag-gray">草稿</span>,一键切换发布状态</li>
- <li>操作列含编辑、查看详情、删除入口</li>
- <li>右上角"新建培训"按钮,跳转新建表单页</li>
- <li>支持按状态(已发布/草稿)筛选培训记录</li>
- </ul>
- </div>
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">➕</div><div><div class="feature-name">新建/编辑培训</div><div class="feature-tag">page-training-new</div></div></div>
- <ul class="feature-list">
- <li>培训名称:文本输入,必填,最大 100 字</li>
- <li>培训分类:下拉选择,如化学安全、生物安全、消防安全等</li>
- <li>培训时间:起止时间选择器,精确到分钟</li>
- <li>培训地点:文本输入,如具体教室楼层</li>
- <li>主讲人:输入主讲人姓名与单位</li>
- <li>学时/积分:设置本次培训可获得的学时数和积分值</li>
- <li>培训简介:富文本编辑区域,支持图文描述</li>
- <li>底部操作:保存草稿 / 直接发布,两种保存方式</li>
- </ul>
- </div>
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">📊</div><div><div class="feature-name">培训详情与签到记录</div><div class="feature-tag">page-training-record</div></div></div>
- <ul class="feature-list">
- <li>页面顶部展示签到二维码,管理员现场投影供学生扫码</li>
- <li>二维码每 5 分钟自动刷新,防止截图滥用</li>
- <li>统计数据卡片:总报名人数、已签到人数、未签到人数、签到率</li>
- <li>参与名单列表:姓名、学工号、学院、签到时间,支持手动补签</li>
- <li>支持按已签到/未签到切换查看名单</li>
- <li>名单可导出为 Excel 表格文件</li>
- </ul>
- </div>
- </div>
- <div class="sub-title" style="margin-top:8px;">培训计划操作流程</div>
- <div class="flow-row">
- <div class="flow-step"><div class="flow-num">1</div><div class="flow-name">新建培训</div><div class="flow-desc">点击"新建培训"进入表单填写页</div></div>
- <div class="flow-arrow">→</div>
- <div class="flow-step"><div class="flow-num">2</div><div class="flow-name">填写信息</div><div class="flow-desc">填写名称、时间、地点、主讲人、学时积分</div></div>
- <div class="flow-arrow">→</div>
- <div class="flow-step"><div class="flow-num">3</div><div class="flow-name">切换发布</div><div class="flow-desc">保存草稿后在列表中一键切换为已发布</div></div>
- <div class="flow-arrow">→</div>
- <div class="flow-step"><div class="flow-num">4</div><div class="flow-name">学生报名签到</div><div class="flow-desc">学生在移动端报名并到场扫码签到</div></div>
- <div class="flow-arrow">→</div>
- <div class="flow-step"><div class="flow-num">5</div><div class="flow-name">查看统计</div><div class="flow-desc">管理员在详情页实时查看签到数据与名单</div></div>
- </div>
- </div>
- <div class="sub-section" id="offline-training">
- <div class="sub-title">线下培训</div>
- <div class="feature-grid-2">
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">🎤</div><div><div class="feature-name">活动列表</div><div class="feature-tag">page-training-activity-list</div></div></div>
- <ul class="feature-list">
- <li>默认卡片视图展示线下培训活动,每张卡片显示封面图、活动名称、时间地点、报名人数</li>
- <li>右上角切换按钮:卡片视图 / 列表视图,列表视图以表格行展示</li>
- <li>顶部状态筛选栏:全部 / 进行中 / 待开始 / 已结束,快速过滤活动</li>
- <li>搜索框支持按活动名称关键字查找</li>
- <li>活动卡片右上角显示活动状态标签:<span class="tag tag-green">进行中</span> / <span class="tag tag-blue">待开始</span> / <span class="tag tag-gray">已结束</span></li>
- <li>点击卡片或行进入活动详情页查看完整信息</li>
- </ul>
- </div>
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#fff7e6;">📍</div><div><div class="feature-name">培训详情</div><div class="feature-tag">page-training-activity-detail</div></div></div>
- <ul class="feature-list">
- <li>基本信息区域:活动名称、时间、地点、主讲人、活动简介</li>
- <li>签到统计高亮区域:大号数字卡片突出展示总报名、已签到、未签到人数及签到率百分比</li>
- <li>签到二维码展示区:管理员现场展示供学生扫码,支持一键刷新二维码</li>
- <li>人员名单双 Tab 切换:已签到名单 Tab / 未签到名单 Tab</li>
- <li>名单表格列:姓名、学工号、所在学院、签到时间(未签到则为空)</li>
- <li>支持手动为未签到学生补录签到记录,需填写补签原因</li>
- </ul>
- </div>
- </div>
- <div class="notice notice-info"><span class="notice-icon">💡</span><div>线下培训中的<strong>已签到/未签到名单</strong>按学工号与姓名双列展示,并标注所在学院信息,方便管理员快速核对人员。未签到名单支持手动补签功能,需管理员权限操作,补签记录留存审计日志。</div></div>
- </div>
- </div>
- <div class="divider"></div>
- <!-- ===== EXAM MODULE ===== -->
- <div class="section" id="exam">
- <div class="section-title">考试管理模块</div>
- <div class="section-desc">考试管理模块目前包含考试模板一个功能页面,支持配置三类考试(开学考试/分级考试/应知应会)的全部参数,每类考试通过五个子导航分步配置。</div>
- <div class="notice notice-warn"><span class="notice-icon">⚠️</span><div>考试模板为<strong>全局唯一模板</strong>,修改任意配置项后,将对所有已分配该考试类型的学生产生影响。建议在非考试高峰期进行配置修改,并提前通知相关管理人员。配置修改后系统自动记录变更日志,可在审计记录中查阅。</div></div>
- <div class="sub-title">三种考试类型说明</div>
- <div class="feature-grid-3">
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">🎓</div><div><div class="feature-name">开学考试</div><div class="feature-tag">Tab 1</div></div></div>
- <ul class="feature-list">
- <li>面向新入学学生,学年开始时强制参加</li>
- <li>考察基础安全知识,覆盖面广</li>
- <li>通过后颁发基础安全教育证书</li>
- <li>包含基本配置、考试范围、试卷配置、考前配置、获得证书五个子导航</li>
- <li>可配置不同年级、学院的差异化要求</li>
- </ul>
- </div>
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">🎯</div><div><div class="feature-name">分级考试</div><div class="feature-tag">Tab 2</div></div></div>
- <ul class="feature-list">
- <li>面向有特定实验室准入需求的学生</li>
- <li>按实验室危险等级分级设置考试难度</li>
- <li>通过后颁发对应等级安全操作资质证书</li>
- <li>包含基本配置、考试范围、试卷配置、考前配置、获得证书五个子导航</li>
- <li>考试范围可精细到专业与年级维度</li>
- </ul>
- </div>
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">📖</div><div><div class="feature-name">应知应会</div><div class="feature-tag">Tab 3</div></div></div>
- <ul class="feature-list">
- <li>面向实验室日常安全知识巩固</li>
- <li>题目偏向操作规范与应急处置知识</li>
- <li>可设置为周期性参加,持续强化安全意识</li>
- <li>包含基本配置、考试范围、试卷配置、考前配置、获得证书五个子导航</li>
- <li>答题次数可配置,支持多次重考</li>
- </ul>
- </div>
- </div>
- <div class="sub-title">子导航配置项详解</div>
- <div class="feature-grid-3" style="margin-bottom:18px;">
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">📝</div><div><div class="feature-name">基本配置</div><div class="feature-tag">子导航 1 · 考试参数</div></div></div>
- <ul class="feature-list">
- <li>考试名称:可自定义展示给学生的考试标题</li>
- <li>考试时长:设置答题限制时间,单位分钟,范围 10~180 分钟</li>
- <li>满分设置:设置本次考试总分值,默认 100 分</li>
- <li>及格分数线:设置通过考试所需最低得分,默认 60 分</li>
- <li>答题次数限制:设置学生最多可参加该考试的次数,0 表示不限</li>
- <li>考试说明:富文本区域,向学生展示考前注意事项与考试规则</li>
- </ul>
- </div>
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">🏫</div><div><div class="feature-name">考试范围</div><div class="feature-tag">子导航 2 · 适用人群</div></div></div>
- <ul class="feature-list">
- <li>适用学院:多选下拉框,选择哪些学院的学生需参加本考试</li>
- <li>适用专业:在所选学院下进一步限定专业范围,支持全选</li>
- <li>适用年级:多选年级(大一/大二/大三/大四/研一/研二等)</li>
- <li>排除规则:可设置特定学院或专业豁免该考试</li>
- <li>范围生效时间:设置考试范围的有效起止日期</li>
- <li>保存后实时生效,范围内学生将在考试列表中看到该考试任务</li>
- </ul>
- </div>
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">📄</div><div><div class="feature-name">试卷配置</div><div class="feature-tag">子导航 3 · 出题规则</div></div></div>
- <ul class="feature-list">
- <li>题目总数:设置每次考试抽取的总题目数量</li>
- <li>题型比例:分别设置单选题、多选题、判断题的数量或比例</li>
- <li>随机出题规则:从题库随机抽取,每次考试题目不重复</li>
- <li>知识点覆盖:可设置各知识点模块的抽题数量,保证覆盖面</li>
- <li>难度分布:按难度(简单/中等/困难)设置抽题比例</li>
- <li>预览试卷:配置完成后可预览示例试卷结构,校验配置合理性</li>
- </ul>
- </div>
- </div>
- <div class="feature-grid-2">
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">📚</div><div><div class="feature-name">考前配置</div><div class="feature-tag">子导航 4 · 考前门槛</div></div></div>
- <ul class="feature-list">
- <li>考前学习要求:是否强制要求学生完成指定课程后方可参加考试</li>
- <li>关联课程:多选绑定考前必修课程,未完成则考试入口置灰</li>
- <li>学时门槛:设置学生需完成的最低学时数才能解锁考试资格</li>
- <li>学习时间窗口:限定学生必须在考试开始前 N 天内完成考前学习</li>
- <li>考前提醒:开启后系统在考试截止前自动向未完成学生推送通知</li>
- <li>配置保存后自动同步至学生端考试任务卡片的门槛提示信息</li>
- </ul>
- </div>
- <div class="feature-card">
- <div class="feature-card-header"><div class="feature-icon" style="background:#eef3fd;">🎍</div><div><div class="feature-name">获得证书</div><div class="feature-tag">子导航 5 · 证书配置</div></div></div>
- <ul class="feature-list">
- <li>是否颁发证书:开关控制,关闭则通过考试后不颁发证书</li>
- <li>证书模板:选择证书外观模板,支持多种样式(正式/简约/彩色)</li>
- <li>颁发条件:设置通过该考试且达到指定分数后自动颁发</li>
- <li>证书有效期:设置证书的有效时长(如 1 年/2 年/永久有效)</li>
- <li>证书名称:自定义证书上展示的资质名称,如"实验室安全操作资质证书"</li>
- <li>证书预览:可预览证书样式,填写示例信息确认展示效果</li>
- </ul>
- </div>
- </div>
- </div>
- <div class="divider"></div>
- <!-- ===== ROLES ===== -->
- <div class="section" id="roles">
- <div class="section-title">角色权限</div>
- <div class="section-desc">管理后台内置三种管理员角色,权限由系统管理员在后台统一分配。不同角色可操作的功能范围不同,前端根据角色动态控制菜单显示与操作按钮权限。</div>
- <table class="spec-table">
- <thead>
- <tr>
- <th>角色</th>
- <th>可操作功能</th>
- <th>备注</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td><span class="tag tag-orange">培训管理员</span></td>
- <td>培训计划 CRUD(新建、编辑、删除、查看);线下培训管理(查看活动列表与详情);签到统计(查看统计数据、已签到/未签到名单);签到二维码展示与刷新;手动补签操作;名单导出 Excel</td>
- <td>仅可操作"培训活动"一级菜单下的所有功能,无法访问考试管理模块</td>
- </tr>
- <tr>
- <td><span class="tag tag-blue">考试配置管理员</span></td>
- <td>考试模板配置(开学考试/分级考试/应知应会三类);基本配置修改;考试范围设置;试卷配置(题目数量/题型/随机规则);考前配置(学习要求/学时门槛);证书配置(模板/颁发条件/有效期)</td>
- <td>仅可操作"考试管理"一级菜单下的所有功能,无法访问培训活动模块</td>
- </tr>
- <tr>
- <td><span class="tag tag-purple">系统管理员</span></td>
- <td>拥有以上两种角色的全部权限;另可管理管理员账号(创建/禁用/角色分配);查看全局操作审计日志;配置系统公告与平台基础参数</td>
- <td>最高权限角色,建议仅分配给信息化管理中心核心运维人员,数量控制在 2~3 人</td>
- </tr>
- </tbody>
- </table>
- <div class="notice notice-warn"><span class="notice-icon">⚠️</span><div>角色权限由系统管理员在后台账号管理模块统一配置,一个账号可同时拥有多个角色(如同时具备培训管理员和考试配置管理员权限)。权限变更实时生效,无需重新登录。请妥善保管管理员账号,定期审查账号权限分配的合理性。</div></div>
- </div>
- </div><!-- end main-content -->
- </div><!-- end doc-body -->
- <!-- ===== FOOTER ===== -->
- <div class="doc-footer">
- <div>© 2026 实验室安全教育平台 · 管理后台 v1.0 | 文档版本:2026-08 | 技术支持:信息化管理中心</div>
- <div style="display:flex;gap:24px;align-items:center;">
- <span>💻 PC 管理后台</span>
- <span>📂 5 个功能页面</span>
- <span>🔒 3 种管理员角色</span>
- </div>
- </div>
- </div><!-- end page -->
- </body>
- </html>
|