From cc8560a0489b7e8a06fee7cb389f3820995b7192 Mon Sep 17 00:00:00 2001 From: XFeng Date: Tue, 13 Jan 2026 18:03:47 +0800 Subject: [PATCH 1/3] =?UTF-8?q?refactor(OperationColumn):=20=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E5=8A=A8=E6=80=81=E5=AE=BD=E5=BA=A6=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E7=9A=84=E6=93=8D=E4=BD=9C=E5=88=97=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 用更动态的方法代替静态宽度计算 - 优化计算逻辑代码 --- src/components/OperationColumn/index.vue | 98 ++++++++++-------------- 1 file changed, 40 insertions(+), 58 deletions(-) diff --git a/src/components/OperationColumn/index.vue b/src/components/OperationColumn/index.vue index f9f26eef..f7b9cdef 100644 --- a/src/components/OperationColumn/index.vue +++ b/src/components/OperationColumn/index.vue @@ -1,28 +1,29 @@ - From f41df4a81131e0d6390d98b8d06cce4bca227427 Mon Sep 17 00:00:00 2001 From: XFeng Date: Tue, 13 Jan 2026 19:45:34 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix(test):=20=F0=9F=94=A8=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20vitest=20=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E6=8A=A5=E9=94=99=E7=AD=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 tests/setup.ts 中添加 __APP_INFO__ 全局 mock - 在 vitest.config.ts 中配置 AutoImport 插件以支持 Vue API 自动导入 --- tests/setup.ts | 8 ++++++++ vitest.config.ts | 18 +++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/tests/setup.ts b/tests/setup.ts index 2f1d5596..f1928975 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -41,6 +41,14 @@ global.ResizeObserver = class ResizeObserver { // Mock Element.scrollIntoView Element.prototype.scrollIntoView = vi.fn(); +// Mock __APP_INFO__ +(globalThis as any).__APP_INFO__ = { + pkg: { + name: "vue3-element-admin", + version: "4.0.0", + }, +}; + // Mock console methods to reduce noise in tests global.console = { ...console, diff --git a/vitest.config.ts b/vitest.config.ts index 5963d8c9..391e3f6f 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,9 +1,25 @@ import { defineConfig } from "vitest/config"; import vue from "@vitejs/plugin-vue"; import { resolve } from "path"; +import AutoImport from "unplugin-auto-import/vite"; +import Components from "unplugin-vue-components/vite"; +import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; export default defineConfig({ - plugins: [vue()], + plugins: [ + vue(), + // API 自动导入 + AutoImport({ + imports: ["vue", "@vueuse/core", "pinia", "vue-router", "vue-i18n"], + resolvers: [ElementPlusResolver()], + dts: false, + }), + // 组件自动导入 + Components({ + resolvers: [ElementPlusResolver()], + dts: false, + }), + ], test: { // 使用 happy-dom 作为测试环境(比 jsdom 快) environment: "happy-dom", From 3bae086c32139a9b2f65ebaa4867684a64db38bb Mon Sep 17 00:00:00 2001 From: XFeng Date: Tue, 13 Jan 2026 19:50:40 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=F0=9F=8E=89=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=88=87=E6=8D=A2=E5=8A=A8=E7=94=BB=20?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现了在项目配置中可配置页面切换动画 - 编写 页面切换动画 功能单元测试 --- src/constants/index.ts | 1 + src/enums/settings.ts | 28 +++++++++++++ src/lang/package/en.json | 5 +++ src/lang/package/zh-cn.json | 5 +++ src/layouts/components/LayoutMain.vue | 51 ++++++++++++++++++----- src/layouts/components/LayoutSettings.vue | 17 +++++++- src/settings.ts | 1 + src/store/modules/settings.ts | 6 +++ tests/unit/store/settings.test.ts | 34 +++++++++++++++ 9 files changed, 137 insertions(+), 11 deletions(-) diff --git a/src/constants/index.ts b/src/constants/index.ts index d448bd3c..57f1e1f5 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -42,6 +42,7 @@ export const STORAGE_KEYS = { SHOW_TAGS_VIEW: `${APP_PREFIX}:ui:show_tags_view`, SHOW_APP_LOGO: `${APP_PREFIX}:ui:show_app_logo`, SHOW_WATERMARK: `${APP_PREFIX}:ui:show_watermark`, + PAGE_SWITCHING_ANIMATION: `${APP_PREFIX}:ui:page_switching_animation`, ENABLE_AI_ASSISTANT: `${APP_PREFIX}:ui:enable_ai_assistant`, LAYOUT: `${APP_PREFIX}:ui:layout`, SIDEBAR_COLOR_SCHEME: `${APP_PREFIX}:ui:sidebar_color_scheme`, diff --git a/src/enums/settings.ts b/src/enums/settings.ts index 7ba9b62b..f516db8a 100644 --- a/src/enums/settings.ts +++ b/src/enums/settings.ts @@ -121,3 +121,31 @@ export const enum DeviceEnum { */ MOBILE = "mobile", } + +/** + * 页面切换动画枚举 + */ +export const enum PageSwitchingAnimationEnum { + /** + * 无动画 + */ + NONE = "none", + /** + * 淡入淡出 + */ + FADE = "fade", + /** + * 平滑切换 + */ + FADE_SLIDE = "fade-slide", + /** + * 缩放切换 + */ + FADE_SCALE = "fade-scale", +} +export const PageSwitchingAnimationOptions: Record = { + none: { value: "none", label: "无动画" }, + fade: { value: "fade", label: "淡入淡出" }, + "fade-slide": { value: "fade-slide", label: "平滑切换" }, + "fade-scale": { value: "fade-scale", label: "缩放切换" }, +}; diff --git a/src/lang/package/en.json b/src/lang/package/en.json index 86cede1e..dd548b3b 100644 --- a/src/lang/package/en.json +++ b/src/lang/package/en.json @@ -72,6 +72,11 @@ "showAppLogo": "Show App Logo", "sidebarColorScheme": "Sidebar Color Scheme", "showWatermark": "Show Watermark", + "pageSwitchingAnimation": "Page Switching Animation", + "none": "None", + "fade": "Fade", + "fade-slide": "Fade Slide", + "fade-scale": "Fade Scale", "classicBlue": "Classic Blue", "minimalWhite": "Minimal White", "copyConfig": "Copy Config", diff --git a/src/lang/package/zh-cn.json b/src/lang/package/zh-cn.json index fd2f8da1..8063b64c 100644 --- a/src/lang/package/zh-cn.json +++ b/src/lang/package/zh-cn.json @@ -75,6 +75,11 @@ "showTagsView": "显示页签", "showAppLogo": "显示Logo", "showWatermark": "显示水印", + "pageSwitchingAnimation": "页面切换动画", + "none": "无动画", + "fade": "淡入淡出", + "fade-slide": "平滑切换", + "fade-scale": "缩放切换", "classicBlue": "经典蓝", "minimalWhite": "极简白", "copyConfig": "复制配置", diff --git a/src/layouts/components/LayoutMain.vue b/src/layouts/components/LayoutMain.vue index 2ab669b6..7afc9190 100644 --- a/src/layouts/components/LayoutMain.vue +++ b/src/layouts/components/LayoutMain.vue @@ -2,7 +2,7 @@