@page "/batch" @rendermode @(new InteractiveServerRenderMode()) @inject Services.ApiClientService ApiClient @inject IJSRuntime JSRuntime 批量操作 - DRS9 信息发布系统

批量操作

批量分配内容

将内容批量分配给多个设备或设备组

@if (_applications != null) { @foreach (var app in _applications) {
} }
批量推送命令

向多个设备发送控制命令

@if (_devices != null) { @foreach (var device in _devices) {
} }
批量启用/禁用

批量启用或禁用多个设备

@if (_devices != null) { @foreach (var device in _devices) {
} }
@code { private List _devices = new(); private List _applications = new(); private List _groups = new(); private Dictionary _selectedAppIds = new(); private Dictionary _selectedDeviceIds = new(); private Dictionary _toggleDeviceIds = new(); private int _batchAssignGroupId = 0; private string _batchCommand = "refresh"; protected override async Task OnInitializedAsync() { await LoadData(); } private async Task LoadData() { var devicesTask = ApiClient.GetDevicesAsync(); var appsTask = ApiClient.GetApplicationsAsync(); var groupsTask = ApiClient.GetDeviceGroupsAsync(); _devices = await devicesTask; _applications = await appsTask; _groups = await groupsTask; _selectedAppIds = _applications.ToDictionary(a => a.Id, _ => false); _selectedDeviceIds = _devices.ToDictionary(d => d.Id, _ => false); _toggleDeviceIds = _devices.ToDictionary(d => d.Id, _ => false); } private async Task ExecuteBatchAssign() { var selectedApps = _selectedAppIds.Where(kvp => kvp.Value).Select(kvp => kvp.Key).ToList(); if (_batchAssignGroupId > 0) { var groupDevices = _devices.Where(d => d.DeviceGroupId == _batchAssignGroupId).Select(d => d.Id).ToList(); if (groupDevices.Count == 0 || selectedApps.Count == 0) { await JSRuntime.InvokeVoidAsync("alert", "请选择设备和内容"); return; } await ApiClient.BatchAssignContentAsync(new BatchAssignContentRequest { DeviceIds = groupDevices, ApplicationIds = selectedApps }); await JSRuntime.InvokeVoidAsync("alert", "批量分配完成"); } else { await JSRuntime.InvokeVoidAsync("alert", "请选择设备组"); } } private async Task ExecuteBatchPush() { var selectedDevices = _selectedDeviceIds.Where(kvp => kvp.Value).Select(kvp => kvp.Key).ToList(); if (selectedDevices.Count == 0) { await JSRuntime.InvokeVoidAsync("alert", "请选择设备"); return; } await ApiClient.BatchPushAsync(new BatchPushRequest { DeviceIds = selectedDevices, MessageType = _batchCommand }); await JSRuntime.InvokeVoidAsync("alert", "命令推送完成"); } private async Task ExecuteBatchToggle(bool enable) { var selectedDevices = _toggleDeviceIds.Where(kvp => kvp.Value).Select(kvp => kvp.Key).ToList(); if (selectedDevices.Count == 0) { await JSRuntime.InvokeVoidAsync("alert", "请选择设备"); return; } await ApiClient.BatchToggleDevicesAsync(new BatchToggleDevicesRequest { DeviceIds = selectedDevices, IsEnabled = enable }); await JSRuntime.InvokeVoidAsync("alert", $"批量{(enable ? "启用" : "禁用")}完成"); await LoadData(); } }