Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
najiu-admin-template
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
najiu-frontend
najiu-admin-template
Commits
e2cc5af9
Commit
e2cc5af9
authored
Mar 23, 2021
by
Vben
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix(route): ensure that the first level menu can be hidden
parent
908116dd
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
26 additions
and
20 deletions
+26
-20
CHANGELOG.zh_CN.md
CHANGELOG.zh_CN.md
+1
-0
routeHelper.ts
src/router/helper/routeHelper.ts
+16
-12
index.ts
src/router/menus/index.ts
+1
-0
index.ts
src/router/routes/index.ts
+0
-4
permission.ts
src/store/modules/permission.ts
+8
-4
No files found.
CHANGELOG.zh_CN.md
View file @
e2cc5af9
...
@@ -19,6 +19,7 @@
...
@@ -19,6 +19,7 @@
-
修复后台权限指令不生效
-
修复后台权限指令不生效
-
确保 progress 进度条正确关闭
-
确保 progress 进度条正确关闭
-
修复表格勾选列配置失效问题
-
修复表格勾选列配置失效问题
-
确保一级菜单可以被隐藏
## 2.1.0 (2021-03-15)
## 2.1.0 (2021-03-15)
...
...
src/router/helper/routeHelper.ts
View file @
e2cc5af9
...
@@ -79,27 +79,28 @@ export function transformObjToRoute<T = AppRouteModule>(routeList: AppRouteModul
...
@@ -79,27 +79,28 @@ export function transformObjToRoute<T = AppRouteModule>(routeList: AppRouteModul
/**
/**
* Convert multi-level routing to level 2 routing
* Convert multi-level routing to level 2 routing
*/
*/
export
function
flatRoutes
(
routeModules
:
AppRouteModule
[])
{
export
function
flatMultiLevelRoutes
(
routeModules
:
AppRouteModule
[])
{
for
(
let
index
=
0
;
index
<
routeModules
.
length
;
index
++
)
{
const
modules
:
AppRouteModule
[]
=
cloneDeep
(
routeModules
);
const
routeModule
=
routeModules
[
index
];
for
(
let
index
=
0
;
index
<
modules
.
length
;
index
++
)
{
const
routeModule
=
modules
[
index
];
if
(
!
isMultipleRoute
(
routeModule
))
{
if
(
!
isMultipleRoute
(
routeModule
))
{
continue
;
continue
;
}
}
promoteRouteLevel
(
routeModule
);
promoteRouteLevel
(
routeModule
);
}
}
return
modules
;
}
}
// Routing level upgrade
// Routing level upgrade
function
promoteRouteLevel
(
routeModule
:
AppRouteModule
)
{
function
promoteRouteLevel
(
routeModule
:
AppRouteModule
)
{
// Use vue-router to splice menus
// Use vue-router to splice menus
let
router
:
Router
|
null
=
createRouter
({
let
router
:
Router
|
null
=
createRouter
({
routes
:
[
routeModule
as
any
],
routes
:
[
(
routeModule
as
unknown
)
as
RouteRecordNormalized
],
history
:
createWebHashHistory
(),
history
:
createWebHashHistory
(),
});
});
const
routes
=
router
.
getRoutes
();
const
routes
=
router
.
getRoutes
();
const
children
=
cloneDeep
(
routeModule
.
children
);
addToChildren
(
routes
,
routeModule
.
children
||
[],
routeModule
);
addToChildren
(
routes
,
children
||
[],
routeModule
);
router
=
null
;
router
=
null
;
routeModule
.
children
=
routeModule
.
children
?.
filter
((
item
)
=>
!
item
.
children
?.
length
);
routeModule
.
children
=
routeModule
.
children
?.
filter
((
item
)
=>
!
item
.
children
?.
length
);
...
@@ -114,12 +115,15 @@ function addToChildren(
...
@@ -114,12 +115,15 @@ function addToChildren(
for
(
let
index
=
0
;
index
<
children
.
length
;
index
++
)
{
for
(
let
index
=
0
;
index
<
children
.
length
;
index
++
)
{
const
child
=
children
[
index
];
const
child
=
children
[
index
];
const
route
=
routes
.
find
((
item
)
=>
item
.
name
===
child
.
name
);
const
route
=
routes
.
find
((
item
)
=>
item
.
name
===
child
.
name
);
if
(
route
)
{
if
(
!
route
)
{
routeModule
.
children
=
routeModule
.
children
||
[];
continue
;
routeModule
.
children
?.
push
(
route
as
any
);
}
if
(
child
.
children
?.
length
)
{
routeModule
.
children
=
routeModule
.
children
||
[];
addToChildren
(
routes
,
child
.
children
,
routeModule
);
if
(
!
routeModule
.
children
.
find
((
item
)
=>
item
.
name
===
route
.
name
))
{
}
routeModule
.
children
?.
push
((
route
as
unknown
)
as
AppRouteModule
);
}
if
(
child
.
children
?.
length
)
{
addToChildren
(
routes
,
child
.
children
,
routeModule
);
}
}
}
}
}
}
...
...
src/router/menus/index.ts
View file @
e2cc5af9
...
@@ -45,6 +45,7 @@ async function getAsyncMenus() {
...
@@ -45,6 +45,7 @@ async function getAsyncMenus() {
export
const
getMenus
=
async
():
Promise
<
Menu
[]
>
=>
{
export
const
getMenus
=
async
():
Promise
<
Menu
[]
>
=>
{
const
menus
=
await
getAsyncMenus
();
const
menus
=
await
getAsyncMenus
();
const
routes
=
router
.
getRoutes
();
const
routes
=
router
.
getRoutes
();
return
!
isBackMode
()
?
filter
(
menus
,
basicFilter
(
routes
))
:
menus
;
return
!
isBackMode
()
?
filter
(
menus
,
basicFilter
(
routes
))
:
menus
;
};
};
...
...
src/router/routes/index.ts
View file @
e2cc5af9
...
@@ -5,7 +5,6 @@ import { PAGE_NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '/@/router/routes/basic';
...
@@ -5,7 +5,6 @@ import { PAGE_NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '/@/router/routes/basic';
import
{
mainOutRoutes
}
from
'
./mainOut
'
;
import
{
mainOutRoutes
}
from
'
./mainOut
'
;
import
{
PageEnum
}
from
'
/@/enums/pageEnum
'
;
import
{
PageEnum
}
from
'
/@/enums/pageEnum
'
;
import
{
t
}
from
'
/@/hooks/web/useI18n
'
;
import
{
t
}
from
'
/@/hooks/web/useI18n
'
;
import
{
flatRoutes
}
from
'
/@/router/helper/routeHelper
'
;
const
modules
=
import
.
meta
.
globEager
(
'
./modules/**/*.ts
'
);
const
modules
=
import
.
meta
.
globEager
(
'
./modules/**/*.ts
'
);
...
@@ -17,9 +16,6 @@ Object.keys(modules).forEach((key) => {
...
@@ -17,9 +16,6 @@ Object.keys(modules).forEach((key) => {
routeModuleList
.
push
(...
modList
);
routeModuleList
.
push
(...
modList
);
});
});
// Multi-level routing conversion
flatRoutes
(
routeModuleList
);
export
const
asyncRoutes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeModuleList
];
export
const
asyncRoutes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeModuleList
];
export
const
RootRoute
:
AppRouteRecordRaw
=
{
export
const
RootRoute
:
AppRouteRecordRaw
=
{
...
...
src/store/modules/permission.ts
View file @
e2cc5af9
...
@@ -15,7 +15,7 @@ import { toRaw } from 'vue';
...
@@ -15,7 +15,7 @@ import { toRaw } from 'vue';
import
{
getMenuListById
}
from
'
/@/api/sys/menu
'
;
import
{
getMenuListById
}
from
'
/@/api/sys/menu
'
;
import
{
getPermCodeByUserId
}
from
'
/@/api/sys/user
'
;
import
{
getPermCodeByUserId
}
from
'
/@/api/sys/user
'
;
import
{
transformObjToRoute
,
flatRoutes
}
from
'
/@/router/helper/routeHelper
'
;
import
{
transformObjToRoute
,
flat
MultiLevel
Routes
}
from
'
/@/router/helper/routeHelper
'
;
import
{
transformRouteToMenu
}
from
'
/@/router/helper/menuHelper
'
;
import
{
transformRouteToMenu
}
from
'
/@/router/helper/menuHelper
'
;
import
{
useMessage
}
from
'
/@/hooks/web/useMessage
'
;
import
{
useMessage
}
from
'
/@/hooks/web/useMessage
'
;
...
@@ -99,12 +99,16 @@ class Permission extends VuexModule {
...
@@ -99,12 +99,16 @@ class Permission extends VuexModule {
// role permissions
// role permissions
if
(
permissionMode
===
PermissionModeEnum
.
ROLE
)
{
if
(
permissionMode
===
PermissionModeEnum
.
ROLE
)
{
routes
=
filter
(
asyncRoutes
,
(
route
)
=>
{
const
routeFilter
=
(
route
)
=>
{
const
{
meta
}
=
route
as
AppRouteRecordRaw
;
const
{
meta
}
=
route
as
AppRouteRecordRaw
;
const
{
roles
}
=
meta
||
{};
const
{
roles
}
=
meta
||
{};
if
(
!
roles
)
return
true
;
if
(
!
roles
)
return
true
;
return
roleList
.
some
((
role
)
=>
roles
.
includes
(
role
));
return
roleList
.
some
((
role
)
=>
roles
.
includes
(
role
));
});
};
routes
=
filter
(
asyncRoutes
,
routeFilter
);
routes
=
routes
.
filter
(
routeFilter
);
// Convert multi-level routing to level 2 routing
routes
=
flatMultiLevelRoutes
(
routes
);
// If you are sure that you do not need to do background dynamic permissions, please comment the entire judgment below
// If you are sure that you do not need to do background dynamic permissions, please comment the entire judgment below
}
else
if
(
permissionMode
===
PermissionModeEnum
.
BACK
)
{
}
else
if
(
permissionMode
===
PermissionModeEnum
.
BACK
)
{
createMessage
.
loading
({
createMessage
.
loading
({
...
@@ -131,7 +135,7 @@ class Permission extends VuexModule {
...
@@ -131,7 +135,7 @@ class Permission extends VuexModule {
const
backMenuList
=
transformRouteToMenu
(
routeList
);
const
backMenuList
=
transformRouteToMenu
(
routeList
);
this
.
commitBackMenuListState
(
backMenuList
);
this
.
commitBackMenuListState
(
backMenuList
);
flat
Routes
(
routeList
);
routeList
=
flatMultiLevel
Routes
(
routeList
);
routes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeList
];
routes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeList
];
}
}
routes
.
push
(
ERROR_LOG_ROUTE
);
routes
.
push
(
ERROR_LOG_ROUTE
);
...
...
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