index.vue 868 B

12345678910111213141516171819202122232425262728293031323334353637
  1. <script lang="ts" setup>
  2. /**
  3. * @Name: index.vue
  4. * @Description: 权限按钮
  5. * @Author: Cheney
  6. */
  7. import { ButtonProps } from 'element-plus';
  8. import { BtnPermissionStore } from '/@/plugin/permission/store.permission';
  9. const { data } = BtnPermissionStore();
  10. const attrs = useAttrs() as any;
  11. const props = defineProps<Partial<Omit<ButtonProps, ''>>>();
  12. function hasPermission(permissions: string | string[]): boolean {
  13. if (typeof permissions === 'string') {
  14. return data.includes(permissions);
  15. } else if (Array.isArray(permissions)) {
  16. return permissions.every(permission => data.includes(permission));
  17. }
  18. return false;
  19. }
  20. </script>
  21. <template>
  22. <div>
  23. <el-button v-if="attrs.permissions ? hasPermission(attrs.permissions) : true"
  24. v-bind="props">
  25. <slot></slot>
  26. </el-button>
  27. </div>
  28. </template>
  29. <style scoped>
  30. </style>