@page "/admin/common-codes" @using TaxBaik.Web.Services.AdminClients @using TaxBaik.Domain.Entities @attribute [Authorize] @inject ICommonCodeBrowserClient CommonCodeClient @inject ISnackbar Snackbar 공통관리
System 공통관리 공통코드 그룹과 항목을 일관된 기준으로 관리합니다.
그룹 @foreach (var group in groups) { @group } 새 코드 추가 @if (isLoading) { } else { 그룹 이름 순서 상태 작업 @context.CodeGroup @context.CodeValue @context.CodeName @context.SortOrder @(context.IsActive ? "활성" : "비활성") 수정 삭제 활성
저장 초기화
}
@code { private List groups = []; private List codes = []; private string selectedGroup = ""; private bool isLoading = true; private MudForm? form; private CommonCode editModel = new(); private bool isCreateMode = true; protected override async Task OnInitializedAsync() { groups = await CommonCodeClient.GetGroupsAsync(); selectedGroup = groups.FirstOrDefault() ?? ""; await LoadCodes(); PrepareCreate(); } private async Task OnGroupChanged(string value) { selectedGroup = value; await LoadCodes(); PrepareCreate(); } private async Task LoadCodes() { isLoading = true; codes = string.IsNullOrWhiteSpace(selectedGroup) ? [] : await CommonCodeClient.GetByGroupAsync(selectedGroup); isLoading = false; } private void PrepareCreate() { isCreateMode = true; editModel = new CommonCode { CodeGroup = selectedGroup, IsActive = true }; } private void EditCode(CommonCode code) { isCreateMode = false; editModel = new CommonCode { CodeGroup = code.CodeGroup, CodeValue = code.CodeValue, CodeName = code.CodeName, SortOrder = code.SortOrder, IsActive = code.IsActive }; } private async Task SaveCode() { if (form != null) { await form.Validate(); if (!form.IsValid) { Snackbar.Add("필수 항목을 입력하세요.", Severity.Warning); return; } } if (editModel.CodeValue.Contains(' ')) { Snackbar.Add("code_value에는 공백을 넣을 수 없습니다.", Severity.Error); return; } if (!await CommonCodeClient.UpsertAsync(editModel)) { Snackbar.Add("저장 실패", Severity.Error); return; } Snackbar.Add("저장되었습니다.", Severity.Success); await LoadCodes(); PrepareCreate(); } private async Task DeleteCode(CommonCode code) { if (!await CommonCodeClient.DeleteAsync(code.CodeGroup, code.CodeValue)) { Snackbar.Add("삭제 실패", Severity.Error); return; } Snackbar.Add("삭제되었습니다.", Severity.Success); await LoadCodes(); PrepareCreate(); } }