diff --git a/src/layouts/BasicLayout/index.vue b/src/layouts/BasicLayout/index.vue
index 807a7bff..4adb561a 100644
--- a/src/layouts/BasicLayout/index.vue
+++ b/src/layouts/BasicLayout/index.vue
@@ -11,6 +11,7 @@
:sider-collapsed-width="siderCollapsedWidth"
:sider-collapse="app.siderCollapse"
:fixed-footer="theme.footer.fixed"
+ :footer-visible="theme.footer.visible"
@update:sider-collapse="app.setSiderCollapse"
>
diff --git a/src/layouts/common/GlobalTab/components/TabDetail/components/ContextMenu.vue b/src/layouts/common/GlobalTab/components/TabDetail/components/ContextMenu.vue
index 658bc537..709a095a 100644
--- a/src/layouts/common/GlobalTab/components/TabDetail/components/ContextMenu.vue
+++ b/src/layouts/common/GlobalTab/components/TabDetail/components/ContextMenu.vue
@@ -23,6 +23,8 @@ interface Props {
visible?: boolean;
/** 当前路由路径 */
currentPath?: string;
+ /** 是否固定在tab卡不可关闭 */
+ affix?: boolean;
/** 鼠标x坐标 */
x: number;
/** 鼠标y坐标 */
@@ -72,7 +74,7 @@ const options = computed
diff --git a/src/settings/theme.json b/src/settings/theme.json
index aa1dd740..a0299b55 100644
--- a/src/settings/theme.json
+++ b/src/settings/theme.json
@@ -110,7 +110,8 @@
},
"footer": {
"fixed": false,
- "height": 48
+ "height": 48,
+ "visible": true
},
"page": {
"animate": true,
diff --git a/src/settings/theme.ts b/src/settings/theme.ts
index 3475d260..d354dceb 100644
--- a/src/settings/theme.ts
+++ b/src/settings/theme.ts
@@ -88,7 +88,8 @@ const defaultThemeSetting: Theme.Setting = {
},
footer: {
fixed: false,
- height: 48
+ height: 48,
+ visible: true
},
page: {
animate: true,
diff --git a/src/store/modules/theme/index.ts b/src/store/modules/theme/index.ts
index c693790f..01118da8 100644
--- a/src/store/modules/theme/index.ts
+++ b/src/store/modules/theme/index.ts
@@ -149,6 +149,10 @@ export const useThemeStore = defineStore('theme-store', {
setFooterHeight(height: number) {
this.footer.height = height;
},
+ /** 设置底部是否显示 */
+ setFooterVisible(isVisible: boolean) {
+ this.footer.visible = isVisible;
+ },
/** 设置切换页面时是否过渡动画 */
setPageIsAnimate(animate: boolean) {
this.page.animate = animate;
diff --git a/src/typings/route.d.ts b/src/typings/route.d.ts
index cfad97b8..671ab219 100644
--- a/src/typings/route.d.ts
+++ b/src/typings/route.d.ts
@@ -60,6 +60,8 @@ declare namespace AuthRoute {
activeMenu?: RouteKey;
/** 表示是否是多级路由的中间级路由(用于转换路由数据时筛选多级路由的标识,定义路由时不用填写) */
multi?: boolean;
+ /** 是否固定在tab卡不可关闭 */
+ affix?: boolean;
}
type Route = K extends AllRouteKey
diff --git a/src/typings/system.d.ts b/src/typings/system.d.ts
index 301c2db4..761af358 100644
--- a/src/typings/system.d.ts
+++ b/src/typings/system.d.ts
@@ -236,6 +236,8 @@ declare namespace Theme {
fixed: boolean;
/** 底部高度 */
height: number;
+ /* 底部是否可见 */
+ visible: boolean;
}
/** 页面样式 */