From 56cdf059094b4f35f7f5e89787df84fdac65fb08 Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Fri, 8 May 2026 13:05:51 +0200 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20Phase=205d-ii=20=E2=80=94=20s?= =?UTF-8?q?ettings=20General=20tab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ports the panel/general partial (the largest single tab) — six collapse panels: General, Notifications, Certificates, External traffic webhook, Date and time, LDAP. - GeneralTab.vue receives the reactive AllSetting via props and binds fields directly with v-model:value; SettingsPage stays the sole fetch/save owner. - remarkModel/remarkSeparator surfaced as computed v-models that read+write the underlying single-string field (legacy stores them packed as , e.g. "-ieo"). - LDAP inbound-tags select binds to a CSV ↔ array computed; inbound options come from /panel/api/inbounds/list on mount. - Language select stays cookie-based via LanguageManager and reloads on change — same UX as legacy. Co-Authored-By: Claude Opus 4.7 --- frontend/src/pages/settings/GeneralTab.vue | 475 +++++++++++++++++++ frontend/src/pages/settings/SettingsPage.vue | 3 +- 2 files changed, 477 insertions(+), 1 deletion(-) create mode 100644 frontend/src/pages/settings/GeneralTab.vue diff --git a/frontend/src/pages/settings/GeneralTab.vue b/frontend/src/pages/settings/GeneralTab.vue new file mode 100644 index 00000000..45574308 --- /dev/null +++ b/frontend/src/pages/settings/GeneralTab.vue @@ -0,0 +1,475 @@ + + + + + diff --git a/frontend/src/pages/settings/SettingsPage.vue b/frontend/src/pages/settings/SettingsPage.vue index c376d2ff..26d5da84 100644 --- a/frontend/src/pages/settings/SettingsPage.vue +++ b/frontend/src/pages/settings/SettingsPage.vue @@ -14,6 +14,7 @@ import { theme as themeState } from '@/composables/useTheme.js'; import { useMediaQuery } from '@/composables/useMediaQuery.js'; import AppSidebar from '@/components/AppSidebar.vue'; import { useAllSetting } from './useAllSetting.js'; +import GeneralTab from './GeneralTab.vue'; const antdThemeConfig = computed(() => ({ algorithm: themeState.isDark ? antdTheme.darkAlgorithm : antdTheme.defaultAlgorithm, @@ -206,7 +207,7 @@ const alertVisible = ref(true); Panel - +