feat(admin): 표준 화면 패턴으로 CRM 화면 정리

This commit is contained in:
2026-06-28 18:39:28 +09:00
parent 42e73fa694
commit d2cfcd90f0
7 changed files with 453 additions and 276 deletions
@@ -8,29 +8,35 @@
<PageTitle>계약 관리</PageTitle>
<div class="admin-container">
<div class="admin-header">
<div>
<MudText Typo="Typo.h5" Class="font-weight-bold">계약 관리</MudText>
@if (mrr > 0)
{
<MudText Typo="Typo.body2" Class="mt-2">
월 정기수익: <MudChip Size="Size.Small" Color="Color.Primary" Variant="Variant.Filled">₩@mrr.ToString("N0")</MudChip>
</MudText>
}
</div>
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="OpenCreateDialog" StartIcon="@Icons.Material.Filled.Add">
새 계약 추가
</MudButton>
<section class="admin-page-hero">
<div>
<MudText Typo="Typo.caption" Class="admin-eyebrow">CRM & 세무관리</MudText>
<MudText Typo="Typo.h4" Class="admin-page-title">계약 관리</MudText>
<MudText Typo="Typo.body2" Class="admin-page-subtitle">고객 계약과 월 정기수익을 함께 관리합니다.</MudText>
@if (mrr > 0)
{
<MudText Typo="Typo.body2" Class="mt-2">
월 정기수익:
<MudChip Size="Size.Small" Color="Color.Primary" Variant="Variant.Filled">₩@mrr.ToString("N0")</MudChip>
</MudText>
}
</div>
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="OpenCreateDialog" StartIcon="@Icons.Material.Filled.Add">
새 계약 추가
</MudButton>
</section>
@if (contracts == null)
<MudPaper Class="admin-surface" Elevation="0">
@if (contracts is null)
{
<MudProgressCircular Indeterminate="true" Class="mt-4" />
<MudProgressLinear Indeterminate="true" />
}
else if (contracts.Count == 0)
{
<MudAlert Severity="Severity.Info" Class="mt-4">계약이 없습니다.</MudAlert>
<div class="pa-6 text-center">
<MudIcon Icon="@Icons.Material.Filled.Description" Style="font-size:3rem; opacity:.3;" />
<MudText Class="mt-2 text-muted">계약이 없습니다.</MudText>
</div>
}
else
{
@@ -41,7 +47,7 @@
Striped="true"
Virtualize="true"
RowsPerPage="30"
Class="admin-grid mt-4">
Class="admin-grid">
<Columns>
<PropertyColumn Property="x => x.Id" Title="ID" Sortable="true" />
<TemplateColumn Title="고객">
@@ -92,7 +98,7 @@
</Columns>
</MudDataGrid>
}
</div>
</MudPaper>
<!-- Create Dialog -->
<MudDialog @bind-IsVisible="isDialogOpen" Options="new DialogOptions { MaxWidth = MaxWidth.Small, FullWidth = true }">
@@ -181,9 +187,11 @@
private async Task DeleteContract(int id)
{
var parameters = new DialogParameters();
parameters.Add("Title", "삭제 확인");
parameters.Add("Message", "이 계약을 삭제하시겠습니까?");
var parameters = new DialogParameters
{
{ "Title", "삭제 확인" },
{ "Message", "이 계약을 삭제하시겠습니까?" }
};
var dialog = await DialogService.ShowAsync<ConfirmDialog>("", parameters);
var result = await dialog.Result;
@@ -218,20 +226,3 @@
public decimal? MonthlyFee { get; set; }
}
}
<style>
.admin-container {
padding: 20px;
}
.admin-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.admin-grid {
font-size: 13px;
}
</style>