diff --git a/src/components/Layout/BasicLayoutPage.vue b/src/components/Layout/BasicLayoutPage.vue index 97d0ae30..0121209e 100644 --- a/src/components/Layout/BasicLayoutPage.vue +++ b/src/components/Layout/BasicLayoutPage.vue @@ -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) diff --git a/src/store/menu.ts b/src/store/menu.ts index 16f65155..509f182a 100644 --- a/src/store/menu.ts +++ b/src/store/menu.ts @@ -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) ) } diff --git a/src/utils/menu.ts b/src/utils/menu.ts index 2a08cba4..0fc4c8e7 100644 --- a/src/utils/menu.ts +++ b/src/utils/menu.ts @@ -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) diff --git a/src/views/iframe/index.vue b/src/views/iframe/index.vue index e70e948e..f808a3bf 100644 --- a/src/views/iframe/index.vue +++ b/src/views/iframe/index.vue @@ -14,6 +14,7 @@ import { LocalStore } from '@/utils/comm'; import { getAppInfo_api } from '@/api/system/apply'; const iframeUrl = ref(''); +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); });