Files
LocalNav/templates/admin_services.html
T
2026-05-30 11:52:21 +08:00

81 lines
2.7 KiB
HTML

{% extends "base.html" %}
{% block title %}服务管理 · 本地导航{% endblock %}
{% block body %}
<header class="topbar">
<h1>服务管理</h1>
<nav>
<a href="{{ url_for('index') }}">返回导航</a>
<a href="{{ url_for('admin_groups') }}">分组管理</a>
<a href="{{ url_for('logout') }}">退出</a>
</nav>
</header>
<div class="page-wrap">
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
<div class="flash-wrap">
{% for cat, msg in messages %}
<div class="flash {{ cat }}">{{ msg }}</div>
{% endfor %}
</div>
{% endif %}
{% endwith %}
<div class="toolbar">
<h1 style="margin: 0; flex: 1">内网服务</h1>
<a class="btn btn-primary" href="{{ url_for('admin_service_new') }}" style="width: auto">新建服务</a>
</div>
<form class="toolbar" method="get" action="{{ url_for('admin_services') }}">
<label for="group_id" class="hint" style="margin: 0">按分组筛选</label>
<select name="group_id" id="group_id" onchange="this.form.submit()">
<option value="">全部分组</option>
{% for g in groups %}
<option value="{{ g.id }}" {% if filter_group_id == g.id %}selected{% endif %}>{{ g.name }}</option>
{% endfor %}
</select>
</form>
<div class="table-wrap">
<table class="data">
<thead>
<tr>
<th>名称</th>
<th>地址</th>
<th>分组</th>
<th>排序</th>
<th style="width: 140px">操作</th>
</tr>
</thead>
<tbody>
{% for s in services %}
<tr>
<td>{{ s.name }}{% if s.embed_kind == 'hub' %} <span class="hint">(中控)</span>{% endif %}</td>
<td><code style="font-size: 0.82rem">{{ s.build_url() }}</code></td>
<td>{{ s.group.name if s.group else '—' }}</td>
<td>{{ s.sort_order }}</td>
<td>
<a href="{{ url_for('admin_service_edit', sid=s.id) }}">编辑</a>
·
<form
class="inline-form"
method="post"
action="{{ url_for('admin_service_delete', sid=s.id) }}"
onsubmit="return confirm('确定删除该服务?');"
>
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
<button type="submit" class="btn btn-danger">删除</button>
</form>
</td>
</tr>
{% else %}
<tr>
<td colspan="5" class="hint">暂无服务,点击「新建服务」</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<p class="hint">说明:目标站点若设置禁止被嵌入(如部分面板),iframe 会空白或报错,属对方安全策略,与本站无关。</p>
</div>
{% endblock %}