一、按钮功能权限

1.通过控制按钮显示隐藏来控制功能权限 — vue自定义指令

2.编写自定义指令 v-permission

钩子函数中,接受两个参数:

(1)el 绑定的节点

获取el的父节点来删除该节点

(2)binding 传递的数据

通过binding.value获取传递的数据

  1. import store from '@/store'
  2. function checkPermission (el, binding) {
  3. // 获取绑定的值,此处为权限
  4. const { value } = binding
  5. // 获取所有的功能指令
  6. const points = store.getters.userInfo.permission.points
  7. // 当传入的指令集为数组时
  8. if (value && value instanceof Array) {
  9. // 匹配对应的指令
  10. const hasPermission = points.some((point) => {
  11. return value.includes(point)
  12. })
  13. // 如果无法匹配,则表示当前用户无该指令,那么删除对应的功能按钮
  14. if (!hasPermission) {
  15. el.parentNode && el.parentNode.removeChild(el)
  16. }
  17. } else {
  18. // eslint-disabled-next-line
  19. throw new Error('v-permission value is ["admin","editor"]')
  20. }
  21. }
  22. export default {
  23. // 在绑定元素的父组件被挂载后调用
  24. mounted (el, binding) {
  25. checkPermission(el, binding)
  26. },
  27. // 在包含组件的 VNode 及其子组件的 VNode 更新后调用
  28. update (el, binding) {
  29. checkPermission(el, binding)
  30. }
  31. }