From 5bf02fa4df670076d9ff00335a1d20a4b0eaedaf Mon Sep 17 00:00:00 2001 From: linshen <32978552+linshenkx@users.noreply.github.com> Date: Sat, 18 Oct 2025 21:43:53 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E6=94=B6=E8=97=8F=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=8A=9F=E8=83=BD=E5=9B=BD=E9=99=85=E5=8C=96=E3=80=81?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E4=BC=98=E5=8C=96=E4=B8=8E=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 此提交包含收藏模块的国际化支持、布局和交互优化,以及核心组件的重构,以提升可维护性、用户体验和性能。 **主要特性与改进:** 1. **收藏功能国际化 (i18n):** * 实现了收藏模块所有组件的三语言(中、英、繁)国际化支持。 * 国际化了 `CategoryTreeSelect.vue`、`FavoriteCard.vue`、`FavoriteManager.vue` 和 `SaveFavoriteDialog.vue` 中的所有硬编码文本。 * 更新了 `zh-CN.ts`、`en-US.ts` 和 `zh-TW.ts` 翻译资源,新增了必要的翻译键。 * 彻底消除了 UI 层的硬编码中文文本。 2. **收藏管理器布局与交互优化:** * 重构 `FavoriteCard` 为固定高度网格布局,解决了卡片高度不一致问题。 * 新增 `useTooltipTheme` 工具统一 Tooltip 样式,并优化了其智能定位逻辑和空间计算。 * 实现了响应式网格布局 (移动端1列/平板2列/桌面4列),并对 `resize` 事件进行节流和缓存计算结果以优化性能。 * 改进了公开标识的可见性,使用 `NTag` 替代纯图标。 * 将 CSS `v-bind` 改为动态 `style` 绑定提升稳定性。 * `FavoriteManager` 移除了滚动容器,改为固定高度工具栏、可滚动卡片区域与固定底部分页的设计。 * 精简了视图模式,移除了列表视图,仅保留卡片视图,并删除了视图切换按钮组。 * 优化了工具栏布局为单行,左侧包含搜索/筛选/计数,右侧为操作按钮,并支持响应式设计。 * 精简了代码和依赖,删除了多余的组件导入和状态管理,减少了约 180 行代码。 * **修复:** 修复了 `FavoriteManager` 编辑对话框中 `NGrid` 和 `NGridItem` 组件缺失导入导致的运行时警告。 3. **收藏对话框组件重构:** * 新增了 `CategoryTreeSelect` 通用组件,支持树状分类选择、内置分类管理和自动加载数据。 * 改造 `SaveFavoriteDialog` 为通用组件,支持新建/保存模式,动态标题和字段禁用逻辑,并集成了 `CategoryTreeSelect`。 * 简化了 `FavoriteManager` 组件,删除了 120 行重复代码,统一使用 `SaveFavoriteDialog` 和 `CategoryTreeSelect`。 * 遵循 DRY、KISS、YAGNI 原则,消除了约 150 行重复代码,提升了可维护性。 **Breaking Changes:** * 收藏管理器布局从响应式 CSS Grid 改为固定网格 + 分页设计。 * 每页显示数量现在根据屏幕尺寸动态调整 (4-8项)。 * 移除了列表视图 (list view),仅保留卡片视图 (grid view)。 --- .../ui/src/components/CategoryTreeSelect.vue | 169 +++ packages/ui/src/components/FavoriteCard.vue | 579 ++++++--- .../ui/src/components/FavoriteManager.vue | 1095 ++++------------- .../ui/src/components/SaveFavoriteDialog.vue | 280 +++-- packages/ui/src/composables/index.ts | 1 + .../ui/src/composables/useTooltipTheme.ts | 59 + packages/ui/src/i18n/locales/en-US.ts | 141 +++ packages/ui/src/i18n/locales/zh-CN.ts | 141 +++ packages/ui/src/i18n/locales/zh-TW.ts | 174 +++ 9 files changed, 1501 insertions(+), 1138 deletions(-) create mode 100644 packages/ui/src/components/CategoryTreeSelect.vue create mode 100644 packages/ui/src/composables/useTooltipTheme.ts diff --git a/packages/ui/src/components/CategoryTreeSelect.vue b/packages/ui/src/components/CategoryTreeSelect.vue new file mode 100644 index 00000000..caa2f87c --- /dev/null +++ b/packages/ui/src/components/CategoryTreeSelect.vue @@ -0,0 +1,169 @@ + + + diff --git a/packages/ui/src/components/FavoriteCard.vue b/packages/ui/src/components/FavoriteCard.vue index cb1e2ead..341ed2db 100644 --- a/packages/ui/src/components/FavoriteCard.vue +++ b/packages/ui/src/components/FavoriteCard.vue @@ -1,167 +1,234 @@ diff --git a/packages/ui/src/components/FavoriteManager.vue b/packages/ui/src/components/FavoriteManager.vue index 80b9f172..a9b0b8be 100644 --- a/packages/ui/src/components/FavoriteManager.vue +++ b/packages/ui/src/components/FavoriteManager.vue @@ -4,306 +4,128 @@ :show="show" preset="card" :style="{ width: '90vw', maxWidth: '1200px', maxHeight: '90vh' }" - title="收藏管理" + :title="t('favorites.manager.title')" size="large" :bordered="false" :segmented="true" @update:show="(value) => !value && close()" > - -
- - - - - - - - +
+ + + + -