Btn.vue 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <PageWrapper contentBackground title="按钮权限控制" contentClass="p-4">
  3. <Alert message="刷新后会还原" show-icon />
  4. <CurrentPermissionMode />
  5. <p>
  6. 当前拥有的code列表: <a> {{ permissionStore.getPermCodeList }} </a>
  7. </p>
  8. <Divider />
  9. <Alert class="mt-4" type="info" message="点击后请查看按钮变化" show-icon />
  10. <Divider />
  11. <a-button type="primary" class="mr-2" @click="changePermissionCode('2')">
  12. 点击切换按钮权限(用户id为2)
  13. </a-button>
  14. <a-button type="primary" @click="changePermissionCode('1')">
  15. 点击切换按钮权限(用户id为1,默认)
  16. </a-button>
  17. <Divider>组件方式判断权限</Divider>
  18. <Authority :value="'1000'">
  19. <a-button type="primary" class="mx-4"> 拥有code ['1000']权限可见 </a-button>
  20. </Authority>
  21. <Authority :value="'2000'">
  22. <a-button color="success" class="mx-4"> 拥有code ['2000']权限可见 </a-button>
  23. </Authority>
  24. <Authority :value="['1000', '2000']">
  25. <a-button color="error" class="mx-4"> 拥有code ['1000','2000']角色权限可见 </a-button>
  26. </Authority>
  27. <Divider>函数方式方式判断权限</Divider>
  28. <a-button v-if="hasPermission('1000')" type="primary" class="mx-4">
  29. 拥有code ['1000']权限可见
  30. </a-button>
  31. <a-button v-if="hasPermission('2000')" color="success" class="mx-4">
  32. 拥有code ['2000']权限可见
  33. </a-button>
  34. <a-button v-if="hasPermission(['1000', '2000'])" color="error" class="mx-4">
  35. 拥有code ['1000','2000']角色权限可见
  36. </a-button>
  37. <Divider>指令方式方式判断权限(该方式不能动态修改权限.)</Divider>
  38. <a-button v-auth="'1000'" type="primary" class="mx-4"> 拥有code ['1000']权限可见 </a-button>
  39. <a-button v-auth="'2000'" color="success" class="mx-4"> 拥有code ['2000']权限可见 </a-button>
  40. <a-button v-auth="['1000', '2000']" color="error" class="mx-4">
  41. 拥有code ['1000','2000']角色权限可见
  42. </a-button>
  43. </PageWrapper>
  44. </template>
  45. <script lang="ts">
  46. import { defineComponent } from 'vue';
  47. import { Alert, Divider } from 'ant-design-vue';
  48. import CurrentPermissionMode from '../CurrentPermissionMode.vue';
  49. import { usePermission } from '/@/hooks/web/usePermission';
  50. import { Authority } from '/@/components/Authority';
  51. import { usePermissionStore } from '/@/store/modules/permission';
  52. import { PermissionModeEnum } from '/@/enums/appEnum';
  53. import { PageWrapper } from '/@/components/Page';
  54. export default defineComponent({
  55. components: { Alert, PageWrapper, CurrentPermissionMode, Divider, Authority },
  56. setup() {
  57. const { hasPermission } = usePermission();
  58. const permissionStore = usePermissionStore();
  59. function changePermissionCode(userId: string) {
  60. permissionStore.changePermissionCode(userId);
  61. }
  62. return {
  63. hasPermission,
  64. permissionStore,
  65. changePermissionCode,
  66. PermissionModeEnum,
  67. };
  68. },
  69. });
  70. </script>
  71. <style lang="less" scoped>
  72. .demo {
  73. background: @component-background;
  74. }
  75. </style>