From 38bfe14e73e2b9f234ac5fdc1bffc6df2e4c0083 Mon Sep 17 00:00:00 2001 From: Ho Ngoc Hai Date: Thu, 12 Feb 2026 16:25:52 +0700 Subject: [PATCH] refactor: relocate system admin pages and apply minor UI adjustments across various application pages. --- .../Layout/AdminLayout.razor | 45 +++++++++++-------- .../Pages/Admin/Product/MenuBuilder.razor | 8 ++-- .../Pages/Admin/Store/StoreCreate.razor | 4 +- .../{System => SystemAdmin}/AuditLog.razor | 0 .../DeviceManagement.razor | 0 .../IntegrationHub.razor | 0 .../NotificationCenter.razor | 0 .../Pages/Pos/Karaoke/KaraokeDesktop.razor | 4 +- .../Pages/Pos/Karaoke/KaraokeMobile.razor | 4 +- .../Pages/Pos/Karaoke/KaraokeTablet.razor | 6 +-- .../Pos/Karaoke/Workflow/HappyHour.razor | 2 +- .../Pos/Karaoke/Workflow/MemberCard.razor | 4 +- .../Pages/Pos/Karaoke/Workflow/OrderFnb.razor | 4 +- .../Pages/Pos/Karaoke/Workflow/RoomMap.razor | 2 +- .../Pos/Karaoke/Workflow/RoomSelect.razor | 4 +- .../Pos/Karaoke/Workflow/RoomSession.razor | 4 +- .../Pos/Karaoke/Workflow/ServiceDisplay.razor | 6 +-- .../Pos/Restaurant/RestaurantDesktop.razor | 4 +- .../Pos/Restaurant/RestaurantTablet.razor | 2 +- .../Pos/Restaurant/Workflow/EodReport.razor | 2 +- .../Restaurant/Workflow/KitchenDisplay.razor | 8 ++-- .../Restaurant/Workflow/OrderHistory.razor | 2 +- .../Pos/Restaurant/Workflow/Reservation.razor | 2 +- .../Pos/Restaurant/Workflow/TableDetail.razor | 8 ++-- .../Pos/Restaurant/Workflow/TableMap.razor | 2 +- .../Pos/Restaurant/Workflow/WaiterPad.razor | 2 +- 26 files changed, 68 insertions(+), 61 deletions(-) rename apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/{System => SystemAdmin}/AuditLog.razor (100%) rename apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/{System => SystemAdmin}/DeviceManagement.razor (100%) rename apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/{System => SystemAdmin}/IntegrationHub.razor (100%) rename apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/{System => SystemAdmin}/NotificationCenter.razor (100%) diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Layout/AdminLayout.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Layout/AdminLayout.razor index f21a5447..f5285012 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Layout/AdminLayout.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Layout/AdminLayout.razor @@ -4,8 +4,8 @@ Design: pencil-design/src/pages/tPOS/admin/admin-dashboard.pen *@ @inherits LayoutComponentBase -@inject IStringLocalizer L @inject NavigationManager NavigationManager +@inject IJSRuntime JS @@ -27,59 +27,59 @@ @* Navigation *@ @@ -90,7 +90,7 @@ Velik Ho Owner - @@ -111,6 +111,13 @@ @code { private bool _sidebarOpen = false; + protected override async Task OnAfterRenderAsync(bool firstRender) + { + // EN: Re-init Lucide icons after every render (Blazor navigation replaces DOM) + // VI: Khởi tạo lại Lucide icons sau mỗi lần render (Blazor navigation thay đổi DOM) + try { await JS.InvokeVoidAsync("lucide.createIcons"); } catch { /* ignore if lucide not loaded */ } + } + private void ToggleSidebar() => _sidebarOpen = !_sidebarOpen; private void CloseSidebar() => _sidebarOpen = false; private void Logout() => NavigationManager.NavigateTo("/login"); diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Product/MenuBuilder.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Product/MenuBuilder.razor index 093850fc..acaa882d 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Product/MenuBuilder.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Product/MenuBuilder.razor @@ -41,10 +41,10 @@

- - @section.Name + + @(section.Name)

- @section.Items.Length + @(section.Items.Length)
@@ -59,7 +59,7 @@
- +
@item.Name
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Store/StoreCreate.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Store/StoreCreate.razor index af83392f..37ba9c5e 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Store/StoreCreate.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Store/StoreCreate.razor @@ -217,8 +217,8 @@ private string _city = ""; private string _phone = ""; private string _email = ""; - private string _openTime = "07:00"; - private string _closeTime = "22:00"; + private TimeOnly _openTime = new TimeOnly(7, 0); + private TimeOnly _closeTime = new TimeOnly(22, 0); private HashSet _activeDays = new() { "T2", "T3", "T4", "T5", "T6", "T7" }; private record StoreType(string Key, string Label, string Icon, string Color, string Desc); diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/System/AuditLog.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/SystemAdmin/AuditLog.razor similarity index 100% rename from apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/System/AuditLog.razor rename to apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/SystemAdmin/AuditLog.razor diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/System/DeviceManagement.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/SystemAdmin/DeviceManagement.razor similarity index 100% rename from apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/System/DeviceManagement.razor rename to apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/SystemAdmin/DeviceManagement.razor diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/System/IntegrationHub.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/SystemAdmin/IntegrationHub.razor similarity index 100% rename from apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/System/IntegrationHub.razor rename to apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/SystemAdmin/IntegrationHub.razor diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/System/NotificationCenter.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/SystemAdmin/NotificationCenter.razor similarity index 100% rename from apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/System/NotificationCenter.razor rename to apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/SystemAdmin/NotificationCenter.razor diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeDesktop.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeDesktop.razor index a5d529f7..2b93bdad 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeDesktop.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeDesktop.razor @@ -104,13 +104,13 @@
@if (SelectedRoom.Status == "available") { - } else if (SelectedRoom.Status == "occupied") { - } diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeMobile.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeMobile.razor index 1248409f..7eb16a85 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeMobile.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeMobile.razor @@ -70,12 +70,12 @@ display:flex;gap:8px;">
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeTablet.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeTablet.razor index 48d61f8e..6c532ec4 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeTablet.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/KaraokeTablet.razor @@ -69,13 +69,13 @@
@@ -108,7 +108,7 @@ @FormatPrice(_selectedRoom.Status == "occupied" ? 520_000 : 0)
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/HappyHour.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/HappyHour.razor index 036f3bc9..3d881083 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/HappyHour.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/HappyHour.razor @@ -11,7 +11,7 @@
Happy Hour & Khuyến mãi diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/MemberCard.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/MemberCard.razor index b31a43a3..93a52604 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/MemberCard.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/MemberCard.razor @@ -13,7 +13,7 @@
Thẻ thành viên @@ -137,7 +137,7 @@ @_selectedReward.Value
} -
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/OrderFnb.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/OrderFnb.razor index be4d027d..dfdbf7da 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/OrderFnb.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/OrderFnb.razor @@ -12,7 +12,7 @@
Gọi F&B @@ -90,7 +90,7 @@ Tổng F&B @FormatPrice(_orderItems.Sum(i => i.Price * i.Qty))
-
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomMap.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomMap.razor index c4bb1ade..a0bcf77d 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomMap.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomMap.razor @@ -13,7 +13,7 @@
Sơ đồ phòng diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomSelect.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomSelect.razor index 5640b2e4..5cedfd7f 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomSelect.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomSelect.razor @@ -13,7 +13,7 @@
Chọn phòng @@ -135,7 +135,7 @@ Tổng cộng @FormatPrice(_selectedRoom.PricePerHour * _selectedHours)
-
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomSession.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomSession.razor index bb0368b6..e43c6060 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomSession.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/RoomSession.razor @@ -13,7 +13,7 @@
@@ -70,7 +70,7 @@ diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/ServiceDisplay.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/ServiceDisplay.razor index 2b059eff..d6cafbcd 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/ServiceDisplay.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Karaoke/Workflow/ServiceDisplay.razor @@ -13,7 +13,7 @@
Yêu cầu phục vụ @@ -97,7 +97,7 @@ { } @@ -105,7 +105,7 @@ { } diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/RestaurantDesktop.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/RestaurantDesktop.razor index c46a4105..9a2c38d6 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/RestaurantDesktop.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/RestaurantDesktop.razor @@ -13,7 +13,7 @@ { }
@@ -72,7 +72,7 @@ Tổng cộng @FormatPrice(SelectedTable.Status == "occupied" ? _demoOrderItems.Sum(i => i.Price * i.Qty) : 0)
-
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/RestaurantTablet.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/RestaurantTablet.razor index e9ea9386..e72435e8 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/RestaurantTablet.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/RestaurantTablet.razor @@ -71,7 +71,7 @@ @FormatPrice(_selected.Status == "occupied" ? _items.Sum(i => i.Price * i.Qty) : 0) diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/EodReport.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/EodReport.razor index 5a94c8e4..b51c55a4 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/EodReport.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/EodReport.razor @@ -9,7 +9,7 @@
@* ═══ HEADER / TIÊU ĐỀ ═══ *@
- Báo cáo cuối ngày diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/KitchenDisplay.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/KitchenDisplay.razor index 56e09e02..8a83e55b 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/KitchenDisplay.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/KitchenDisplay.razor @@ -9,7 +9,7 @@
@* ═══ HEADER / TIÊU ĐỀ ═══ *@
- Màn hình bếp @@ -66,21 +66,21 @@ @if (status.Key == "new") { } else if (status.Key == "cooking") { } else { } diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/OrderHistory.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/OrderHistory.razor index da2b3088..068deb0e 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/OrderHistory.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/OrderHistory.razor @@ -9,7 +9,7 @@
@* ═══ HEADER / TIÊU ĐỀ ═══ *@
- Lịch sử đơn hàng diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/Reservation.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/Reservation.razor index a8930019..253459d5 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/Reservation.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/Reservation.razor @@ -9,7 +9,7 @@
@* ═══ HEADER / TIÊU ĐỀ ═══ *@
- Đặt bàn trước diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/TableDetail.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/TableDetail.razor index d278ab6d..02138e9b 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/TableDetail.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/TableDetail.razor @@ -11,7 +11,7 @@ display:flex;flex-direction:column;overflow:hidden;"> @* ═══ HEADER / TIÊU ĐỀ ═══ *@
-
@@ -28,7 +28,7 @@ @foreach (var item in _items) {
- x@item.Qty + x@(item.Qty) @item.Name @FormatPrice(item.Price * item.Qty)
@@ -58,9 +58,9 @@ @* EN: Split bill toggle / VI: Tùy chọn tách hóa đơn *@
+ style="flex:1;text-align:center;" @onclick="@(() => _splitMode = "full")">Thanh toán đầy đủ + style="flex:1;text-align:center;" @onclick="@(() => _splitMode = "split")">Tách hóa đơn
@if (_splitMode == "split") diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/TableMap.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/TableMap.razor index 25475523..2f16ca59 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/TableMap.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/TableMap.razor @@ -9,7 +9,7 @@
@* ═══ TOOLBAR / THANH CÔNG CỤ ═══ *@
- Quản lý sơ đồ bàn diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/WaiterPad.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/WaiterPad.razor index 9d3edeb8..dc492e37 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/WaiterPad.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Pos/Restaurant/Workflow/WaiterPad.razor @@ -9,7 +9,7 @@
@* ═══ HEADER / TIÊU ĐỀ ═══ *@
- Gọi món — Bàn 3