fix: bug#10954

This commit is contained in:
xieyonghong 2023-04-01 18:33:00 +08:00
parent ede264c591
commit a6d869e7f0
4 changed files with 29 additions and 14 deletions

View File

@ -136,6 +136,7 @@ const breadcrumb = computed(() =>
watchEffect(() => {
if (router.currentRoute) {
const paths = router.currentRoute.value.name as string
console.log(paths)
if (paths) {
const _metas = findRouteMeta(paths)
state.selectedKeys = _metas.map(item => item.path)

View File

@ -100,7 +100,6 @@ export const useMenuStore = defineStore({
// 是否存在通知订阅
const hasMessageSub = resp.result.some((item: { code: string }) => item.code === MESSAGE_SUBSCRIBE_MENU_CODE)
console.log('hasMessageSub', hasMessageSub)
if (!hasMessageSub) {
AccountMenu.children = AccountMenu.children.filter((item: { code: string }) => ![NotificationSubscriptionCode, NotificationRecordCode].includes(item.code) )
}

View File

@ -212,6 +212,7 @@ export const findCodeRoute = (asyncRouterMap: any[]) => {
function getDetail(code: string, url: string) {
const detail = findDetailRouteItem(code, url)
if (!detail) return
routeMeta[(detail as MenuItem).code] = {
path: detail.url,
title: detail.name,
@ -243,11 +244,19 @@ export const findCodeRoute = (asyncRouterMap: any[]) => {
getDetail(_code, url)
})
}
getDetail(route.code, route.url)
const _code = route.appId ? `/${route.appId}${route.url}` : route.code
if (!route.appId) {
getDetail(_code, route.url)
} else {
routeMeta[_code] = {
path: `/${route.appId}${route.url}`,
title: route.name,
parentName: code,
buttons: []
}
}
if (route.children) {
findChildren(route.children, route.code)
findChildren(route.children, _code)
}
})
}
@ -262,9 +271,11 @@ export function filterAsyncRouter(asyncRouterMap: any, parentCode = '', level =
const menusData: any[] = []
const silderMenus: any[] = []
_asyncRouterMap.forEach((route: any) => {
const hasAppId = route.appId
const _route: any = {
path: `${route.url}`,
name: route.code,
path: hasAppId ? `/${route.appId}${route.url}` : `${route.url}`,
name: hasAppId ? `/${route.appId}${route.url}` : route.code,
url: hasAppId ? `/${route.appId}${route.url}` : route.url,
meta: {
icon: route.icon,
title: route.name,
@ -274,7 +285,6 @@ export function filterAsyncRouter(asyncRouterMap: any, parentCode = '', level =
}
const silder = { ..._route }
// 查看是否有隐藏子路由
route.children = findChildrenRoute(route.code, route.url, route.children)
route.children = findDetailRoutes(route.children)
@ -287,7 +297,7 @@ export function filterAsyncRouter(asyncRouterMap: any, parentCode = '', level =
if (showChildren && _route.children.length) {
_route.component = level === 1 ? BasicLayoutPage : BlankLayoutPage
_route.redirect = route.children[0].url
_route.redirect = _route.children[0].url
} else {
const myComponent = resolveComponent(route.code)
// _route.component = myComponent ? myComponent : BlankLayoutPage;
@ -300,7 +310,11 @@ export function filterAsyncRouter(asyncRouterMap: any, parentCode = '', level =
}
}
} else {
_route.component = route.component || resolveComponent(route.code) || BlankLayoutPage
if (hasAppId) {
_route.component = route.component || resolveComponent('iframe')
} else {
_route.component = route.component || resolveComponent(route.code) || BlankLayoutPage
}
}
menusData.push(_route)
silderMenus.push(silder)

View File

@ -14,6 +14,7 @@ import { LocalStore } from '@/utils/comm';
import { getAppInfo_api } from '@/api/system/apply';
const iframeUrl = ref<string>('');
const route = useRoute()
const handle = async (appId: string, url: string) => {
const res = await getAppInfo_api(appId);
@ -25,7 +26,7 @@ const handle = async (appId: string, url: string) => {
}
if (res.result.provider === 'internal-standalone') {
//{baseUrl}/api/application/sso/{appId}/login?redirect={menuUrl}
const urlStandalone = `${res.result.page.baseUrl}/api/application/sso/${appId}/login?redirect=${menuUrl}?layout=false`;
const urlStandalone = `${res.result.page.baseUrl}/#/api/application/sso/${appId}/login?redirect=${menuUrl}&layout=false`;
iframeUrl.value = urlStandalone;
// console.log(urlStandalone);
} else if (res.result.provider === 'internal-integrated') {
@ -41,9 +42,9 @@ const handle = async (appId: string, url: string) => {
};
watchEffect(() => {
const params = location.pathname.split('/')?.[1];
const url = location.pathname.split('/').slice(2).join('/');
// console.log(params, url);
const params = route.path.split('/')?.[1];
const url = route.path.split('/').slice(2).join('/');
console.log(params, url);
handle(params, url);
});
</script>