|
|
@ -26,7 +26,7 @@ import { |
|
|
|
import { RouteConfigs, relativeStorageType, tagsViewsType } from "../../types"; |
|
|
|
import { emitter } from "/@/utils/mitt"; |
|
|
|
import { templateRef } from "@vueuse/core"; |
|
|
|
import { handleAliveRoute } from "/@/router"; |
|
|
|
import { handleAliveRoute, delAliveRoutes } from "/@/router"; |
|
|
|
import { storageLocal } from "/@/utils/storage"; |
|
|
|
import { useRoute, useRouter } from "vue-router"; |
|
|
|
import { usePermissionStoreHook } from "/@/store/modules/permission"; |
|
|
@ -124,7 +124,8 @@ function dynamicRouteTag(value: string, parentPath: string): void { |
|
|
|
routerArrays.push({ |
|
|
|
path: value, |
|
|
|
parentPath: `/${parentPath.split("/")[1]}`, |
|
|
|
meta: arrItem.meta |
|
|
|
meta: arrItem.meta, |
|
|
|
name: arrItem.name |
|
|
|
}); |
|
|
|
relativeStorage.routesInStorage = routerArrays; |
|
|
|
} else { |
|
|
@ -151,6 +152,8 @@ function onFresh() { |
|
|
|
} |
|
|
|
|
|
|
|
function deleteDynamicTag(obj: any, current: any, tag?: string) { |
|
|
|
// 存放被删除的缓存路由 |
|
|
|
let delAliveRouteList = []; |
|
|
|
let valueIndex: number = routerArrays.findIndex((item: any) => { |
|
|
|
return item.path === obj.path; |
|
|
|
}); |
|
|
@ -171,7 +174,7 @@ function deleteDynamicTag(obj: any, current: any, tag?: string) { |
|
|
|
]; |
|
|
|
routerArrays = relativeStorage.routesInStorage; |
|
|
|
} else { |
|
|
|
routerArrays.splice(start, end); |
|
|
|
delAliveRouteList = routerArrays.splice(start, end); |
|
|
|
relativeStorage.routesInStorage = routerArrays; |
|
|
|
} |
|
|
|
}; |
|
|
@ -189,7 +192,9 @@ function deleteDynamicTag(obj: any, current: any, tag?: string) { |
|
|
|
let newRoute: any = routerArrays.slice(-1); |
|
|
|
if (current === route.path) { |
|
|
|
// 删除缓存路由 |
|
|
|
handleAliveRoute(route.matched, "delete"); |
|
|
|
tag |
|
|
|
? delAliveRoutes(delAliveRouteList) |
|
|
|
: handleAliveRoute(route.matched, "delete"); |
|
|
|
// 如果删除当前激活tag就自动切换到最后一个tag |
|
|
|
if (tag === "left") return; |
|
|
|
nextTick(() => { |
|
|
@ -198,18 +203,14 @@ function deleteDynamicTag(obj: any, current: any, tag?: string) { |
|
|
|
}); |
|
|
|
}); |
|
|
|
} else { |
|
|
|
//保存跳转之前的路径 |
|
|
|
let oldPath = route.path; |
|
|
|
router.push(obj.path); |
|
|
|
// 删除缓存路由 |
|
|
|
handleAliveRoute(route.matched, "delete"); |
|
|
|
tag ? delAliveRoutes(delAliveRouteList) : delAliveRoutes([obj]); |
|
|
|
if (!routerArrays.length) return; |
|
|
|
let isHasOldPath = routerArrays.some(item => { |
|
|
|
return item.path === oldPath; |
|
|
|
let isHasActiveTag = routerArrays.some(item => { |
|
|
|
return item.path === route.path; |
|
|
|
}); |
|
|
|
isHasOldPath |
|
|
|
? router.push(oldPath) |
|
|
|
: router.push({ |
|
|
|
!isHasActiveTag && |
|
|
|
router.push({ |
|
|
|
path: newRoute[0].path |
|
|
|
}); |
|
|
|
} |
|
|
@ -230,7 +231,11 @@ function onClickDrop(key, item, selectRoute?: RouteConfigs) { |
|
|
|
case 1: |
|
|
|
// 关闭当前标签页 |
|
|
|
selectRoute |
|
|
|
? deleteMenu({ path: selectRoute.path, meta: selectRoute.meta }) |
|
|
|
? deleteMenu({ |
|
|
|
path: selectRoute.path, |
|
|
|
meta: selectRoute.meta, |
|
|
|
name: selectRoute.name |
|
|
|
}) |
|
|
|
: deleteMenu({ path: route.path, meta: route.meta }); |
|
|
|
break; |
|
|
|
case 2: |
|
|
@ -275,7 +280,6 @@ function onClickDrop(key, item, selectRoute?: RouteConfigs) { |
|
|
|
relativeStorage.routesInStorage = routerArrays; |
|
|
|
usePermissionStoreHook().clearAllCachePage(); |
|
|
|
router.push("/welcome"); |
|
|
|
|
|
|
|
break; |
|
|
|
} |
|
|
|
setTimeout(() => { |
|
|
|