diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopPage.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopPage.razor index c8dc9c0a..ddbb8b2f 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopPage.razor +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopPage.razor @@ -1073,6 +1073,271 @@ break; + // ═══ C2: RECIPES / NGUYÊN LIỆU (Café) ═══ + case "recipes": +
+
+

🧪 Công thức & Nguyên liệu

+ +
+
+ + + + + + + + @foreach (var (name, cat, stock, price, status, color) in new[] { + ("Cà phê Arabica", "Hạt", "12.5 kg", "450,000₫/kg", "Đủ", "#22C55E"), + ("Cà phê Robusta", "Hạt", "8.0 kg", "320,000₫/kg", "Đủ", "#22C55E"), + ("Sữa tươi", "Sữa", "25 lít", "42,000₫/lít", "Đủ", "#22C55E"), + ("Syrup Caramel", "Syrup", "3 chai", "85,000₫/chai", "Sắp hết", "#F59E0B"), + ("Bột Matcha", "Bột", "1.2 kg", "680,000₫/kg", "Sắp hết", "#F59E0B"), + ("Đường trắng", "Gia vị", "15 kg", "22,000₫/kg", "Đủ", "#22C55E"), + ("Trà Ô Long", "Trà", "2.0 kg", "550,000₫/kg", "Đủ", "#22C55E"), + ("Đá viên", "Khác", "50 kg", "15,000₫/kg", "Đủ", "#22C55E") }) + { + + + + + + + + } +
Nguyên liệuLoạiTồn khoGiá/đơn vịTrạng thái
@name@cat@stock@price@status
+
+
+ break; + + // ═══ R3: RESERVATIONS / ĐẶT BÀN (Nhà hàng) ═══ + case "reservations": +
+
5Hôm nay
+
3Đã xác nhận
+
2Chờ duyệt
+
+
+
+

📅 Danh sách đặt bàn

+ +
+
+ + + + + + + + + @foreach (var (guest, ppl, time, table, status, note, color) in new[] { + ("Nguyễn Văn A", "4", "18:00", "Bàn 5", "Xác nhận", "Sinh nhật", "#22C55E"), + ("Trần Thị B", "2", "19:00", "Bàn 2", "Xác nhận", "", "#22C55E"), + ("Lê Minh C", "8", "19:30", "VIP 1", "Chờ duyệt", "Tiệc công ty", "#F59E0B"), + ("Phạm Dương D", "6", "20:00", "Bàn 7", "Xác nhận", "Kỷ niệm", "#22C55E"), + ("Hoàng E", "3", "20:30", "Bàn 3", "Chờ duyệt", "", "#F59E0B") }) + { + + + + + + + + + } +
KháchSố ngườiThời gianBànTrạng tháiGhi chú
@guest@ppl@time@table@status@note
+
+
+ break; + + // ═══ K3: HAPPY HOUR (Karaoke) ═══ + case "happy-hour": +
+

⏰ Cấu hình Happy Hour

+
+
+
+
+
+
+
+
+
+
+
+ @foreach (var day in new[] { "T2", "T3", "T4", "T5", "T6", "T7", "CN" }) + { + var isActive = day == "T2" || day == "T3" || day == "T4" || day == "T5"; + + } +
+
+ +
+
+
+

🎉 Combo Happy Hour

+
+
+ @foreach (var (combo, items, oldPrice, newPrice) in new[] { + ("Combo Đôi", "2 giờ phòng + 2 bia", "350,000₫", "245,000₫"), + ("Combo Nhóm", "3 giờ phòng + 5 đồ uống", "750,000₫", "525,000₫"), + ("Combo VIP", "2 giờ VIP + trái cây + 4 bia", "980,000₫", "686,000₫") }) + { +
+
@combo
+
@items
+
+ @oldPrice + @newPrice +
+
+ } +
+
+
+ break; + + // ═══ S4: SERVICE PACKAGES / GÓI DỊCH VỤ (Spa) ═══ + case "packages": +
+
+

🎁 Gói dịch vụ

