Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cocktail-party-server
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cocktail-party
cocktail-party-server
Commits
5879c248
提交
5879c248
authored
7月 11, 2021
作者:
RuoYi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
菜单路由配置支持内链访问
上级
c02dad2c
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
125 行增加
和
10 行删除
+125
-10
SysIndexController.java
...a/com/ruoyi/web/controller/system/SysIndexController.java
+1
-1
SysMenuController.java
...va/com/ruoyi/web/controller/system/SysMenuController.java
+2
-5
UserConstants.java
...rc/main/java/com/ruoyi/common/constant/UserConstants.java
+3
-0
StringUtils.java
...mon/src/main/java/com/ruoyi/common/utils/StringUtils.java
+12
-0
MetaVo.java
...stem/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
+35
-0
SysMenuServiceImpl.java
...ava/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+37
-2
index.vue
ruoyi-ui/src/components/HeaderSearch/index.vue
+3
-1
AppMain.vue
ruoyi-ui/src/layout/components/AppMain.vue
+1
-1
index.vue
ruoyi-ui/src/layout/components/InnerLink/index.vue
+27
-0
index.js
ruoyi-ui/src/router/index.js
+1
-0
permission.js
ruoyi-ui/src/store/modules/permission.js
+3
-0
没有找到文件。
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
浏览文件 @
5879c248
...
...
@@ -24,6 +24,6 @@ public class SysIndexController
@RequestMapping
(
"/"
)
public
String
index
()
{
return
StringUtils
.
format
(
"欢迎使用
RuoYi后台管理框架,当前版本:v{}"
,
ruoyiConfig
.
getVersion
());
return
StringUtils
.
format
(
"欢迎使用
{}后台管理框架,当前版本:v{},请通过前端地址访问。"
,
ruoyiConfig
.
getName
()
,
ruoyiConfig
.
getVersion
());
}
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
浏览文件 @
5879c248
...
...
@@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
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
;
...
...
@@ -102,8 +101,7 @@ public class SysMenuController extends BaseController
{
return
AjaxResult
.
error
(
"新增菜单'"
+
menu
.
getMenuName
()
+
"'失败,菜单名称已存在"
);
}
else
if
(
UserConstants
.
YES_FRAME
.
equals
(
menu
.
getIsFrame
())
&&
!
StringUtils
.
startsWithAny
(
menu
.
getPath
(),
Constants
.
HTTP
,
Constants
.
HTTPS
))
else
if
(
UserConstants
.
YES_FRAME
.
equals
(
menu
.
getIsFrame
())
&&
!
StringUtils
.
ishttp
(
menu
.
getPath
()))
{
return
AjaxResult
.
error
(
"新增菜单'"
+
menu
.
getMenuName
()
+
"'失败,地址必须以http(s)://开头"
);
}
...
...
@@ -123,8 +121,7 @@ public class SysMenuController extends BaseController
{
return
AjaxResult
.
error
(
"修改菜单'"
+
menu
.
getMenuName
()
+
"'失败,菜单名称已存在"
);
}
else
if
(
UserConstants
.
YES_FRAME
.
equals
(
menu
.
getIsFrame
())
&&
!
StringUtils
.
startsWithAny
(
menu
.
getPath
(),
Constants
.
HTTP
,
Constants
.
HTTPS
))
else
if
(
UserConstants
.
YES_FRAME
.
equals
(
menu
.
getIsFrame
())
&&
!
StringUtils
.
ishttp
(
menu
.
getPath
()))
{
return
AjaxResult
.
error
(
"修改菜单'"
+
menu
.
getMenuName
()
+
"'失败,地址必须以http(s)://开头"
);
}
...
...
ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
浏览文件 @
5879c248
...
...
@@ -57,6 +57,9 @@ public class UserConstants
/** 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-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
浏览文件 @
5879c248
...
...
@@ -6,6 +6,7 @@ import java.util.HashSet;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
com.ruoyi.common.constant.Constants
;
import
com.ruoyi.common.core.text.StrFormatter
;
/**
...
...
@@ -260,6 +261,17 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
return
StrFormatter
.
format
(
template
,
params
);
}
/**
* 是否为http(s)://开头
*
* @param link 链接
* @return 结果
*/
public
static
boolean
ishttp
(
String
link
)
{
return
StringUtils
.
startsWithAny
(
link
,
Constants
.
HTTP
,
Constants
.
HTTPS
);
}
/**
* 字符串转set
*
...
...
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
浏览文件 @
5879c248
package
com
.
ruoyi
.
system
.
domain
.
vo
;
import
com.ruoyi.common.utils.StringUtils
;
/**
* 路由显示信息
*
...
...
@@ -22,6 +24,11 @@ public class MetaVo
*/
private
boolean
noCache
;
/**
* 内链地址(http(s)://开头)
*/
private
String
link
;
public
MetaVo
()
{
}
...
...
@@ -39,6 +46,24 @@ public class MetaVo
this
.
noCache
=
noCache
;
}
public
MetaVo
(
String
title
,
String
icon
,
String
link
)
{
this
.
title
=
title
;
this
.
icon
=
icon
;
this
.
link
=
link
;
}
public
MetaVo
(
String
title
,
String
icon
,
boolean
noCache
,
String
link
)
{
this
.
title
=
title
;
this
.
icon
=
icon
;
this
.
noCache
=
noCache
;
if
(
StringUtils
.
ishttp
(
link
))
{
this
.
link
=
link
;
}
}
public
boolean
isNoCache
()
{
return
noCache
;
...
...
@@ -68,4 +93,14 @@ public class MetaVo
{
this
.
icon
=
icon
;
}
public
String
getLink
()
{
return
link
;
}
public
void
setLink
(
String
link
)
{
this
.
link
=
link
;
}
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
浏览文件 @
5879c248
...
...
@@ -10,6 +10,7 @@ import java.util.Set;
import
java.util.stream.Collectors
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.ruoyi.common.constant.Constants
;
import
com.ruoyi.common.constant.UserConstants
;
import
com.ruoyi.common.core.domain.TreeSelect
;
import
com.ruoyi.common.core.domain.entity.SysMenu
;
...
...
@@ -150,7 +151,7 @@ public class SysMenuServiceImpl implements ISysMenuService
router
.
setName
(
getRouteName
(
menu
));
router
.
setPath
(
getRouterPath
(
menu
));
router
.
setComponent
(
getComponent
(
menu
));
router
.
setMeta
(
new
MetaVo
(
menu
.
getMenuName
(),
menu
.
getIcon
(),
StringUtils
.
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
()
&&
cMenus
.
size
()
>
0
&&
UserConstants
.
TYPE_DIR
.
equals
(
menu
.
getMenuType
()))
{
...
...
@@ -166,7 +167,21 @@ public class SysMenuServiceImpl implements ISysMenuService
children
.
setPath
(
menu
.
getPath
());
children
.
setComponent
(
menu
.
getComponent
());
children
.
setName
(
StringUtils
.
capitalize
(
menu
.
getPath
()));
children
.
setMeta
(
new
MetaVo
(
menu
.
getMenuName
(),
menu
.
getIcon
(),
StringUtils
.
equals
(
"1"
,
menu
.
getIsCache
())));
children
.
setMeta
(
new
MetaVo
(
menu
.
getMenuName
(),
menu
.
getIcon
(),
StringUtils
.
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
);
}
...
...
@@ -338,6 +353,11 @@ public class SysMenuServiceImpl implements ISysMenuService
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
()))
...
...
@@ -365,6 +385,10 @@ public class SysMenuServiceImpl implements ISysMenuService
{
component
=
menu
.
getComponent
();
}
else
if
(
StringUtils
.
isEmpty
(
menu
.
getComponent
())
&&
menu
.
getParentId
().
intValue
()
!=
0
&&
isInnerLink
(
menu
))
{
component
=
UserConstants
.
INNER_LINK
;
}
else
if
(
StringUtils
.
isEmpty
(
menu
.
getComponent
())
&&
isParentView
(
menu
))
{
component
=
UserConstants
.
PARENT_VIEW
;
...
...
@@ -384,6 +408,17 @@ public class SysMenuServiceImpl implements ISysMenuService
&&
menu
.
getIsFrame
().
equals
(
UserConstants
.
NO_FRAME
);
}
/**
* 是否为内链组件
*
* @param menu 菜单信息
* @return 结果
*/
public
boolean
isInnerLink
(
SysMenu
menu
)
{
return
menu
.
getIsFrame
().
equals
(
UserConstants
.
NO_FRAME
)
&&
StringUtils
.
ishttp
(
menu
.
getPath
());
}
/**
* 是否为parent_view组件
*
...
...
ruoyi-ui/src/components/HeaderSearch/index.vue
浏览文件 @
5879c248
...
...
@@ -70,9 +70,11 @@ export default {
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
浏览文件 @
5879c248
...
...
@@ -51,7 +51,7 @@ export default {
// fix css style bug in open el-dialog
.el-popup-parent--hidden
{
.fixed-header
{
padding-right
:
1
5
px
;
padding-right
:
1
7
px
;
}
}
</
style
>
ruoyi-ui/src/layout/components/InnerLink/index.vue
0 → 100644
浏览文件 @
5879c248
<
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
浏览文件 @
5879c248
...
...
@@ -6,6 +6,7 @@ Vue.use(Router)
/* Layout */
import
Layout
from
'@/layout'
import
ParentView
from
'@/components/ParentView'
;
import
InnerLink
from
'@/layout/components/InnerLink'
/**
* Note: 路由配置项
...
...
ruoyi-ui/src/store/modules/permission.js
浏览文件 @
5879c248
...
...
@@ -2,6 +2,7 @@ import { constantRoutes } from '@/router'
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 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
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
)
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论