Kaynağa Gözat

store getters - `hasPermissions` UNION `has-Permi` directive

hare8999@163.com 2 yıl önce
ebeveyn
işleme
f50575c0e5
2 değiştirilmiş dosya ile 35 ekleme ve 29 silme
  1. 18 28
      src/directive/permission/hasPermi.js
  2. 17 1
      src/store/getters.js

+ 18 - 28
src/directive/permission/hasPermi.js

@@ -1,28 +1,18 @@
- /**
- * 操作权限处理
- * Copyright (c) 2019 ruoyi
- */
- 
-import store from '@/store'
-
-export default {
-  inserted(el, binding, vnode) {
-    const { value } = binding
-    const all_permission = "*:*:*";
-    const permissions = store.getters && store.getters.permissions
-
-    if (value && value instanceof Array && value.length > 0) {
-      const permissionFlag = value
-
-      const hasPermissions = permissions.some(permission => {
-        return all_permission === permission || permissionFlag.includes(permission)
-      })
-
-      if (!hasPermissions) {
-        el.parentNode && el.parentNode.removeChild(el)
-      }
-    } else {
-      throw new Error(`请设置操作权限标签值`)
-    }
-  }
-}
+/**
+ * 操作权限处理
+ * Copyright (c) 2019 ruoyi
+ */
+
+import store from '@/store'
+
+export default {
+  inserted(el, binding, vnode) {
+    const { value } = binding
+    const func = store.getters && store.getters.hasPermissions
+    
+    const hasPermissions = func(value)
+    if (!hasPermissions) {
+      el.parentNode && el.parentNode.removeChild(el)
+    }
+  }
+}

+ 17 - 1
src/store/getters.js

@@ -1,3 +1,5 @@
+import store from '@/store/index'
+
 const getters = {
   sidebar: state => state.app.sidebar,
   size: state => state.app.size,
@@ -31,6 +33,20 @@ const getters = {
   defaultRoutes: state => state.permission.defaultRoutes,
   sidebarRouters: state => state.permission.sidebarRouters,
   isWideScreen: state => state.permission.isWideScreen,
-  studentParams: state => state.settings.studentParams
+  studentParams: state => state.settings.studentParams,
+
+  hasPermissions: (state, getters) => {
+    return function(value) {
+      const all_permission = '*:*:*'
+      const permissions = getters.permissions
+
+      if (value && value instanceof Array && value.length > 0) {
+        const permissionFlag = value
+        return permissions.some(permission => all_permission === permission || permissionFlag.includes(permission))
+      } else {
+        throw new Error(`请设置操作权限标签值`)
+      }
+    }
+  }
 }
 export default getters