diff --git a/apps/backend-mock/utils/mock-data.ts b/apps/backend-mock/utils/mock-data.ts
index d4ecdc053..10076ac9e 100644
--- a/apps/backend-mock/utils/mock-data.ts
+++ b/apps/backend-mock/utils/mock-data.ts
@@ -114,7 +114,7 @@ const createDemosMenus = (role: 'admin' | 'super' | 'user') => {
},
name: 'Demos',
path: '/demos',
- redirect: '/access',
+ redirect: '/demos/access',
children: [
{
name: 'Access',
@@ -173,6 +173,6 @@ export const MOCK_MENUS = [
},
{
menus: [...dashboardMenus, ...createDemosMenus('user')],
- username: 'user',
+ username: 'jack',
},
];
diff --git a/apps/web-antd/src/views/demos/features/tabs/index.vue b/apps/web-antd/src/views/demos/features/tabs/index.vue
index 74393f1ed..df98a4b8b 100644
--- a/apps/web-antd/src/views/demos/features/tabs/index.vue
+++ b/apps/web-antd/src/views/demos/features/tabs/index.vue
@@ -1,14 +1,16 @@
@@ -58,7 +67,7 @@ function openTab() {
-
+
@@ -71,16 +80,17 @@ function openTab() {
该操作不会影响页面标题,仅修改Tab标题
-
+
+
diff --git a/internal/tailwind-config/package.json b/internal/tailwind-config/package.json
index a6959f269..291488665 100644
--- a/internal/tailwind-config/package.json
+++ b/internal/tailwind-config/package.json
@@ -49,7 +49,6 @@
"dependencies": {
"@iconify/json": "^2.2.229",
"@iconify/tailwind": "^1.1.1",
- "@tailwindcss/forms": "^0.5.7",
"@tailwindcss/nesting": "0.0.0-insiders.565cd3e",
"@tailwindcss/typography": "^0.5.13",
"autoprefixer": "^10.4.19",
diff --git a/internal/tailwind-config/src/index.ts b/internal/tailwind-config/src/index.ts
index 9c5eeab88..9da0e1cd7 100644
--- a/internal/tailwind-config/src/index.ts
+++ b/internal/tailwind-config/src/index.ts
@@ -5,7 +5,6 @@ import path from 'node:path';
import { fs, getPackagesSync } from '@vben/node-utils';
import { addDynamicIconSelectors } from '@iconify/tailwind';
-import formsPlugin from '@tailwindcss/forms';
import typographyPlugin from '@tailwindcss/typography';
import animate from 'tailwindcss-animate';
@@ -123,7 +122,6 @@ export default {
darkMode: 'selector',
plugins: [
animate,
- formsPlugin,
typographyPlugin,
addDynamicIconSelectors(),
enterAnimationPlugin,
diff --git a/packages/@core/forward/stores/src/modules/tabbar.ts b/packages/@core/forward/stores/src/modules/tabbar.ts
index 45199bea7..53dcbdae6 100644
--- a/packages/@core/forward/stores/src/modules/tabbar.ts
+++ b/packages/@core/forward/stores/src/modules/tabbar.ts
@@ -28,6 +28,10 @@ interface TabsState {
* @zh_CN 当前打开的标签页列表
*/
tabs: TabDefinition[];
+ /**
+ * @zh_CN 更新时间,用于一些更新场景,使用watch深度监听的话,会损耗性能
+ */
+ updateTime?: number;
}
/**
@@ -306,11 +310,17 @@ const useCoreTabbarStore = defineStore('core-tabbar', {
const findTab = this.tabs.find(
(item) => getTabPath(item) === getTabPath(tab),
);
+
if (findTab) {
findTab.meta.newTabTitle = title;
+
await this.updateCacheTab();
}
},
+
+ async setUpdateTime() {
+ this.updateTime = Date.now();
+ },
/**
* @zh_CN 设置标签页顺序
* @param oldIndex
@@ -399,6 +409,7 @@ const useCoreTabbarStore = defineStore('core-tabbar', {
excludeCachedTabs: new Set(),
renderRouteView: true,
tabs: [],
+ updateTime: Date.now(),
}),
});
diff --git a/packages/@core/hooks/src/use-tabs.ts b/packages/@core/hooks/src/use-tabs.ts
index 830a0664b..ca6daf393 100644
--- a/packages/@core/hooks/src/use-tabs.ts
+++ b/packages/@core/hooks/src/use-tabs.ts
@@ -52,10 +52,12 @@ export function useTabs() {
}
async function setTabTitle(title: string) {
+ coreTabbarStore.setUpdateTime();
await coreTabbarStore.setTabTitle(route, title);
}
async function resetTabTitle() {
+ coreTabbarStore.setUpdateTime();
await coreTabbarStore.resetTabTitle(route);
}
diff --git a/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue b/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue
index 73a3f459a..9b61d94c5 100644
--- a/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue
+++ b/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue
@@ -49,7 +49,7 @@ const tabsView = computed((): TabConfig[] => {
: true,
icon: tab.meta.icon as string,
key: tab.fullPath || tab.path,
- title: (tab.meta?.title || tab.name) as string,
+ title: (tab.meta?.newTabTitle || tab.meta?.title || tab.name) as string,
};
});
});
diff --git a/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue b/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue
index e37ed7ee2..bb5907e65 100644
--- a/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue
+++ b/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue
@@ -50,7 +50,7 @@ const tabsView = computed((): TabConfig[] => {
: true,
icon: tab.meta.icon as string,
key: tab.fullPath || tab.path,
- title: (tab.meta?.title || tab.name) as string,
+ title: (tab.meta?.newTabTitle || tab.meta?.title || tab.name) as string,
};
});
});
diff --git a/packages/effects/layouts/src/basic/tabbar/use-tabbar.ts b/packages/effects/layouts/src/basic/tabbar/use-tabbar.ts
index 6fba77364..6aaca73b4 100644
--- a/packages/effects/layouts/src/basic/tabbar/use-tabbar.ts
+++ b/packages/effects/layouts/src/basic/tabbar/use-tabbar.ts
@@ -55,9 +55,16 @@ export function useTabbar() {
const { locale } = useI18n();
const currentTabs = ref();
- watch([() => coreTabbarStore.getTabs, () => locale.value], ([tabs, _]) => {
- currentTabs.value = tabs.map((item) => wrapperTabLocale(item));
- });
+ watch(
+ [
+ () => coreTabbarStore.getTabs,
+ () => coreTabbarStore.updateTime,
+ () => locale.value,
+ ],
+ ([tabs]) => {
+ currentTabs.value = tabs.map((item) => wrapperTabLocale(item));
+ },
+ );
/**
* 初始化固定标签页
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d65f4de36..5b76addf8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -368,9 +368,6 @@ importers:
'@iconify/tailwind':
specifier: ^1.1.1
version: 1.1.1
- '@tailwindcss/forms':
- specifier: ^0.5.7
- version: 0.5.7(tailwindcss@3.4.6(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3)))
'@tailwindcss/nesting':
specifier: 0.0.0-insiders.565cd3e
version: 0.0.0-insiders.565cd3e(postcss@8.4.39)
@@ -3498,11 +3495,6 @@ packages:
'@swc/helpers@0.5.12':
resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==}
- '@tailwindcss/forms@0.5.7':
- resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==}
- peerDependencies:
- tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1'
-
'@tailwindcss/nesting@0.0.0-insiders.565cd3e':
resolution: {integrity: sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==}
peerDependencies:
@@ -6511,10 +6503,6 @@ packages:
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
engines: {node: '>=4'}
- mini-svg-data-uri@1.4.4:
- resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
- hasBin: true
-
minimatch@10.0.1:
resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
engines: {node: 20 || >=22}
@@ -11971,11 +11959,6 @@ snapshots:
dependencies:
tslib: 2.6.3
- '@tailwindcss/forms@0.5.7(tailwindcss@3.4.6(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3)))':
- dependencies:
- mini-svg-data-uri: 1.4.4
- tailwindcss: 3.4.6(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3))
-
'@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.4.39)':
dependencies:
postcss: 8.4.39
@@ -15417,8 +15400,6 @@ snapshots:
min-indent@1.0.1: {}
- mini-svg-data-uri@1.4.4: {}
-
minimatch@10.0.1:
dependencies:
brace-expansion: 2.0.1