Skip to content

Commit f384b79

Browse files
committed
优化 permission 相关的注释
1 parent d98b829 commit f384b79

File tree

8 files changed

+27
-23
lines changed

8 files changed

+27
-23
lines changed

src/components/TopNav/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export default {
6767
},
6868
// 设置子路由
6969
childrenMenus() {
70-
var childrenMenus = [];
70+
const childrenMenus = [];
7171
this.routers.map((router) => {
7272
for (var item in router.children) {
7373
if (router.children[item].parentPath === undefined) {

src/directive/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import dialogDragWidth from './dialog/dragWidth'
55
import dialogDragHeight from './dialog/dragHeight'
66
import clipboard from './module/clipboard'
77

8+
// Vue:自定义指令:https://v2.cn.vuejs.org/v2/guide/custom-directive.html
89
const install = function(Vue) {
910
Vue.directive('hasRole', hasRole)
1011
Vue.directive('hasPermi', hasPermi)

src/directive/permission/hasPermi.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,21 @@
22
* 操作权限处理
33
* Copyright (c) 2019 ruoyi
44
*/
5-
65
import store from '@/store'
76

87
export default {
98
inserted(el, binding, vnode) {
109
const { value } = binding
11-
const all_permission = "*:*:*";
12-
const permissions = store.getters && store.getters.permissions
10+
const all_permission = "*:*:*"; // 全部权限
11+
const permissions = store.getters && store.getters.permissions // 用户拥有的权限标识的数组
1312

1413
if (value && value instanceof Array && value.length > 0) {
14+
// 判断是否有权限
1515
const permissionFlag = value
16-
1716
const hasPermissions = permissions.some(permission => {
1817
return all_permission === permission || permissionFlag.includes(permission)
1918
})
20-
19+
// 如果没有权限,则移除元素
2120
if (!hasPermissions) {
2221
el.parentNode && el.parentNode.removeChild(el)
2322
}

src/directive/permission/hasRole.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@
22
* 角色权限处理
33
* Copyright (c) 2019 ruoyi
44
*/
5-
5+
66
import store from '@/store'
77

88
export default {
99
inserted(el, binding, vnode) {
1010
const { value } = binding
1111
const super_admin = "admin";
12-
const roles = store.getters && store.getters.roles
12+
const roles = store.getters && store.getters.roles // 用户拥有的角色标识的数组
1313

1414
if (value && value instanceof Array && value.length > 0) {
15+
// 判断是否有角色
1516
const roleFlag = value
16-
1717
const hasRole = roles.some(role => {
1818
return super_admin === role || roleFlag.includes(role)
1919
})
20-
20+
// 如果没有角色,则移除元素
2121
if (!hasRole) {
2222
el.parentNode && el.parentNode.removeChild(el)
2323
}

src/layout/components/Sidebar/index.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
:collapse-transition="false"
1313
mode="vertical"
1414
>
15+
<!-- 根据 sidebarRouters 路由,生成菜单 -->
1516
<sidebar-item
1617
v-for="(route, index) in sidebarRouters"
1718
:key="route.path + index"

src/permission.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ router.beforeEach((to, from, next) => {
2424
isRelogin.show = true
2525
// 获取字典数据 add by 芋艿
2626
store.dispatch('dict/loadDictDatas')
27-
// 判断当前用户是否已拉取完user_info信息
27+
// 判断当前用户是否已拉取完 user_info 信息
2828
store.dispatch('GetInfo').then(() => {
2929
isRelogin.show = false
3030
store.dispatch('GenerateRoutes').then(accessRoutes => {
31-
// 根据roles权限生成可访问的路由表
31+
// 根据 roles 权限生成可访问的路由表
3232
router.addRoutes(accessRoutes) // 动态添加可访问路由表
3333
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
3434
})

src/router/index.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,20 @@ Vue.use(Router)
88
/**
99
* Note: 路由配置项
1010
*
11-
* hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
11+
* hidden: true // 【重要】当设置 true 的时候该路由不会再侧边栏出现 如 401,login 等页面,或者如一些编辑页面 /edit/1
1212
* alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
1313
* // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
1414
* // 若你想不管路由下面的 children 声明的个数都显示你的根路由
1515
* // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
16+
* path: '/login', // 【重要】访问的 URL 路径
17+
* component: Layout, // 【重要】对应的组件;也可以是 (resolve) => require(['@/views/login'], resolve),
1618
* redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
17-
* name:'router-name' // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
19+
* name:'router-name' // 【重要】设定路由的名字,一定要填写不然使用 <keep-alive> 时会出现各种问题
1820
* meta : {
19-
noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
20-
title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
21-
icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg
22-
breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示
21+
noCache: true // 【重要】如果设置为 true,则不会被 <keep-alive> 缓存(默认 false)
22+
title: 'title' // 【重要】设置该路由在侧边栏和面包屑中展示的名字
23+
icon: 'svg-name' // 【重要】设置该路由的图标,对应路径 src/assets/icons/svg
24+
breadcrumb: false // 如果设置为 false,则不会在 breadcrumb 面包屑中显示
2325
activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
2426
}
2527
*/

src/store/modules/permission.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ const permission = {
88
state: {
99
routes: [],
1010
addRoutes: [],
11-
sidebarRouters: []
11+
sidebarRouters: [], // 左侧边菜单的路由,被 Sidebar/index.vue 使用
12+
topbarRouters: [], // 顶部菜单的路由,被 TopNav/index.vue 使用
1213
},
1314
mutations: {
1415
SET_ROUTES: (state, routes) => {
@@ -29,10 +30,10 @@ const permission = {
2930
// 生成路由
3031
GenerateRoutes({ commit }) {
3132
return new Promise(resolve => {
32-
// 向后端请求路由数据
33+
// 向后端请求路由数据(菜单)
3334
getRouters().then(res => {
34-
const sdata = JSON.parse(JSON.stringify(res.data))
35-
const rdata = JSON.parse(JSON.stringify(res.data))
35+
const sdata = JSON.parse(JSON.stringify(res.data)) // 【重要】用于菜单中的数据
36+
const rdata = JSON.parse(JSON.stringify(res.data)) // 用于最后添加到 Router 中的数据
3637
const sidebarRoutes = filterAsyncRouter(sdata)
3738
const rewriteRoutes = filterAsyncRouter(rdata, false, true)
3839
rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true })
@@ -57,7 +58,7 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
5758
icon: route.icon,
5859
noCache: !route.keepAlive,
5960
}
60-
// 路由地址转首字母大写驼峰,作为路由名称,适配keepAlive
61+
// 路由地址转首字母大写驼峰,作为路由名称,适配 keepAlive
6162
route.name = toCamelCase(route.path, true)
6263
route.hidden = !route.visible
6364
// 处理 component 属性

0 commit comments

Comments
 (0)