mirror of
https://github.com/pure-admin/pure-admin-thin.git
synced 2025-12-17 07:40:34 +08:00
release: update 6.2.0
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
<script setup lang="ts">
|
||||
import { emitter } from "@/utils/mitt";
|
||||
import NProgress from "@/utils/progress";
|
||||
import { RouteConfigs } from "../../types";
|
||||
import { useTags } from "../../hooks/useTag";
|
||||
import { routerArrays } from "@/layout/types";
|
||||
@@ -204,12 +205,14 @@ function dynamicRouteTag(value: string): void {
|
||||
|
||||
/** 刷新路由 */
|
||||
function onFresh() {
|
||||
NProgress.start();
|
||||
const { fullPath, query } = unref(route);
|
||||
router.replace({
|
||||
path: "/redirect" + fullPath,
|
||||
query
|
||||
});
|
||||
handleAliveRoute(route as ToRouteType, "refresh");
|
||||
NProgress.done();
|
||||
}
|
||||
|
||||
function deleteDynamicTag(obj: any, current: any, tag?: string) {
|
||||
@@ -351,7 +354,7 @@ function onClickDrop(key, item, selectRoute?: RouteConfigs) {
|
||||
break;
|
||||
}
|
||||
setTimeout(() => {
|
||||
showMenuModel(route.fullPath, route.query);
|
||||
showMenuModel(route.fullPath, route.query, route.params);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -386,15 +389,18 @@ function disabledMenus(value: boolean, fixedTag = false) {
|
||||
function showMenuModel(
|
||||
currentPath: string,
|
||||
query: object = {},
|
||||
params: object = {},
|
||||
refresh = false
|
||||
) {
|
||||
const allRoute = multiTags.value;
|
||||
const routeLength = multiTags.value.length;
|
||||
let currentIndex = -1;
|
||||
if (isAllEmpty(query)) {
|
||||
currentIndex = allRoute.findIndex(v => v.path === currentPath);
|
||||
} else {
|
||||
if (!isAllEmpty(params)) {
|
||||
currentIndex = allRoute.findIndex(v => isEqual(v.params, params));
|
||||
} else if (!isAllEmpty(query)) {
|
||||
currentIndex = allRoute.findIndex(v => isEqual(v.query, query));
|
||||
} else {
|
||||
currentIndex = allRoute.findIndex(v => v.path === currentPath);
|
||||
}
|
||||
function fixedTagDisabled() {
|
||||
if (allRoute[currentIndex]?.meta?.fixedTag) {
|
||||
@@ -460,14 +466,14 @@ function openMenu(tag, e) {
|
||||
} else if (route.path !== tag.path && route.name !== tag.name) {
|
||||
// 右键菜单不匹配当前路由,隐藏刷新
|
||||
tagsViews[0].show = false;
|
||||
showMenuModel(tag.path, tag.query);
|
||||
showMenuModel(tag.path, tag.query, tag.params);
|
||||
} else if (multiTags.value.length === 2 && route.path !== tag.path) {
|
||||
showMenus(true);
|
||||
// 只有两个标签时不显示关闭其他标签页
|
||||
tagsViews[4].show = false;
|
||||
} else if (route.path === tag.path) {
|
||||
// 右键当前激活的菜单
|
||||
showMenuModel(tag.path, tag.query, true);
|
||||
showMenuModel(tag.path, tag.query, tag.params);
|
||||
} else {
|
||||
showMenuModel(tag.path, tag.query, tag.params, true);
|
||||
}
|
||||
|
||||
currentSelect.value = tag;
|
||||
|
||||
@@ -17,13 +17,22 @@ const loading = ref(true);
|
||||
const currentRoute = useRoute();
|
||||
const frameSrc = ref<string>("");
|
||||
const frameRef = ref<HTMLElement | null>(null);
|
||||
const fallbackTimer = ref<number | null>(null);
|
||||
|
||||
if (unref(currentRoute.meta)?.frameSrc) {
|
||||
frameSrc.value = unref(currentRoute.meta)?.frameSrc as string;
|
||||
}
|
||||
unref(currentRoute.meta)?.frameLoading === false && hideLoading();
|
||||
|
||||
function clearFallbackTimer() {
|
||||
if (fallbackTimer.value !== null) {
|
||||
clearTimeout(fallbackTimer.value);
|
||||
fallbackTimer.value = null;
|
||||
}
|
||||
}
|
||||
|
||||
function hideLoading() {
|
||||
loading.value = false;
|
||||
clearFallbackTimer();
|
||||
}
|
||||
|
||||
function init() {
|
||||
@@ -32,32 +41,42 @@ function init() {
|
||||
if (!iframe) return;
|
||||
const _frame = iframe as any;
|
||||
if (_frame.attachEvent) {
|
||||
_frame.attachEvent("onload", () => {
|
||||
hideLoading();
|
||||
});
|
||||
_frame.attachEvent("onload", hideLoading);
|
||||
} else {
|
||||
iframe.onload = () => {
|
||||
hideLoading();
|
||||
};
|
||||
iframe.onload = hideLoading;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
let isRedirect = false;
|
||||
|
||||
watch(
|
||||
() => currentRoute.fullPath,
|
||||
path => {
|
||||
if (
|
||||
currentRoute.name === "Redirect" &&
|
||||
path.includes(props.frameInfo?.fullPath)
|
||||
props.frameInfo?.fullPath &&
|
||||
path.includes(props.frameInfo.fullPath)
|
||||
) {
|
||||
frameSrc.value = path; // redirect时,置换成任意值,待重定向后 重新赋值
|
||||
isRedirect = true;
|
||||
loading.value = true;
|
||||
return;
|
||||
}
|
||||
// 重新赋值
|
||||
if (props.frameInfo?.fullPath === path) {
|
||||
frameSrc.value = props.frameInfo?.frameSrc;
|
||||
if (props.frameInfo?.fullPath === path && isRedirect) {
|
||||
loading.value = true;
|
||||
clearFallbackTimer();
|
||||
const url = new URL(props.frameInfo.frameSrc, window.location.origin);
|
||||
const joinChar = url.search ? "&" : "?";
|
||||
frameSrc.value = `${props.frameInfo.frameSrc}${joinChar}t=${Date.now()}`;
|
||||
fallbackTimer.value = window.setTimeout(() => {
|
||||
if (loading.value) {
|
||||
hideLoading();
|
||||
}
|
||||
}, 1500);
|
||||
isRedirect = false;
|
||||
}
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
@@ -113,14 +113,21 @@ export function useTags() {
|
||||
]);
|
||||
|
||||
function conditionHandle(item, previous, next) {
|
||||
const currentName = route.name || "";
|
||||
const itemName = item.name || "";
|
||||
|
||||
if (isBoolean(route?.meta?.showLink) && route?.meta?.showLink === false) {
|
||||
if (Object.keys(route.query).length > 0) {
|
||||
return isEqual(route.query, item.query) ? previous : next;
|
||||
return currentName === itemName && isEqual(route.query, item.query)
|
||||
? previous
|
||||
: next;
|
||||
} else {
|
||||
return isEqual(route.params, item.params) ? previous : next;
|
||||
return currentName === itemName && isEqual(route.params, item.params)
|
||||
? previous
|
||||
: next;
|
||||
}
|
||||
} else {
|
||||
return route.path === item.path ? previous : next;
|
||||
return currentName === itemName ? previous : next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ export const routerArrays: Array<RouteConfigs> =
|
||||
? [
|
||||
{
|
||||
path: "/welcome",
|
||||
name: "Welcome",
|
||||
meta: {
|
||||
title: "首页",
|
||||
icon: "ep/home-filled"
|
||||
|
||||
Reference in New Issue
Block a user