diff --git a/src/TaxBaik.Web.Client/Components/Admin/Pages/ConsultingActivities.razor b/src/TaxBaik.Web.Client/Components/Admin/Pages/ConsultingActivities.razor
index b915d8a..88fd559 100644
--- a/src/TaxBaik.Web.Client/Components/Admin/Pages/ConsultingActivities.razor
+++ b/src/TaxBaik.Web.Client/Components/Admin/Pages/ConsultingActivities.razor
@@ -5,7 +5,6 @@
@inject IConsultingActivityBrowserClient ActivityClient
@inject IClientBrowserClient ClientClient
@inject ISnackbar Snackbar
-@inject IDialogService DialogService
@attribute [Authorize]
상담 활동 관리
@@ -14,11 +13,8 @@
CRM & 세무관리
상담 활동 관리
- 고객별 상담 이력과 팔로업을 추적합니다.
+ 초기 렌더 진단용 최소 화면입니다.
-
- 새 활동 기록
-
@@ -27,102 +23,36 @@
}
else if (activities.Count == 0)
{
-
-
- 상담 활동이 없습니다.
-
+ 상담 활동이 없습니다.
}
else
{
-
-
-
-
-
- @if (clientMap.TryGetValue(context.Item.ClientId, out var clientName))
- {
-
- @clientName
-
- }
-
-
-
-
-
-
- @{
- var desc = context.Item.Description ?? "";
- if (desc.Length > 30) desc = desc.Substring(0, 30) + "...";
- }
- @desc
-
-
-
-
- @if (context.Item.NextFollowupDate.HasValue)
- {
- var daysLeft = (context.Item.NextFollowupDate.Value.Date - DateTime.Today).Days;
-
- @context.Item.NextFollowupDate.Value.ToString("yyyy-MM-dd")
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ | ID |
+ 고객 |
+ 활동 유형 |
+ 활동일시 |
+ 설명 |
+
+
+
+ @foreach (var item in activities)
+ {
+
+ | @item.Id |
+ @clientMap.GetValueOrDefault(item.ClientId) |
+ @item.ActivityType |
+ @item.ActivityDate.ToString("g") |
+ @item.Description |
+
+ }
+
+
}
-
-
- @(editingActivity == null ? "새 활동 기록" : "활동 기록 수정")
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 취소
- 저장
-
-
-
@code {
[CascadingParameter]
private Task? AuthStateTask { get; set; }
@@ -130,10 +60,6 @@
private List? activities;
private List clients = [];
private Dictionary clientMap = new();
- private MudForm? form;
- private bool isDialogOpen;
- private ConsultingActivity? editingActivity;
- private ConsultingActivityForm activityForm = new();
private RenderFragment ActivitySkeleton => builder =>
{
@@ -178,126 +104,6 @@
}
}
- private void OpenCreateDialog()
- {
- editingActivity = null;
- activityForm = new ConsultingActivityForm
- {
- ActivityDate = DateTime.Now,
- ClientId = clients.FirstOrDefault()?.Id ?? 0
- };
- isDialogOpen = true;
- }
-
- private async Task OpenEditDialog(ConsultingActivity activity)
- {
- editingActivity = activity;
- activityForm = new ConsultingActivityForm
- {
- ClientId = activity.ClientId,
- ActivityType = activity.ActivityType,
- ActivityDate = activity.ActivityDate,
- Description = activity.Description,
- NextFollowupDate = activity.NextFollowupDate
- };
- isDialogOpen = true;
- }
-
- private async Task SaveActivity()
- {
- if (form != null)
- {
- await form.Validate();
- if (!form.IsValid)
- {
- Snackbar.Add("필수 항목을 입력해주세요.", Severity.Warning);
- return;
- }
- }
-
- try
- {
- if (editingActivity == null)
- {
- var actDate = activityForm.ActivityDate ?? DateTime.Now;
- var newId = await ActivityClient.CreateAsync(
- activityForm.ClientId,
- activityForm.ActivityType,
- actDate,
- activityForm.Description,
- null,
- activityForm.NextFollowupDate);
-
- if (newId > 0)
- {
- Snackbar.Add("활동이 기록되었습니다.", Severity.Success);
- CloseDialog();
- await LoadData();
- }
- }
- else
- {
- await ActivityClient.UpdateAsync(
- editingActivity.Id,
- null,
- activityForm.NextFollowupDate);
-
- Snackbar.Add("활동이 업데이트되었습니다.", Severity.Success);
- CloseDialog();
- await LoadData();
- }
- }
- catch (Exception ex)
- {
- Snackbar.Add($"저장 실패: {ex.Message}", Severity.Error);
- }
- }
-
- private async Task DeleteActivity(int id)
- {
- var parameters = new DialogParameters
- {
- { "Title", "삭제 확인" },
- { "Message", "이 활동을 삭제하시겠습니까?" }
- };
-
- var dialog = await DialogService.ShowAsync("", parameters);
- var result = await dialog.Result;
-
- if (result?.Canceled ?? true)
- return;
-
- try
- {
- await ActivityClient.DeleteAsync(id);
- Snackbar.Add("활동이 삭제되었습니다.", Severity.Success);
- await LoadData();
- }
- catch (Exception ex)
- {
- Snackbar.Add($"삭제 실패: {ex.Message}", Severity.Error);
- }
- }
-
- private void CloseDialog()
- {
- isDialogOpen = false;
- editingActivity = null;
- activityForm = new();
- }
-
private static string GetClientDisplayName(Client client)
- => !string.IsNullOrWhiteSpace(client.CompanyName)
- ? client.CompanyName
- : !string.IsNullOrWhiteSpace(client.Name)
- ? client.Name
- : $"Client #{client.Id}";
- private class ConsultingActivityForm
- {
- public int ClientId { get; set; }
- public string ActivityType { get; set; } = "";
- public DateTime? ActivityDate { get; set; } = DateTime.Now;
- public string Description { get; set; } = "";
- public DateTime? NextFollowupDate { get; set; }
- }
+ => !string.IsNullOrWhiteSpace(client.CompanyName) ? $"{client.Name} ({client.CompanyName})" : client.Name;
}
diff --git a/src/TaxBaik.Web.Client/Components/Admin/Pages/RevenueTrackings.razor b/src/TaxBaik.Web.Client/Components/Admin/Pages/RevenueTrackings.razor
index 4fafcc3..7486550 100644
--- a/src/TaxBaik.Web.Client/Components/Admin/Pages/RevenueTrackings.razor
+++ b/src/TaxBaik.Web.Client/Components/Admin/Pages/RevenueTrackings.razor
@@ -5,7 +5,6 @@
@inject IRevenueTrackingBrowserClient RevenueClient
@inject IClientBrowserClient ClientClient
@inject ISnackbar Snackbar
-@inject IDialogService DialogService
@attribute [Authorize]
수익 추적 관리
@@ -14,11 +13,8 @@
CRM & 세무관리
수익 추적 관리
- 청구, 납부, 미수금 상태를 한 화면에서 관리합니다.
+ 초기 렌더 진단용 최소 화면입니다.
-
- 새 청구 추가
-
@@ -27,99 +23,36 @@
}
else if (revenues.Count == 0)
{
-
-
- 청구 기록이 없습니다.
-
+ 청구 기록이 없습니다.
}
else
{
-
-
-
-
-
- @if (clientMap.TryGetValue(context.Item.ClientId, out var clientName))
- {
-
- @clientName
-
- }
-
-
-
-
-
-
-
- @if (context.Item.PaymentStatus == "paid")
- {
- 납부
- }
- else
- {
- 미납
- }
-
-
-
-
-
- @if (context.Item.PaymentStatus != "paid")
- {
-
- }
-
-
-
-
-
-
+
+
+
+ | ID |
+ 고객 |
+ 청구번호 |
+ 청구일 |
+ 청구액 |
+
+
+
+ @foreach (var item in revenues)
+ {
+
+ | @item.Id |
+ @clientMap.GetValueOrDefault(item.ClientId) |
+ @item.InvoiceNumber |
+ @item.InvoiceDate.ToString("yyyy-MM-dd") |
+ @item.Amount.ToString("C") |
+
+ }
+
+
}
-
-
-
- 새 청구 추가
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 취소
- 저장
-
-
-
@code {
[CascadingParameter]
private Task? AuthStateTask { get; set; }
@@ -127,9 +60,6 @@
private List? revenues;
private List clients = [];
private Dictionary clientMap = new();
- private MudForm? form;
- private bool isDialogOpen;
- private RevenueForm revenueForm = new();
private RenderFragment RevenueSkeleton => builder =>
{
@@ -174,111 +104,6 @@
}
}
- private void OpenCreateDialog()
- {
- revenueForm = new RevenueForm
- {
- ClientId = clients.FirstOrDefault()?.Id ?? 0,
- InvoiceDate = DateTime.Today,
- DueDate = DateTime.Today.AddDays(14)
- };
- isDialogOpen = true;
- }
-
- private async Task SaveRevenue()
- {
- if (form != null)
- {
- await form.Validate();
- if (!form.IsValid)
- {
- Snackbar.Add("필수 항목을 입력해주세요.", Severity.Warning);
- return;
- }
- }
-
- try
- {
- var newId = await RevenueClient.CreateAsync(
- revenueForm.ClientId,
- revenueForm.InvoiceNumber,
- revenueForm.InvoiceDate ?? DateTime.Now,
- revenueForm.Amount,
- revenueForm.ServiceType,
- revenueForm.DueDate);
-
- if (newId > 0)
- {
- Snackbar.Add("청구가 추가되었습니다.", Severity.Success);
- CloseDialog();
- await LoadData();
- }
- }
- catch (Exception ex)
- {
- Snackbar.Add($"저장 실패: {ex.Message}", Severity.Error);
- }
- }
-
- private async Task MarkPaid(int id)
- {
- try
- {
- await RevenueClient.MarkPaidAsync(id, DateTime.Now);
- Snackbar.Add("납부가 처리되었습니다.", Severity.Success);
- await LoadData();
- }
- catch (Exception ex)
- {
- Snackbar.Add($"처리 실패: {ex.Message}", Severity.Error);
- }
- }
-
- private async Task DeleteRevenue(int id)
- {
- var parameters = new DialogParameters
- {
- { "Title", "삭제 확인" },
- { "Message", "이 청구를 삭제하시겠습니까?" }
- };
-
- var dialog = await DialogService.ShowAsync("", parameters);
- var result = await dialog.Result;
-
- if (result?.Canceled ?? true)
- return;
-
- try
- {
- await RevenueClient.DeleteAsync(id);
- Snackbar.Add("청구가 삭제되었습니다.", Severity.Success);
- await LoadData();
- }
- catch (Exception ex)
- {
- Snackbar.Add($"삭제 실패: {ex.Message}", Severity.Error);
- }
- }
-
- private void CloseDialog()
- {
- isDialogOpen = false;
- revenueForm = new();
- }
-
private static string GetClientDisplayName(Client client)
- => !string.IsNullOrWhiteSpace(client.CompanyName)
- ? client.CompanyName
- : !string.IsNullOrWhiteSpace(client.Name)
- ? client.Name
- : $"Client #{client.Id}";
- private class RevenueForm
- {
- public int ClientId { get; set; }
- public string InvoiceNumber { get; set; } = "";
- public DateTime? InvoiceDate { get; set; }
- public decimal Amount { get; set; }
- public string? ServiceType { get; set; }
- public DateTime? DueDate { get; set; }
- }
+ => !string.IsNullOrWhiteSpace(client.CompanyName) ? $"{client.Name} ({client.CompanyName})" : client.Name;
}
diff --git a/src/TaxBaik.Web.Client/Components/Admin/Shared/AdminShell.razor b/src/TaxBaik.Web.Client/Components/Admin/Shared/AdminShell.razor
index ddabcc9..f89f878 100644
--- a/src/TaxBaik.Web.Client/Components/Admin/Shared/AdminShell.razor
+++ b/src/TaxBaik.Web.Client/Components/Admin/Shared/AdminShell.razor
@@ -1,100 +1,66 @@
@inject NavigationManager Navigation
@implements IDisposable
-
-
-
+
+
+
-
TaxBaik
-
세무회계 관리 대시보드
+
TaxBaik
+
세무회계 관리 대시보드
-
-
-
+
-
-
-
T
-
-
TaxBaik
-
세무 운영 콘솔
+
+ @if (drawerOpen)
+ {
+
+ }
+
+
+
+ @ChildContent
-
-
- 대시보드
-
- 세무 프로필
- 신고 일정
- 계약 관리
- 상담 활동
- 수익 추적
-
-
- 고객 카드
- 세무신고
-
-
- 공지사항
- FAQ 관리
- 블로그 관리
- 시즌 시뮬레이터
-
- 문의 관리
- 설정
- 공통관리
-
-
-
Version
-
vunknown
-
unknown
-
-
-
-
-
- @ChildContent
-
-
-
+
+
+
@code {
[Parameter]
public RenderFragment? ChildContent { get; set; }
private bool drawerOpen = true;
- private bool expandedCRMGroup = true;
- private bool expandedCustomerGroup = false;
- private bool expandedWebsiteGroup = false;
protected override void OnInitialized()
{
@@ -110,11 +76,6 @@
drawerOpen = !drawerOpen;
}
- private void NavigateTo(string url)
- {
- Navigation.NavigateTo(url);
- }
-
public void Dispose()
{
Navigation.LocationChanged -= OnLocationChanged;