SACC / templates /admin_schedules.html
cacode's picture
Split admin features into separate pages
f256f5b verified
{% extends "admin_layout.html" %}
{% block admin_title %}定时任务{% endblock %}
{% block admin_page_content %}
<section class="content-grid admin-grid reveal-up delay-2">
<article class="card span-2">
<div class="card-head split">
<div>
<span class="kicker">定时任务</span>
<h2>定时任务总览</h2>
<p>这里会列出每个用户当前的定时状态,并可直接在下方卡片中修改配置。</p>
</div>
<a href="{{ url_for('admin_users') }}" class="btn btn-ghost">返回用户管理</a>
</div>
<div class="course-table-wrap">
<table class="data-table">
<thead>
<tr>
<th>用户</th>
<th>状态</th>
<th>日期范围</th>
<th>每日时段</th>
<th>快速定位</th>
</tr>
</thead>
<tbody>
{% if users %}
{% for user in users %}
<tr>
<td>{{ user.display_name or user.student_id }}<br><small>{{ user.student_id }}</small></td>
<td>{{ '启用' if user.schedule and user.schedule.is_enabled else '关闭' }}</td>
<td>
{% if user.schedule and user.schedule.start_date and user.schedule.end_date %}
{{ user.schedule.start_date }} 至 {{ user.schedule.end_date }}
{% else %}
未设置
{% endif %}
</td>
<td>
{% if user.schedule and user.schedule.daily_start_time and user.schedule.daily_stop_time %}
{{ user.schedule.daily_start_time }} - {{ user.schedule.daily_stop_time }}
{% else %}
未设置
{% endif %}
</td>
<td><a href="#user-{{ user.id }}" class="inline-action">前往设置</a></td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan="5" class="empty-cell">还没有用户,暂时无法配置定时任务。</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
</article>
</section>
<section class="card reveal-up delay-3 span-2">
<div class="card-head">
<span class="kicker">按用户配置</span>
<h2>定时启动终止设置</h2>
<p>仅管理员可以配置。支持设置从几月几日开始、几月几日结束,以及每天自动启动和停止时间。</p>
</div>
<div class="user-card-grid">
{% for user in users %}
<section class="user-card" id="user-{{ user.id }}">
<div class="user-card-head">
<div>
<h3>{{ user.display_name or user.student_id }}</h3>
<p>{{ user.student_id }}</p>
</div>
<span class="status-pill status-{{ user.latest_task.status if user.latest_task else 'idle' }}">
{{ task_labels.get(user.latest_task.status, '未启动') if user.latest_task else '未启动' }}
</span>
</div>
<div class="chip-row tight">
<span class="chip">定时 {{ '开启' if user.schedule and user.schedule.is_enabled else '关闭' }}</span>
<span class="chip">最近任务 {{ user.latest_task.id if user.latest_task else '--' }}</span>
<span class="chip">尝试 {{ user.latest_task.total_attempts if user.latest_task else 0 }}</span>
<span class="chip">错误 {{ user.latest_task.total_errors if user.latest_task else 0 }}</span>
</div>
<form method="post" action="{{ url_for('update_user_schedule', user_id=user.id) }}" class="form-grid form-grid-compact slim-form schedule-form">
<label class="field">
<span>启用定时</span>
<input type="checkbox" name="schedule_enabled" value="1" {% if user.schedule and user.schedule.is_enabled %}checked{% endif %}>
</label>
<label class="field">
<span>开始日期</span>
<input type="date" name="start_date" value="{{ user.schedule.start_date if user.schedule else '' }}">
</label>
<label class="field">
<span>结束日期</span>
<input type="date" name="end_date" value="{{ user.schedule.end_date if user.schedule else '' }}">
</label>
<label class="field">
<span>每日启动</span>
<input type="time" name="daily_start_time" value="{{ user.schedule.daily_start_time if user.schedule else '' }}">
</label>
<label class="field">
<span>每日停止</span>
<input type="time" name="daily_stop_time" value="{{ user.schedule.daily_stop_time if user.schedule else '' }}">
</label>
<button type="submit" class="btn btn-secondary">保存定时设置</button>
</form>
</section>
{% else %}
<div class="empty-state-card">
还没有录入任何用户,请先到“用户管理”页面创建用户。
</div>
{% endfor %}
</div>
</section>
{% endblock %}