tj
2025-06-05 bba272999cc546f65781bf3d20245a3f819af67f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import store from '@/store'
 
/**
 * 判断是否允许访问该DOM
 * @param {*} permission 权限
 * @param {*} user 当前用户实例
 * @param {*} permissions 当前管理员所在分组权限集
 */
function isAllowed(permission, user, permissions) {
  if (user.admin) return true
 
  if (typeof permission === 'string') {
    return permissions.includes(permission)
  }
  if (permission instanceof Array) {
    return permission.some(auth => permissions.indexOf(auth) >= 0)
  }
  return false
}
 
export default {
  beforeMount(el, binding) {
    let type
    let permission
    const element = el
 
    if (Object.prototype.toString.call(binding.value) === '[object Object]') {
      ;({ permission } = binding.value);
      ({ type } = binding.value)
    } else {
      permission = binding.value
    }
    const isAllow = isAllowed(permission, store.state.user || {}, store.state.permissions)
    if (!isAllow && permission) {
      if (type) {
        element.disabled = true
        element.style.opacity = 0.4
        element.style.cursor = 'not-allowed'
      } else {
        element.style.display = 'none'
      }
    }
  },
}