ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.ruoyi.web.controller.system; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.utils.StringUtils; /** * é¦é¡µ * * @author ruoyi */ @RestController public class SysIndexController { /** ç³»ç»åºç¡é ç½® */ @Autowired private RuoYiConfig ruoyiConfig; /** * 访é®é¦é¡µï¼æç¤ºè¯ */ @RequestMapping("/") public String index() { return StringUtils.format("欢è¿ä½¿ç¨{}åå°ç®¡çæ¡æ¶ï¼å½åçæ¬ï¼v{}ï¼è¯·éè¿å端å°å访é®ã", ruoyiConfig.getName(), ruoyiConfig.getVersion()); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
@@ -2,7 +2,6 @@ import cn.hutool.core.util.StrUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; ruoyi-admin/src/main/resources/application.yml
@@ -209,7 +209,7 @@ # 请æ±åç¼ pathMapping: /dev-api # æ é¢ title: 'æ é¢ï¼RuoYi-Vue-Plusåå°ç®¡çç³»ç»_æ¥å£ææ¡£' title: 'æ é¢ï¼${ruoyi.name}åå°ç®¡çç³»ç»_æ¥å£ææ¡£' # æè¿° description: 'æè¿°ï¼ç¨äºç®¡çé墿ä¸å ¬å¸ç人åä¿¡æ¯,å ·ä½å æ¬XXX,XXX模å...' # çæ¬ ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
@@ -2,7 +2,7 @@ /** * ç¨æ·å¸¸éä¿¡æ¯ * * * @author ruoyi */ public class UserConstants @@ -57,6 +57,9 @@ /** ParentViewç»ä»¶æ è¯ */ public final static String PARENT_VIEW = "ParentView"; /** InnerLinkç»ä»¶æ è¯ */ public final static String INNER_LINK = "InnerLink"; /** æ ¡éªè¿åç»æç */ public final static String UNIQUE = "0"; public final static String NOT_UNIQUE = "1"; ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -100,12 +100,13 @@ .antMatchers("/login", "/captchaImage").anonymous() .antMatchers( HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js" "/**/*.js", "/profile/**" ).permitAll() .antMatchers("/profile/**").anonymous() .antMatchers("/common/download**").anonymous() .antMatchers("/common/download/resource**").anonymous() .antMatchers("/doc.html").anonymous() ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
@@ -28,6 +28,11 @@ */ private boolean noCache; /** * å é¾å°åï¼http(s)://å¼å¤´ï¼ */ private String link; public MetaVo(String title, String icon) { this.title = title; this.icon = icon; ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -135,7 +135,7 @@ router.setName(getRouteName(menu)); router.setPath(getRouterPath(menu)); router.setComponent(getComponent(menu)); router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StrUtil.equals("1", menu.getIsCache()))); router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); List<SysMenu> cMenus = menu.getChildren(); if (!cMenus.isEmpty() && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { router.setAlwaysShow(true); @@ -148,7 +148,19 @@ children.setPath(menu.getPath()); children.setComponent(menu.getComponent()); children.setName(StrUtil.upperFirst(menu.getPath())); children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StrUtil.equals("1", menu.getIsCache()))); children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StrUtil.equals("1", menu.getIsCache()), menu.getPath())); childrenList.add(children); router.setChildren(childrenList); } else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) { router.setMeta(null); router.setPath("/inner"); List<RouterVo> childrenList = new ArrayList<RouterVo>(); RouterVo children = new RouterVo(); String routerPath = StringUtils.replaceEach(menu.getPath(), new String[] { Constants.HTTP, Constants.HTTPS }, new String[] { "", "" }); children.setPath(routerPath); children.setComponent(UserConstants.INNER_LINK); children.setName(StringUtils.capitalize(routerPath)); children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath())); childrenList.add(children); router.setChildren(childrenList); } @@ -305,6 +317,10 @@ */ public String getRouterPath(SysMenu menu) { String routerPath = menu.getPath(); // å 龿å¼å¤ç½æ¹å¼ if (menu.getParentId().intValue() != 0 && isInnerLink(menu)) { routerPath = StringUtils.replaceEach(routerPath, new String[] { Constants.HTTP, Constants.HTTPS }, new String[] { "", "" }); } // éå¤é¾å¹¶ä¸æ¯ä¸çº§ç®å½ï¼ç±»å为ç®å½ï¼ if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType()) && UserConstants.NO_FRAME.equals(menu.getIsFrame())) { @@ -327,7 +343,9 @@ String component = UserConstants.LAYOUT; if (StrUtil.isNotEmpty(menu.getComponent()) && !isMenuFrame(menu)) { component = menu.getComponent(); } else if (StrUtil.isEmpty(menu.getComponent()) && isParentView(menu)) { } else if (StringUtils.isEmpty(menu.getComponent()) && menu.getParentId().intValue() != 0 && isInnerLink(menu)) { component = UserConstants.INNER_LINK; } else if (StrUtil.isEmpty(menu.getComponent()) && isParentView(menu)) { component = UserConstants.PARENT_VIEW; } return component; @@ -345,6 +363,16 @@ } /** * æ¯å¦ä¸ºå é¾ç»ä»¶ * * @param menu èåä¿¡æ¯ * @return ç»æ */ public boolean isInnerLink(SysMenu menu) { return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath()); } /** * æ¯å¦ä¸ºparent_viewç»ä»¶ * * @param menu èåä¿¡æ¯ @@ -357,7 +385,7 @@ /** * æ ¹æ®ç¶èç¹çIDè·åææåèç¹ * * @param list å类表 * @param list å类表 * @param parentId ä¼ å ¥çç¶èç¹ID * @return String */ ruoyi-ui/src/components/Editor/index.vue
@@ -49,7 +49,7 @@ /* ç±»åï¼base64æ ¼å¼ãurlæ ¼å¼ï¼ */ type: { type: String, default: "", default: "url", } }, data() { ruoyi-ui/src/components/HeaderSearch/index.vue
@@ -70,9 +70,11 @@ this.show = false }, change(val) { const path = val.path; if(this.ishttp(val.path)) { // http(s):// è·¯å¾æ°çªå£æå¼ window.open(val.path, "_blank"); const pindex = path.indexOf("http"); window.open(path.substr(pindex, path.length), "_blank"); } else { this.$router.push(val.path) } ruoyi-ui/src/layout/components/AppMain.vue
@@ -51,7 +51,7 @@ // fix css style bug in open el-dialog .el-popup-parent--hidden { .fixed-header { padding-right: 15px; padding-right: 17px; } } </style> ruoyi-ui/src/layout/components/InnerLink/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ <script> export default { data() { return {}; }, render() { const { $route: { meta: { link } }, } = this; if ({ link }.link === "") { return "404"; } let url = { link }.link; const height = document.documentElement.clientHeight - 94.5 + "px"; const style = { height: height }; return ( <div style={style}> <iframe src={url} frameborder="no" style="width: 100%; height: 100%" scrolling="auto" ></iframe> </div> ); }, }; </script> ruoyi-ui/src/router/index.js
@@ -6,6 +6,7 @@ /* Layout */ import Layout from '@/layout' import ParentView from '@/components/ParentView'; import InnerLink from '@/layout/components/InnerLink' /** * Note: è·¯ç±é 置项 ruoyi-ui/src/store/modules/permission.js
@@ -2,6 +2,7 @@ import { getRouters } from '@/api/menu' import Layout from '@/layout/index' import ParentView from '@/components/ParentView'; import InnerLink from '@/layout/components/InnerLink' const permission = { state: { @@ -65,6 +66,8 @@ route.component = Layout } else if (route.component === 'ParentView') { route.component = ParentView } else if (route.component === 'InnerLink') { route.component = InnerLink } else { route.component = loadView(route.component) }