chore: 设置fixedTag后,不可通过关闭其他标签页将其关闭

This commit is contained in:
xiaoxian521 2024-04-02 16:45:11 +08:00
parent ddc0eeea81
commit ec5fee4655

View File

@ -8,6 +8,7 @@ import { onClickOutside } from "@vueuse/core";
import { handleAliveRoute, getTopMenu } from "@/router/utils"; import { handleAliveRoute, getTopMenu } from "@/router/utils";
import { useSettingStoreHook } from "@/store/modules/settings"; import { useSettingStoreHook } from "@/store/modules/settings";
import { useMultiTagsStoreHook } from "@/store/modules/multiTags"; import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
import { usePermissionStoreHook } from "@/store/modules/permission";
import { ref, watch, unref, toRaw, nextTick, onBeforeUnmount } from "vue"; import { ref, watch, unref, toRaw, nextTick, onBeforeUnmount } from "vue";
import { import {
delay, delay,
@ -228,10 +229,20 @@ function deleteDynamicTag(obj: any, current: any, tag?: string) {
other?: boolean other?: boolean
): void => { ): void => {
if (other) { if (other) {
useMultiTagsStoreHook().handleTags("equal", [ useMultiTagsStoreHook().handleTags(
VITE_HIDE_HOME === "false" ? routerArrays[0] : toRaw(getTopMenu()), "equal",
obj [
]); VITE_HIDE_HOME === "false"
? [
...routerArrays,
...usePermissionStoreHook().tagLists.filter(
v => v?.meta?.fixedTag
)
]
: toRaw(getTopMenu()),
obj
].flat()
);
} else { } else {
useMultiTagsStoreHook().handleTags("splice", "", { useMultiTagsStoreHook().handleTags("splice", "", {
startIndex, startIndex,
@ -363,10 +374,14 @@ function showMenus(value: boolean) {
}); });
} }
function disabledMenus(value: boolean) { function disabledMenus(value: boolean, fixedTag = false) {
Array.of(1, 2, 3, 4, 5).forEach(v => { Array.of(1, 2, 3, 4, 5).forEach(v => {
tagsViews[v].disabled = value; tagsViews[v].disabled = value;
}); });
if (fixedTag) {
tagsViews[2].show = false;
tagsViews[2].disabled = true;
}
} }
/** 检查当前右键的菜单两边是否存在别的菜单,如果左侧的菜单是顶级菜单,则不显示关闭左侧标签页,如果右侧没有菜单,则不显示关闭右侧标签页 */ /** 检查当前右键的菜单两边是否存在别的菜单,如果左侧的菜单是顶级菜单,则不显示关闭左侧标签页,如果右侧没有菜单,则不显示关闭右侧标签页 */
@ -415,18 +430,22 @@ function showMenuModel(
tagsViews[v].disabled = false; tagsViews[v].disabled = false;
}); });
tagsViews[3].disabled = true; tagsViews[3].disabled = true;
if (allRoute[currentIndex - 1]?.meta?.fixedTag) {
tagsViews[2].show = false;
tagsViews[2].disabled = true;
}
} else if (currentIndex === 0 || currentPath === `/redirect${topPath}`) { } else if (currentIndex === 0 || currentPath === `/redirect${topPath}`) {
// //
disabledMenus(true); disabledMenus(true);
} else { } else {
disabledMenus(false); disabledMenus(false, allRoute[currentIndex - 1]?.meta?.fixedTag);
} }
} }
function openMenu(tag, e) { function openMenu(tag, e) {
closeMenu(); closeMenu();
if (tag.path === topPath || tag?.meta?.fixedTag) { if (tag.path === topPath || tag?.meta?.fixedTag) {
// // fixedTag
showMenus(false); showMenus(false);
tagsViews[0].show = true; tagsViews[0].show = true;
} else if (route.path !== tag.path && route.name !== tag.name) { } else if (route.path !== tag.path && route.name !== tag.name) {
@ -485,7 +504,6 @@ function tagOnClick(item) {
} else { } else {
router.push({ path }); router.push({ path });
} }
// showMenuModel(item?.path, item?.query);
} }
onClickOutside(contextmenuRef, closeMenu, { onClickOutside(contextmenuRef, closeMenu, {