Files
xsk-education-management/app/static/admin.html
T
2026-06-15 11:22:52 +08:00

241 lines
9.4 KiB
HTML

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>管理后台</title>
<link rel="stylesheet" href="/static/styles.css?v=20260615-summary-ingest" />
</head>
<body>
<header class="topbar">
<div>
<h1>管理后台</h1>
<p id="adminHealthText">正在读取管理状态</p>
</div>
<div class="top-actions">
<a class="nav-button" href="/">课程记录</a>
<a class="nav-button" href="/admin/logout">退出</a>
<button id="refreshBtn" class="icon-button" title="刷新" type="button" aria-label="刷新"></button>
</div>
</header>
<main class="layout account-layout admin-layout">
<nav class="admin-tabs" aria-label="管理后台功能">
<button class="admin-tab is-active" data-admin-tab="accounts" type="button">课时账户</button>
<button class="admin-tab" data-admin-tab="reviews" type="button">纠错审核</button>
<button class="admin-tab" data-admin-tab="summaries" type="button">课程小结审核</button>
<button class="admin-tab" data-admin-tab="logs" type="button">操作记录</button>
<button class="admin-tab" data-admin-tab="register" type="button">登记</button>
</nav>
<section id="accountsPanel" class="panel admin-panel">
<div class="section-head">
<h2>课时账户</h2>
<div class="quick-actions">
<select id="accountStatus" aria-label="账户状态筛选">
<option value="">全部状态</option>
<option value="欠费">欠费</option>
<option value="预警">预警</option>
<option value="正常">正常</option>
<option value="结课">结课</option>
<option value="退费">退费</option>
</select>
<button id="newAccountBtn" class="chip" type="button">新增账户</button>
</div>
</div>
<form id="accountForm" class="search-row account-search-row">
<input id="accountQuery" autocomplete="off" placeholder="学生姓名或学生ID" />
<button type="submit">查询</button>
</form>
<div id="accountMeta" class="summary-grid"></div>
<div id="accountEditor" class="admin-editor" hidden>
<div class="section-head compact-head">
<h2 id="accountEditorTitle">新增账户</h2>
<button id="cancelAccountEditBtn" class="secondary-button" type="button">取消</button>
</div>
<form id="accountEditForm" class="admin-form">
<div class="form-grid">
<label>
学生ID
<input id="editStudentId" autocomplete="off" placeholder="新增时自动生成" />
</label>
<label>
学生姓名
<input id="editStudent" autocomplete="off" required />
</label>
<label>
剩余课时
<input id="editRemaining" inputmode="decimal" required />
</label>
<label>
账户状态
<select id="editStatus">
<option value="正常">正常</option>
<option value="预警">预警</option>
<option value="欠费">欠费</option>
<option value="结课">结课</option>
<option value="退费">退费</option>
</select>
</label>
<label class="span-2">
缴费记录
<textarea id="editPayments" rows="4" placeholder="每行一条:2026-06-01:53"></textarea>
</label>
<label class="span-2">
备注
<textarea id="editNote" rows="3"></textarea>
</label>
</div>
<p id="accountEditError" class="correction-error" hidden></p>
<div class="modal-actions">
<button type="submit">保存账户</button>
</div>
</form>
</div>
<div class="table-wrap account-table-wrap">
<table>
<thead>
<tr>
<th>学生</th>
<th>状态</th>
<th class="num">剩余课时</th>
<th>缴费记录</th>
<th>备注</th>
<th>操作</th>
</tr>
</thead>
<tbody id="accountRows"></tbody>
</table>
</div>
</section>
<section id="reviewsPanel" class="panel admin-panel" hidden>
<div class="section-head">
<h2>纠错审核</h2>
<select id="reviewStatus" aria-label="审核状态筛选">
<option value="pending">待审核</option>
<option value="conflict">冲突</option>
<option value="approved">已批准</option>
<option value="rejected">已驳回</option>
<option value="">全部状态</option>
</select>
</div>
<div id="reviewMeta" class="summary-grid"></div>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>编号</th>
<th>状态</th>
<th>原记录</th>
<th>修改后</th>
<th>提交时间</th>
<th>操作</th>
</tr>
</thead>
<tbody id="reviewRows"></tbody>
</table>
</div>
</section>
<section id="summariesPanel" class="panel admin-panel" hidden>
<div class="section-head">
<h2>课程小结审核</h2>
<select id="summaryReviewStatus" aria-label="课程小结审核状态筛选">
<option value="pending">待审核</option>
<option value="conflict">冲突</option>
<option value="approved">已批准</option>
<option value="rejected">已驳回</option>
<option value="">全部状态</option>
</select>
</div>
<div id="summaryReviewMeta" class="summary-grid"></div>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>编号</th>
<th>状态</th>
<th>课程信息</th>
<th>候选记录</th>
<th>小结原文</th>
<th>原因</th>
<th>操作</th>
</tr>
</thead>
<tbody id="summaryReviewRows"></tbody>
</table>
</div>
</section>
<section id="logsPanel" class="panel admin-panel" hidden>
<div class="section-head">
<h2>操作记录</h2>
<div class="quick-actions">
<select id="logOperation" aria-label="操作类型筛选">
<option value="">全部操作</option>
<option value="course_summary_ingest">小结接收</option>
<option value="admin_task_approve">审核批准</option>
<option value="admin_task_reject">审核驳回</option>
</select>
<select id="logStatus" aria-label="操作结果筛选">
<option value="">全部结果</option>
<option value="auto_registered">自动入账</option>
<option value="review">待审核</option>
<option value="duplicate">重复</option>
<option value="rejected">失败/驳回</option>
<option value="approved">已批准</option>
</select>
</div>
</div>
<form id="logFilterForm" class="search-row log-search-row">
<input id="logStudent" autocomplete="off" placeholder="按学生筛选" />
<button type="submit">筛选</button>
</form>
<div id="logMeta" class="summary-grid"></div>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>时间</th>
<th>操作</th>
<th>结果</th>
<th>学生</th>
<th>批次/任务</th>
<th>详情</th>
</tr>
</thead>
<tbody id="logRows"></tbody>
</table>
</div>
</section>
<section id="registerPanel" class="panel admin-panel" hidden>
<div class="section-head">
<h2>登记</h2>
</div>
<div class="register-grid">
<form id="classRegisterForm" class="admin-form">
<h3>上课记录登记</h3>
<textarea id="classRegisterLines" rows="10" placeholder="每行一条上课记录"></textarea>
<p id="classRegisterStatus" class="inline-account-loading"></p>
<div class="modal-actions">
<button type="submit">提交上课记录</button>
</div>
</form>
<form id="paymentRegisterForm" class="admin-form">
<h3>缴费登记</h3>
<textarea id="paymentRegisterLines" rows="10" placeholder="每行一条:学生-2026-06-01:53"></textarea>
<p id="paymentRegisterStatus" class="inline-account-loading"></p>
<div class="modal-actions">
<button type="submit">提交缴费记录</button>
</div>
</form>
</div>
</section>
</main>
<script src="/static/admin.js?v=20260615-summary-ingest"></script>
</body>
</html>