From 4d713db546c832da452dfe8455614de5f43ff49e Mon Sep 17 00:00:00 2001 From: zhongming4762 Date: Wed, 29 Oct 2025 19:47:10 +0800 Subject: [PATCH] feat: increase support for multiple time zones MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 优化实现方法 --- .../timezone.ts => timezone/getTimezone.ts} | 0 .../getTimezoneOptions.ts} | 0 .../api/{user => timezone}/setTimezone.ts | 2 +- apps/backend-mock/utils/mock-data.ts | 4 +- apps/web-antd/src/api/core/index.ts | 1 - apps/web-antd/src/api/core/user-profile.ts | 23 ---- apps/web-antd/src/layouts/basic.vue | 43 +----- apps/web-antd/src/store/index.ts | 1 - apps/web-antd/src/store/user-profile.ts | 58 -------- apps/web-ele/src/api/core/index.ts | 1 - apps/web-ele/src/api/core/user-profile.ts | 23 ---- apps/web-ele/src/layouts/basic.vue | 43 +----- apps/web-ele/src/store/index.ts | 1 - apps/web-ele/src/store/user-profile.ts | 58 -------- apps/web-naive/src/api/core/index.ts | 1 - apps/web-naive/src/api/core/user-profile.ts | 23 ---- apps/web-naive/src/layouts/basic.vue | 44 +----- apps/web-naive/src/store/index.ts | 1 - apps/web-naive/src/store/user-profile.ts | 58 -------- packages/@core/base/typings/src/app.d.ts | 10 ++ packages/@core/base/typings/src/index.ts | 1 - .../@core/base/typings/src/user-profile.d.ts | 9 -- packages/@core/preferences/src/constants.ts | 35 ++++- .../layouts/src/basic/header/header.vue | 4 + .../src/widgets/timezone/timezone-button.vue | 71 +++++----- packages/stores/src/modules/index.ts | 1 + packages/stores/src/modules/timezone.ts | 125 ++++++++++++++++++ playground/src/api/core/index.ts | 1 + playground/src/api/core/timezone.ts | 30 +++++ playground/src/bootstrap.ts | 4 + playground/src/timezone-init.ts | 20 +++ 31 files changed, 273 insertions(+), 423 deletions(-) rename apps/backend-mock/api/{user/timezone.ts => timezone/getTimezone.ts} (100%) rename apps/backend-mock/api/{profile/timezone.ts => timezone/getTimezoneOptions.ts} (100%) rename apps/backend-mock/api/{user => timezone}/setTimezone.ts (93%) delete mode 100644 apps/web-antd/src/api/core/user-profile.ts delete mode 100644 apps/web-antd/src/store/user-profile.ts delete mode 100644 apps/web-ele/src/api/core/user-profile.ts delete mode 100644 apps/web-ele/src/store/user-profile.ts delete mode 100644 apps/web-naive/src/api/core/user-profile.ts delete mode 100644 apps/web-naive/src/store/user-profile.ts delete mode 100644 packages/@core/base/typings/src/user-profile.d.ts create mode 100644 packages/stores/src/modules/timezone.ts create mode 100644 playground/src/api/core/timezone.ts create mode 100644 playground/src/timezone-init.ts diff --git a/apps/backend-mock/api/user/timezone.ts b/apps/backend-mock/api/timezone/getTimezone.ts similarity index 100% rename from apps/backend-mock/api/user/timezone.ts rename to apps/backend-mock/api/timezone/getTimezone.ts diff --git a/apps/backend-mock/api/profile/timezone.ts b/apps/backend-mock/api/timezone/getTimezoneOptions.ts similarity index 100% rename from apps/backend-mock/api/profile/timezone.ts rename to apps/backend-mock/api/timezone/getTimezoneOptions.ts diff --git a/apps/backend-mock/api/user/setTimezone.ts b/apps/backend-mock/api/timezone/setTimezone.ts similarity index 93% rename from apps/backend-mock/api/user/setTimezone.ts rename to apps/backend-mock/api/timezone/setTimezone.ts index 2265e3cb..9ec00a50 100644 --- a/apps/backend-mock/api/user/setTimezone.ts +++ b/apps/backend-mock/api/timezone/setTimezone.ts @@ -10,5 +10,5 @@ export default eventHandler(async (event) => { } const { timezone } = await readBody(event); setTimezone(timezone); - return useResponseSuccess(); + return useResponseSuccess({}); }); diff --git a/apps/backend-mock/utils/mock-data.ts b/apps/backend-mock/utils/mock-data.ts index 5c534437..54cfa506 100644 --- a/apps/backend-mock/utils/mock-data.ts +++ b/apps/backend-mock/utils/mock-data.ts @@ -7,7 +7,7 @@ export interface UserInfo { homePath?: string; } -export interface TimeZoneOption { +export interface TimezoneOption { offset: number; timeZone: string; } @@ -397,7 +397,7 @@ export function getMenuIds(menus: any[]) { /** * 时区选项 */ -export const TIME_ZONE_OPTIONS: TimeZoneOption[] = [ +export const TIME_ZONE_OPTIONS: TimezoneOption[] = [ { offset: -5, timezone: 'America/New_York', diff --git a/apps/web-antd/src/api/core/index.ts b/apps/web-antd/src/api/core/index.ts index e5d52a40..28a5aef4 100644 --- a/apps/web-antd/src/api/core/index.ts +++ b/apps/web-antd/src/api/core/index.ts @@ -1,4 +1,3 @@ export * from './auth'; export * from './menu'; export * from './user'; -export * from './user-profile'; diff --git a/apps/web-antd/src/api/core/user-profile.ts b/apps/web-antd/src/api/core/user-profile.ts deleted file mode 100644 index eefa9ab7..00000000 --- a/apps/web-antd/src/api/core/user-profile.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { TimezoneOption } from '@vben/types'; - -import { requestClient } from '#/api/request'; - -/** - * 获取系统支持的时区列表 - */ -export async function getTimezoneOptionsApi() { - return requestClient.get('/profile/timezone'); -} -/** - * 获取用户时区 - */ -export async function getUserTimezoneApi(): Promise { - return requestClient.get('/user/timezone'); -} -/** - * 设置用户时区 - * @param timezone 时区 - */ -export async function setUserTimezoneApi(timezone: string) { - return requestClient.post('/user/setTimezone', { timezone }); -} diff --git a/apps/web-antd/src/layouts/basic.vue b/apps/web-antd/src/layouts/basic.vue index 742378f9..805b8a73 100644 --- a/apps/web-antd/src/layouts/basic.vue +++ b/apps/web-antd/src/layouts/basic.vue @@ -1,8 +1,7 @@