+ +
+
+
+ @foreach (var (pkg, sessions, services, price, savings) in new[] { + ("Gói Thư Giãn", "5 buổi", "Massage body + Xông hơi", "2,500,000₫", "Tiết kiệm 500,000₫"), + ("Gói VIP", "10 buổi", "Massage + Facial + Xông hơi + Chăm sóc da", "6,800,000₫", "Tiết kiệm 2,200,000₫"), + ("Gói Cặp Đôi", "4 buổi", "2 người — Massage + Xông hơi", "3,600,000₫", "Tiết kiệm 800,000₫") }) + { +
+
+
@pkg
+
@sessions
+
+
+
@services
+
+ @price + @savings +
+
+
+ } +
+
+
+ break; + + // ═══ B5: CONSENT FORM / CAM KẾT KH (Thẩm mỹ) ═══ + case "consent": +
+
+

📝 Mẫu cam kết khách hàng

+ +
+
+
+ @foreach (var (title, desc, icon, fields) in new[] { + ("Cam kết Phẫu thuật", "Biểu mẫu đồng ý trước phẫu thuật thẩm mỹ", "syringe", "12 trường"), + ("Cam kết Tiêm Filler", "Xác nhận rủi ro và đồng ý tiêm filler", "droplets", "8 trường"), + ("Cam kết Laser", "Biểu mẫu đồng ý điều trị laser da", "zap", "10 trường"), + ("Cam kết Chung", "Mẫu cam kết dịch vụ thẩm mỹ tổng quát", "file-text", "6 trường") }) + { +
+
+
+
@title
@fields
+
+
@desc
+
+ + +
+
+ } +
+
+
+ break; + + // ═══ B6: DOCTORS / BÁC SĨ (Thẩm mỹ) ═══ + case "doctors": +
+
+

🩺 Bác sĩ & Chuyên gia

+ +
+
+
+ @foreach (var (name, spec, cert, exp, color) in new[] { + ("BS. Nguyễn Văn A", "Phẫu thuật thẩm mỹ", "Chứng chỉ BVTM", "15 năm", "#3B82F6"), + ("BS. Trần Thị B", "Da liễu", "Thạc sĩ Y khoa", "10 năm", "#8B5CF6"), + ("BS. Lê Minh C", "Nội tiết", "Ph.D. Nội tiết học", "12 năm", "#EC4899"), + ("KTV. Phạm D", "Chăm sóc da", "Chứng chỉ Quốc tế CIDESCO", "8 năm", "#22C55E") }) + { +
+
+
@name[4]
+
@name
@spec
+
+
+ @cert + @exp +
+
+ + +
+
+ } +
+
+
+ break; + + // ═══ B7: FOLLOW-UP / TÁI KHÁM (Thẩm mỹ) ═══ + case "followup": +
+
8Tái khám tháng này
+
2Sắp đến hạn
+
6Đã hoàn thành
+
+
+

📅 Lịch tái khám

