From 6ba671d2c3f5afe1c855e72bf311ae02f3757d0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=94=A6=E9=BA=9F=20=E7=8E=8B?= Date: Thu, 18 Jun 2026 11:17:38 +0800 Subject: [PATCH] feat(mobile): stage 7 - games library (group-scoped, detail/comments/favorites/add/import) - rewrite GamesLibraryMobile.vue for uat model (games bound to group, not global): group selector + search + platform filter + 2-col grid + add/import entries - new GameDetailSheetMobile.vue: cover/name/aliases/tags/platform + favorite/edit/delete + quick-team + comments list with rating - new AddGameSheetMobile.vue: name/aliases/platform/tags/cover-upload (bound to group) - new ImportGamesSheetMobile.vue: bulk import via text (name | platform | tags per line) - router: wire GamesLibrary mobile view - diverges from master: uat games API requires groupId (addGame/importGames/getGroupGames) vs master's global getPopularGames/searchGames; mobile rewritten to match uat PC behavior build verified: vue-tsc + vite build pass --- .../game/AddGameSheetMobile.vue | 228 ++++++++ .../game/GameDetailSheetMobile.vue | 553 ++++++++++++++++++ .../game/ImportGamesSheetMobile.vue | 152 +++++ frontend/src/router/index.ts | 2 +- .../src/views-mobile/GamesLibraryMobile.vue | 430 ++++++++++++++ 5 files changed, 1364 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components-mobile/game/AddGameSheetMobile.vue create mode 100644 frontend/src/components-mobile/game/GameDetailSheetMobile.vue create mode 100644 frontend/src/components-mobile/game/ImportGamesSheetMobile.vue create mode 100644 frontend/src/views-mobile/GamesLibraryMobile.vue diff --git a/frontend/src/components-mobile/game/AddGameSheetMobile.vue b/frontend/src/components-mobile/game/AddGameSheetMobile.vue new file mode 100644 index 0000000..a1f5275 --- /dev/null +++ b/frontend/src/components-mobile/game/AddGameSheetMobile.vue @@ -0,0 +1,228 @@ + + + + + + + diff --git a/frontend/src/components-mobile/game/GameDetailSheetMobile.vue b/frontend/src/components-mobile/game/GameDetailSheetMobile.vue new file mode 100644 index 0000000..339c4e5 --- /dev/null +++ b/frontend/src/components-mobile/game/GameDetailSheetMobile.vue @@ -0,0 +1,553 @@ + + + + + + + diff --git a/frontend/src/components-mobile/game/ImportGamesSheetMobile.vue b/frontend/src/components-mobile/game/ImportGamesSheetMobile.vue new file mode 100644 index 0000000..aae6f9f --- /dev/null +++ b/frontend/src/components-mobile/game/ImportGamesSheetMobile.vue @@ -0,0 +1,152 @@ + + + + + + + diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index ca15060..d266031 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -129,7 +129,7 @@ const routes: RouteRecordRaw[] = [ name: 'GamesLibrary', component: view( () => import('@/views/GamesLibrary.vue'), - mobilePlaceholder + () => import('@/views-mobile/GamesLibraryMobile.vue') ) }, { diff --git a/frontend/src/views-mobile/GamesLibraryMobile.vue b/frontend/src/views-mobile/GamesLibraryMobile.vue new file mode 100644 index 0000000..7b82b09 --- /dev/null +++ b/frontend/src/views-mobile/GamesLibraryMobile.vue @@ -0,0 +1,430 @@ + + + + + + + +