From 99308ab4fb30925e17f83ba7c435d5599e9b3330 Mon Sep 17 00:00:00 2001 From: IanShaw027 <131567472+IanShaw027@users.noreply.github.com> Date: Sun, 4 Jan 2026 22:29:19 +0800 Subject: [PATCH] refactor(frontend): comprehensive architectural optimization and base component extraction - Standardized table loading logic with enhanced useTableLoader. - Unified form submission patterns via new useForm composable. - Extracted common UI components: SearchInput and StatusBadge. - Centralized common interface definitions in types/index.ts. - Achieved TypeScript zero-error status across refactored files. - Greatly improved code reusability and maintainability. --- .../admin/account/AccountTableFilters.vue | 13 ++- .../components/admin/user/UserCreateModal.vue | 83 +++++-------------- .../src/components/common/SearchInput.vue | 54 ++++++++++++ .../src/components/common/StatusBadge.vue | 39 +++++++++ .../src/components/user/UserAttributeForm.vue | 3 - frontend/src/composables/useForm.ts | 43 ++++++++++ frontend/src/composables/useTableLoader.ts | 33 ++++---- frontend/src/types/index.ts | 22 ++++- frontend/src/views/admin/AccountsView.vue | 33 ++++---- frontend/src/views/admin/UsersView.vue | 76 +++++++---------- 10 files changed, 248 insertions(+), 151 deletions(-) create mode 100644 frontend/src/components/common/SearchInput.vue create mode 100644 frontend/src/components/common/StatusBadge.vue create mode 100644 frontend/src/composables/useForm.ts diff --git a/frontend/src/components/admin/account/AccountTableFilters.vue b/frontend/src/components/admin/account/AccountTableFilters.vue index d72a3772..7d40c31e 100644 --- a/frontend/src/components/admin/account/AccountTableFilters.vue +++ b/frontend/src/components/admin/account/AccountTableFilters.vue @@ -1,6 +1,13 @@ \ No newline at end of file + diff --git a/frontend/src/components/admin/user/UserCreateModal.vue b/frontend/src/components/admin/user/UserCreateModal.vue index 56c21eec..2f28bf52 100644 --- a/frontend/src/components/admin/user/UserCreateModal.vue +++ b/frontend/src/components/admin/user/UserCreateModal.vue @@ -5,47 +5,19 @@ width="normal" @close="$emit('close')" > -
+
- +
- - +
@@ -53,10 +25,6 @@ -
- - -
@@ -71,8 +39,8 @@ @@ -80,39 +48,30 @@ \ No newline at end of file + diff --git a/frontend/src/components/common/SearchInput.vue b/frontend/src/components/common/SearchInput.vue new file mode 100644 index 00000000..d0311a8e --- /dev/null +++ b/frontend/src/components/common/SearchInput.vue @@ -0,0 +1,54 @@ + + + diff --git a/frontend/src/components/common/StatusBadge.vue b/frontend/src/components/common/StatusBadge.vue new file mode 100644 index 00000000..a844b6cc --- /dev/null +++ b/frontend/src/components/common/StatusBadge.vue @@ -0,0 +1,39 @@ + + + diff --git a/frontend/src/components/user/UserAttributeForm.vue b/frontend/src/components/user/UserAttributeForm.vue index 17879c30..96996cdc 100644 --- a/frontend/src/components/user/UserAttributeForm.vue +++ b/frontend/src/components/user/UserAttributeForm.vue @@ -93,13 +93,10 @@ + \ No newline at end of file diff --git a/frontend/src/views/admin/UsersView.vue b/frontend/src/views/admin/UsersView.vue index d2a8833c..47a31270 100644 --- a/frontend/src/views/admin/UsersView.vue +++ b/frontend/src/views/admin/UsersView.vue @@ -4,36 +4,35 @@ @@ -46,6 +45,7 @@ + @@ -54,23 +54,23 @@ - - + + - - - + +