123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <!--
- Access control component for fine-grained access control.
- -->
- <script lang="ts">
- import type { PropType } from 'vue';
- import { defineComponent } from 'vue';
- import { RoleEnum } from '/@/enums/roleEnum';
- import { usePermission } from '/@/hooks/web/usePermission';
- import { getSlot } from '/@/utils/helper/tsxHelper';
- export default defineComponent({
- name: 'Authority',
- props: {
- /**
- * Specified role is visible
- * When the permission mode is the role mode, the value value can pass the role value.
- * When the permission mode is background, the value value can pass the code permission value
- * @default ''
- */
- value: {
- type: [Number, Array, String] as PropType<RoleEnum | RoleEnum[] | string | string[]>,
- default: '',
- },
- },
- setup(props, { slots }) {
- const { hasPermission } = usePermission();
- /**
- * Render role button
- */
- function renderAuth() {
- const { value } = props;
- if (!value) {
- return getSlot(slots);
- }
- return hasPermission(value) ? getSlot(slots) : null;
- }
- return () => {
- // Role-based value control
- return renderAuth();
- };
- },
- });
- </script>
|