@page "/setting/unifiedsetting" @using EasyTemplate.Service @using EasyTemplate.Tool.Entity.App @inject NozzleService nozzleService @inject IJSRuntime JSRuntime
油机列表
@*
*@
@if (paginatedEngines != null) { @foreach (var engine in paginatedEngines) {
油机 @engine.EngineId
} }
@if (engines != null && engines.Count > pageSize) { }
主板列表
@*
*@
@if (paginatedBoards != null) { @foreach (var board in paginatedBoards) {
主板 @board.BoardId
} }
@if (filteredBoards != null && filteredBoards.Count > pageSize) { }
油枪列表
@if (paginatedNozzles != null) { @foreach (var nozzle in paginatedNozzles) {
油枪 @nozzle.NozzleId
节点: @nozzle.node | 产品: @nozzle.product | 状态: @(nozzle.disable ? "禁用" : "启用") | MN码: @nozzle.mncode
} }
@if (filteredNozzles != null && filteredNozzles.Count > pageSize) { }
@code { // 数据列表 private List engines = new(); private List allBoards = new(); private List filteredBoards = new(); private List allNozzles = new(); private List filteredNozzles = new(); private List boards = new(); // 用于下拉选择 // 分页相关 private const int pageSize = 8; // 每页显示条数 private int currentPage_Engine = 1; private int totalPages_Engine => engines == null ? 0 : (int)Math.Ceiling((double)engines.Count / pageSize); private List paginatedEngines => engines?.Skip((currentPage_Engine - 1) * pageSize).Take(pageSize).ToList() ?? new List(); private int currentPage_Board = 1; private int totalPages_Board => filteredBoards == null ? 0 : (int)Math.Ceiling((double)filteredBoards.Count / pageSize); private List paginatedBoards => filteredBoards?.Skip((currentPage_Board - 1) * pageSize).Take(pageSize).ToList() ?? new List(); private int currentPage_Nozzle = 1; private int totalPages_Nozzle => filteredNozzles == null ? 0 : (int)Math.Ceiling((double)filteredNozzles.Count / pageSize); private List paginatedNozzles => filteredNozzles?.Skip((currentPage_Nozzle - 1) * pageSize).Take(pageSize).ToList() ?? new List(); // 当前选中项 private int selectedEngineId = 0; private int selectedBoardId = 0; // 油机相关 private TEngine currentEngine = new(); private string engineModalTitle = ""; private bool isEngineEditMode = false; private bool showEngineModal = false; // 主板相关 private TBoard currentBoard = new(); private string boardModalTitle = ""; private bool isBoardEditMode = false; private bool showBoardModal = false; // 油枪相关 private TNozzle currentNozzle = new(); private string nozzleModalTitle = ""; private bool isNozzleEditMode = false; private bool showNozzleModal = false; protected override async Task OnInitializedAsync() { await LoadAllData(); } private async Task LoadAllData() { try { // 加载所有数据 engines = await nozzleService.GetEnginesWithDetailsAsync(); allBoards = await nozzleService.GetBoardsAsync(); allNozzles = await nozzleService.GetNozzlesAsync(); boards = new List(allBoards); // 用于下拉选择 // 默认显示所有数据 //filteredBoards = new List(allBoards); //filteredNozzles = new List(allNozzles); // 重置分页 currentPage_Engine = 1; currentPage_Board = 1; currentPage_Nozzle = 1; StateHasChanged(); } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("alert", $"加载数据失败: {ex.Message}"); } } // 分页切换方法 private void ChangePage_Engine(int page) { if (page >= 1 && page <= totalPages_Engine) { currentPage_Engine = page; StateHasChanged(); } } private void ChangePage_Board(int page) { if (page >= 1 && page <= totalPages_Board) { currentPage_Board = page; StateHasChanged(); } } private void ChangePage_Nozzle(int page) { if (page >= 1 && page <= totalPages_Nozzle) { currentPage_Nozzle = page; StateHasChanged(); } } // 油机选择 private void SelectEngine(int engineId) { selectedEngineId = engineId; selectedBoardId = 0; // 重置主板选择 if (engineId == 0) { // 显示所有主板和油枪 //filteredBoards = new List(allBoards); //filteredNozzles = new List(allNozzles); } else { // 只显示选定油机的主板 filteredBoards = allBoards.Where(b => b.EngineId == engineId).ToList(); // 显示这些主板下的所有油枪 var boardIds = filteredBoards.Select(b => b.BoardId).ToList(); filteredNozzles = allNozzles.Where(n => boardIds.Contains(n.BoardId)).ToList(); } // 重置分页 currentPage_Board = 1; currentPage_Nozzle = 1; StateHasChanged(); } // 主板选择 private void SelectBoard(int boardId) { selectedBoardId = boardId; if (boardId == 0) { // 如果选择了"显示所有主板",则显示当前筛选条件下的所有油枪 if (selectedEngineId == 0) { filteredNozzles = new List(allNozzles); } else { var boardIds = filteredBoards.Select(b => b.BoardId).ToList(); filteredNozzles = allNozzles.Where(n => boardIds.Contains(n.BoardId)).ToList(); } } else { // 只显示选定主板的油枪 filteredNozzles = allNozzles.Where(n => n.BoardId == boardId).ToList(); } // 重置油枪分页 currentPage_Nozzle = 1; StateHasChanged(); } // ===== 油机操作 ===== private void ShowCreateEngineModal() { currentEngine = new TEngine(); engineModalTitle = "添加油机"; isEngineEditMode = false; showEngineModal = true; StateHasChanged(); } private void ShowEditEngineModal(TEngine engine) { currentEngine = new TEngine { EngineId = engine.EngineId, factory_id = engine.factory_id, factory_id_2 = engine.factory_id_2 }; engineModalTitle = "编辑油机"; isEngineEditMode = true; showEngineModal = true; StateHasChanged(); } private void CloseEngineModal() { showEngineModal = false; StateHasChanged(); } private async Task SaveEngine() { try { if (isEngineEditMode) { await nozzleService.UpdateEngineAsync(currentEngine); } else { await nozzleService.CreateEngineAsync(currentEngine); } CloseEngineModal(); await LoadAllData(); // 重新选择当前油机以刷新视图 if (selectedEngineId > 0) { SelectEngine(selectedEngineId); } } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("alert", $"操作失败: {ex.Message}"); } } private async Task DeleteEngine(int id) { var confirmed = await JSRuntime.InvokeAsync("confirm", "确定要删除这个油机吗?这将同时删除其下属的所有主板和油枪!"); if (confirmed) { try { await nozzleService.DeleteEngineAsync(id); await LoadAllData(); // 如果删除的是当前选中的油机,重置选择 if (selectedEngineId == id) { SelectEngine(0); } } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("alert", $"删除失败: {ex.Message}"); } } } // ===== 主板操作 ===== private void ShowCreateBoardModal() { if (selectedEngineId == 0) { JSRuntime.InvokeVoidAsync("alert", "请先选择一个油机"); return; } currentBoard = new TBoard { EngineId = selectedEngineId }; boardModalTitle = "添加主板"; isBoardEditMode = false; showBoardModal = true; StateHasChanged(); } private void ShowEditBoardModal(TBoard board) { currentBoard = new TBoard { BoardId = board.BoardId, EngineId = board.EngineId, ip = board.ip }; boardModalTitle = "编辑主板"; isBoardEditMode = true; showBoardModal = true; StateHasChanged(); } private void CloseBoardModal() { showBoardModal = false; StateHasChanged(); } private async Task SaveBoard() { if (currentBoard.EngineId <= 0) { await JSRuntime.InvokeVoidAsync("alert", "请选择有效的油机ID"); return; } try { if (isBoardEditMode) { await nozzleService.UpdateBoardAsync(currentBoard); } else { await nozzleService.CreateBoardAsync(currentBoard); } CloseBoardModal(); await LoadAllData(); // 重新选择当前筛选条件 if (selectedEngineId > 0) { SelectEngine(selectedEngineId); } } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("alert", $"操作失败: {ex.Message}"); } } private async Task DeleteBoard(int id) { var confirmed = await JSRuntime.InvokeAsync("confirm", "确定要删除这个主板吗?这将同时删除其下属的所有油枪!"); if (confirmed) { try { await nozzleService.DeleteBoardAsync(id); await LoadAllData(); // 如果删除的是当前选中的主板,重置选择 if (selectedBoardId == id) { SelectBoard(0); } } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("alert", $"删除失败: {ex.Message}"); } } } // ===== 油枪操作 ===== private void ShowCreateNozzleModal() { if (selectedBoardId == 0) { JSRuntime.InvokeVoidAsync("alert", "请先选择一个主板"); return; } currentNozzle = new TNozzle { BoardId = selectedBoardId }; nozzleModalTitle = "添加油枪"; isNozzleEditMode = false; showNozzleModal = true; StateHasChanged(); } private void ShowEditNozzleModal(TNozzle nozzle) { currentNozzle = new TNozzle { NozzleId = nozzle.NozzleId, BoardId = nozzle.BoardId, node = nozzle.node, product = nozzle.product, disable = nozzle.disable, mncode = nozzle.mncode }; nozzleModalTitle = "编辑油枪"; isNozzleEditMode = true; showNozzleModal = true; StateHasChanged(); } private void CloseNozzleModal() { showNozzleModal = false; StateHasChanged(); } private async Task SaveNozzle() { if (currentNozzle.BoardId <= 0) { await JSRuntime.InvokeVoidAsync("alert", "请选择有效的主板ID"); return; } try { if (isNozzleEditMode) { await nozzleService.UpdateNozzleAsync(currentNozzle); } else { await nozzleService.CreateNozzleAsync(currentNozzle); } CloseNozzleModal(); await LoadAllData(); // 重新应用当前筛选 if (selectedBoardId > 0) { SelectBoard(selectedBoardId); } else if (selectedEngineId > 0) { SelectEngine(selectedEngineId); } } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("alert", $"操作失败: {ex.Message}"); } } private async Task DeleteNozzle(int id) { var confirmed = await JSRuntime.InvokeAsync("confirm", "确定要删除这个油枪吗?"); if (confirmed) { try { await nozzleService.DeleteNozzleAsync(id); await LoadAllData(); // 重新应用当前筛选 if (selectedBoardId > 0) { SelectBoard(selectedBoardId); } else if (selectedEngineId > 0) { SelectEngine(selectedEngineId); } } catch (Exception ex) { await JSRuntime.InvokeVoidAsync("alert", $"删除失败: {ex.Message}"); } } } }