diff --git a/docs/sql/sys_menu.sql b/docs/sql/sys_menu.sql index 56a067a5..d3144fe3 100644 --- a/docs/sql/sys_menu.sql +++ b/docs/sql/sys_menu.sql @@ -29,8 +29,8 @@ UPDATE `sys_menu` SET `icon` = 'gg:debug', `menu_name` = 'route.demo_tree' WHERE UPDATE `sys_menu` SET `path` = 'oss/config', `component` = 'system/oss-config/index', `icon` = 'hugeicons:configuration-01', `menu_name` = 'route.system_oss-config' WHERE `menu_id` = 133; -- IFrame 类型 -UPDATE `sys_menu` SET `component` = 'FrameView', `query_param` = 'https://ruoyi.xlsea.cn/admin/', `is_frame` = 2, `icon` = 'bx:bxl-spring-boot', `menu_name` = 'menu.monitor_admin' WHERE `menu_id` = 117; -UPDATE `sys_menu` SET `component` = 'FrameView', `query_param` = 'https://preview.snailjob.opensnail.com/', `is_frame` = 2, `icon` = 'gridicons:scheduled', `menu_name` = 'menu.monitor_snail-job' WHERE `menu_id` = 120; +UPDATE `sys_menu` SET `component` = 'FrameView', `query_param` = '{"url": "https://ruoyi.xlsea.cn/admin/"}', `is_frame` = 2, `icon` = 'bx:bxl-spring-boot', `menu_name` = 'menu.monitor_admin' WHERE `menu_id` = 117; +UPDATE `sys_menu` SET `component` = 'FrameView', `query_param` = '{"url": "https://preview.snailjob.opensnail.com/"}', `is_frame` = 2, `icon` = 'gridicons:scheduled', `menu_name` = 'menu.monitor_snail-job' WHERE `menu_id` = 120; -- 外链类型 UPDATE `sys_menu` SET `path` = 'https://gitee.com/xlsea/ruoyi-plus-soybean', `component` = 'FrameView', `icon` = 'local-icon-gitee', `menu_name` = 'RuoYi-Plus-Soybean' WHERE `menu_id` = 4; diff --git a/src/store/modules/route/index.ts b/src/store/modules/route/index.ts index f340d642..88dfc9de 100644 --- a/src/store/modules/route/index.ts +++ b/src/store/modules/route/index.ts @@ -142,10 +142,12 @@ export const useRouteStore = defineStore(SetupStoreId.Route, () => { route.name = random; route.component = 'layout.base$view.iframe-page'; } else { - route.props = { - // @ts-expect-error no query field - url: route.query - }; + try { + route.props = { + // @ts-expect-error no query field + url: JSON.parse(route.query)?.url + }; + } catch {} } route.component = parent && !isExternalLink ? 'view.iframe-page' : 'layout.base$view.iframe-page'; } else if (!isLayout && !isParentLayout) { diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index f5a32f2d..fc887fb6 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -322,6 +322,14 @@ const btnColumns: DataTableColumns = [ } } ]; + +const renderIframeQuery = (queryParam: string) => { + try { + return JSON.parse(queryParam || '{}')?.url; + } catch { + return queryParam; + } +};