+
+ + + + + + + + @foreach (var (patient, service, date, doctor, status, color) in new[] { + ("Nguyễn Thị Hương", "Nâng mũi sụn", "05/03/2026", "BS. Nguyễn A", "Sắp đến", "#F59E0B"), + ("Trần Văn Nam", "Cấy mỡ tự thân", "07/03/2026", "BS. Trần B", "Sắp đến", "#F59E0B"), + ("Lê Thu Trang", "Trị nám laser", "01/03/2026", "BS. Lê C", "Hôm nay", "#EF4444"), + ("Phạm Minh Tuấn", "Filler môi", "28/02/2026", "BS. Nguyễn A", "Hoàn thành", "#22C55E"), + ("Hoàng Lan", "Botox trán", "25/02/2026", "BS. Trần B", "Hoàn thành", "#22C55E") }) + { + + + + + + + + } +
Khách hàngDịch vụ đã làmNgày tái khámBác sĩTrạng thái
@patient@service@date@doctor@status
+
+
+ break; + // ═══ UNKNOWN SECTIONS ═══ default:
@@ -1282,6 +1547,13 @@ case "settings": _sectionTitle = "Thiết lập"; _sectionIcon = "settings"; _sectionDescription = "Cài đặt cửa hàng."; break; case "reports": _sectionTitle = "Báo cáo"; _sectionIcon = "bar-chart-2"; _sectionDescription = "Doanh thu, sản phẩm bán chạy."; break; case "schedule": _sectionTitle = "Lịch làm việc"; _sectionIcon = "calendar-clock"; _sectionDescription = "Lịch ca làm việc nhân viên."; break; + case "recipes": _sectionTitle = "Nguyên liệu & Công thức"; _sectionIcon = "flask-conical"; _sectionDescription = "Quản lý nguyên liệu pha chế."; break; + case "reservations": _sectionTitle = "Đặt bàn"; _sectionIcon = "calendar-check"; _sectionDescription = "Quản lý đặt bàn trước."; break; + case "happy-hour": _sectionTitle = "Happy Hour"; _sectionIcon = "clock"; _sectionDescription = "Cấu hình khung giờ giảm giá."; break; + case "packages": _sectionTitle = "Gói dịch vụ"; _sectionIcon = "gift"; _sectionDescription = "Quản lý gói combo dịch vụ."; break; + case "consent": _sectionTitle = "Cam kết KH"; _sectionIcon = "file-check"; _sectionDescription = "Biểu mẫu đồng ý khách hàng."; break; + case "doctors": _sectionTitle = "Bác sĩ / CK"; _sectionIcon = "stethoscope"; _sectionDescription = "Quản lý bác sĩ và chuyên gia."; break; + case "followup": _sectionTitle = "Tái khám"; _sectionIcon = "calendar-heart"; _sectionDescription = "Lịch tái khám sau điều trị."; break; default: _sectionTitle = Section ?? "Trang"; _sectionIcon = "layout-dashboard"; _sectionDescription = "Trang đang phát triển."; break; } } diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ShopSidebarConfig.cs b/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ShopSidebarConfig.cs index a5f44fd6..7be4bc82 100644 --- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ShopSidebarConfig.cs +++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ShopSidebarConfig.cs @@ -33,6 +33,7 @@ public static class ShopSidebarConfig new("Tổng quan", "layout-dashboard", "overview"), new("POS Bán hàng", "monitor", "pos"), new("Menu & Đồ uống", "coffee", "menu"), + new("Nguyên liệu", "flask-conical", "recipes"), new("Tồn kho", "warehouse", "inventory"), new("Tài chính", "trending-up", "finance"), new("Nhân sự", "users", "staff"), @@ -47,6 +48,7 @@ public static class ShopSidebarConfig new("POS Bán hàng", "monitor", "pos"), new("Menu & Món ăn", "utensils", "menu"), new("Bàn / Table", "grid-3x3", "tables"), + new("Đặt bàn", "calendar-check", "reservations"), new("Bếp (Kitchen)", "flame", "kitchen"), new("Tồn kho", "warehouse", "inventory"), new("Tài chính", "trending-up", "finance"), @@ -62,6 +64,7 @@ public static class ShopSidebarConfig new("POS Bán hàng", "monitor", "pos"), new("Phòng", "door-open", "rooms"), new("Menu / Bar", "wine", "menu"), + new("Happy Hour", "clock", "happy-hour"), new("Tồn kho", "warehouse", "inventory"), new("Tài chính", "trending-up", "finance"), new("Nhân sự", "users", "staff"), @@ -76,6 +79,7 @@ public static class ShopSidebarConfig new("POS Bán hàng", "monitor", "pos"), new("Lịch hẹn", "calendar", "appointments"), new("Dịch vụ", "sparkles", "services"), + new("Gói dịch vụ", "gift", "packages"), new("Tài nguyên", "door-open", "resources"), new("Sản phẩm", "package", "products"), new("Tài chính", "trending-up", "finance"), @@ -93,6 +97,9 @@ public static class ShopSidebarConfig new("Lịch hẹn", "calendar", "appointments"), new("Dịch vụ", "sparkles", "services"), new("Liệu trình", "clipboard-list", "treatments"), + new("Cam kết KH", "file-check", "consent"), + new("Bác sĩ / CK", "stethoscope", "doctors"), + new("Tái khám", "calendar-heart", "followup"), new("Tài nguyên", "door-open", "resources"), new("Sản phẩm", "package", "products"), new("Tài chính", "trending-up", "finance"),