浏览代码

Merge pull request #110 from AClumsy/patch-1

fix: $route.meta.permission to Array type, invalid v-action management
言肆 6 年之前
父节点
当前提交
9a83387851
共有 1 个文件被更改,包括 6 次插入7 次删除
  1. 6 7
      src/permission.js

+ 6 - 7
src/permission.js

@@ -84,17 +84,16 @@ const action = Vue.directive('action', {
   bind: function (el, binding, vnode) {
   bind: function (el, binding, vnode) {
     const actionName = binding.arg
     const actionName = binding.arg
     const roles = store.getters.roles
     const roles = store.getters.roles
-    const permissionId = vnode.context.$route.meta.permission
-    let actions = []
+    const elVal = vnode.context.$route.meta.permission
+    const permissionId = elVal instanceof String && [elVal] || elVal
     roles.permissions.forEach(p => {
     roles.permissions.forEach(p => {
-      if (p.permissionId !== permissionId) {
+      if (!permissionId.includes(p.permissionId)) {
         return
         return
       }
       }
-      actions = p.actionList
+      if (p.actionList && !p.actionList.includes(actionName)) {
+        el.parentNode && el.parentNode.removeChild(el) || (el.style.display = 'none')
+      }
     })
     })
-    if (actions.indexOf(actionName) < 0) {
-      el.parentNode && el.parentNode.removeChild(el) || (el.style.display = 'none')
-    }
   }
   }
 })
 })