@page "/admin/companies" @attribute [Authorize] @inject IApiClient ApiClient @inject IJSRuntime JS 고객사 관리
Settings

고객사 관리

등록된 고객사를 관리하고 새로운 고객사를 추가합니다.

@($"전체 고객사 {totalCompanies}개") 페이지 @currentPage / @totalPages
@if (isLoading) { } else {
@foreach (var item in companies) { }
회사코드 회사명 담당자 전화 이메일 활성 등록일
@item.CompanyCode @item.CompanyName @(item.ContactPerson ?? "—") @(item.Phone ?? "—") @(item.Email ?? "—") @(item.IsActive ? "활성" : "비활성") @item.CreatedAt.ToString("yyyy-MM-dd") 수정
}
@code { private List companies = []; private bool isLoading = true; private int currentPage = 1; private int totalPages = 1; private int totalCompanies = 0; private const int PageSize = 20; protected override async Task OnInitializedAsync() { await LoadData(); } private async Task LoadData() { try { isLoading = true; var response = await ApiClient.GetAsync($"company?page={currentPage}&pageSize={PageSize}"); IDictionary? dict = response as IDictionary; if (dict != null) { totalCompanies = (int)(dynamic)dict["total"]; totalPages = (totalCompanies + PageSize - 1) / PageSize; if (dict["data"] is System.Collections.IEnumerable dataList) { companies = new List(); foreach (var item in dataList) { if (item is IDictionary companyDict) { companies.Add(new CompanyDto { Id = (int)(dynamic)companyDict["id"], CompanyCode = (string)companyDict["companyCode"], CompanyName = (string)companyDict["companyName"], ContactPerson = (string?)companyDict["contactPerson"], Phone = (string?)companyDict["phone"], Email = (string?)companyDict["email"], IsActive = (bool)(dynamic)companyDict["isActive"], CreatedAt = DateTime.Parse(companyDict["createdAt"].ToString()!) }); } } } } } catch (Exception ex) { await JS.InvokeVoidAsync("alert", $"고객사 로드 실패: {ex.Message}"); } finally { isLoading = false; } } private async Task NextPage() { currentPage++; await LoadData(); } private async Task PreviousPage() { currentPage = Math.Max(1, currentPage - 1); await LoadData(); } private class CompanyDto { public int Id { get; set; } public string CompanyCode { get; set; } = ""; public string CompanyName { get; set; } = ""; public string? ContactPerson { get; set; } public string? Phone { get; set; } public string? Email { get; set; } public bool IsActive { get; set; } public DateTime CreatedAt { get; set; } } private string NavTo(string url) => url; }