From aec5b6f6b1ffe9819ea41dce9dc06214aafacdbe Mon Sep 17 00:00:00 2001 From: meoacgx Date: Fri, 19 Dec 2025 17:51:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=88=97=E8=A1=A8=E5=A2=9E?= =?UTF-8?q?=E5=BC=BA=EF=BC=9A=E5=85=A8=E9=80=89/=E5=8F=8D=E9=80=89/?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E5=B7=B2=E9=80=89=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Pages/Accounts.razor | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/src/TelegramPanel.Web/Components/Pages/Accounts.razor b/src/TelegramPanel.Web/Components/Pages/Accounts.razor index b025061..dea5602 100644 --- a/src/TelegramPanel.Web/Components/Pages/Accounts.razor +++ b/src/TelegramPanel.Web/Components/Pages/Accounts.razor @@ -28,6 +28,18 @@ + + 全选 + + + 反选 + + + 删除已选 + 批量刷新状态 @@ -263,6 +275,62 @@ } } + private Task SelectAllFiltered() + { + selectedAccounts = filteredAccounts.ToHashSet(); + return Task.CompletedTask; + } + + private Task InvertSelection() + { + var targets = filteredAccounts.ToList(); + foreach (var a in targets) + { + if (selectedAccounts.Contains(a)) + selectedAccounts.Remove(a); + else + selectedAccounts.Add(a); + } + return Task.CompletedTask; + } + + private async Task DeleteSelectedAccounts() + { + var targets = selectedAccounts.ToList(); + if (targets.Count == 0) + { + Snackbar.Add("未选择任何账号", Severity.Info); + return; + } + + bool? result = await DialogService.ShowMessageBox( + "确认删除", + $"确定要删除已选账号({targets.Count} 个)吗?将同时清理 sessions 文件,且不可恢复。", + yesText: "删除", cancelText: "取消"); + + if (result != true) + return; + + loading = true; + try + { + foreach (var a in targets) + await AccountManagement.DeleteAccountAsync(a.Id); + + selectedAccounts.Clear(); + await LoadAccounts(); + Snackbar.Add("删除完成", Severity.Success); + } + catch (Exception ex) + { + Snackbar.Add($"删除失败:{ex.Message}", Severity.Error); + } + finally + { + loading = false; + } + } + private void ExportSelectedAccounts() { var ids = selectedAccounts.Select(a => a.Id).Distinct().ToList();