index.vue 867 B

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