Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
finance-manage
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
finance-oa
finance-manage
Commits
5879c248
Commit
5879c248
authored
Jul 11, 2021
by
RuoYi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
菜单路由配置支持内链访问
parent
c02dad2c
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
125 additions
and
10 deletions
+125
-10
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
...a/com/ruoyi/web/controller/system/SysIndexController.java
+1
-1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
...va/com/ruoyi/web/controller/system/SysMenuController.java
+2
-5
ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
...rc/main/java/com/ruoyi/common/constant/UserConstants.java
+3
-0
ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
...mon/src/main/java/com/ruoyi/common/utils/StringUtils.java
+12
-0
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
...stem/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java
+35
-0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
...ava/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+37
-2
ruoyi-ui/src/components/HeaderSearch/index.vue
ruoyi-ui/src/components/HeaderSearch/index.vue
+3
-1
ruoyi-ui/src/layout/components/AppMain.vue
ruoyi-ui/src/layout/components/AppMain.vue
+1
-1
ruoyi-ui/src/layout/components/InnerLink/index.vue
ruoyi-ui/src/layout/components/InnerLink/index.vue
+27
-0
ruoyi-ui/src/router/index.js
ruoyi-ui/src/router/index.js
+1
-0
ruoyi-ui/src/store/modules/permission.js
ruoyi-ui/src/store/modules/permission.js
+3
-0
No files found.
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
)
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment