This commit is contained in:
aaron 2026-05-19 09:57:46 +08:00
parent b67c326aa3
commit 46ceae0c9a
2 changed files with 45 additions and 1 deletions

View File

@ -346,6 +346,7 @@ class Handler(BaseHTTPRequestHandler):
"/templates/delete": self.delete_template,
"/rules/create": self.create_rule,
"/rules/update": self.update_rule,
"/rules/toggle": self.toggle_rule,
"/rules/delete": self.delete_rule,
"/test/send": self.send_test,
"/account/password": self.change_password,
@ -799,7 +800,15 @@ class Handler(BaseHTTPRequestHandler):
<td>{'<br>'.join(item for item in conditions if item) or '-'}</td>
<td>{rule['priority']}</td>
<td><div class="tag-list">{target_badges}</div></td>
<td><span class="status">{'启用' if rule['enabled'] else '停用'}</span></td>
<td>
<form class="inline" method="post" action="/rules/toggle">
<input type="hidden" name="id" value="{rule['id']}">
<label class="switch switch-compact" title="切换规则启用状态">
<input name="enabled" type="checkbox" {'checked' if rule['enabled'] else ''} onchange="this.form.submit()">
<span></span><strong>{'启用' if rule['enabled'] else '停用'}</strong>
</label>
</form>
</td>
<td><a class="button-link" href="/rules/edit?id={rule['id']}">编辑</a><a class="button-link danger-link" href="/rules/delete?id={rule['id']}">删除</a></td>
</tr>"""
header = """<header class="page-header"><div><h1>路由规则</h1><p>周期、品种、策略至少填写一个;空字段表示不限。消息统一用飞书卡片发送。</p></div><a class="button-link" href="/rules/new">新增规则</a></header>"""
@ -1121,6 +1130,16 @@ class Handler(BaseHTTPRequestHandler):
conn.execute("DELETE FROM routing_rules WHERE id = ?", (form["id"],))
redirect(self, "/rules")
def toggle_rule(self) -> None:
form = parse_form(self)
enabled = 1 if form.get("enabled") == "on" else 0
with self.context.db.connect() as conn:
conn.execute(
"UPDATE routing_rules SET enabled = ?, updated_at = ? WHERE id = ?",
(enabled, now_iso(), form.get("id", "")),
)
redirect(self, "/rules")
def update_rule(self) -> None:
form = parse_form_multi(self)
target_ids = [int(value) for value in form.get("target_ids", [])]

View File

@ -386,6 +386,31 @@ td textarea {
font: 800 14px ui-sans-serif, system-ui, sans-serif;
}
.switch-compact {
margin: 0;
}
.switch-compact span {
width: 44px;
height: 26px;
}
.switch-compact span::after {
top: 4px;
left: 4px;
width: 18px;
height: 18px;
}
.switch-compact input:checked + span::after {
transform: translateX(18px);
}
.switch-compact strong {
min-width: 28px;
font-size: 13px;
}
.checks {
margin: 8px 0 12px;
}