perms.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <script setup lang="ts">
  2. import { hasPerms } from "@/utils/auth";
  3. import { useUserStoreHook } from "@/store/modules/user";
  4. const { permissions } = useUserStoreHook();
  5. defineOptions({
  6. name: "PermissionButtonLogin"
  7. });
  8. </script>
  9. <template>
  10. <div>
  11. <p class="mb-2!">当前拥有的code列表:{{ permissions }}</p>
  12. <p v-show="permissions?.[0] === '*:*:*'" class="mb-2!">
  13. *:*:* 代表拥有全部按钮级别权限
  14. </p>
  15. <el-card shadow="never" class="mb-2">
  16. <template #header>
  17. <div class="card-header">组件方式判断权限</div>
  18. <el-link
  19. class="mt-2"
  20. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/permission/button/perms.vue"
  21. target="_blank"
  22. >
  23. 代码位置 src/views/permission/button/perms.vue
  24. </el-link>
  25. </template>
  26. <el-space wrap>
  27. <Perms value="permission:btn:add">
  28. <el-button plain type="warning">
  29. 拥有code:'permission:btn:add' 权限可见
  30. </el-button>
  31. </Perms>
  32. <Perms :value="['permission:btn:edit']">
  33. <el-button plain type="primary">
  34. 拥有code:['permission:btn:edit'] 权限可见
  35. </el-button>
  36. </Perms>
  37. <Perms
  38. :value="[
  39. 'permission:btn:add',
  40. 'permission:btn:edit',
  41. 'permission:btn:delete'
  42. ]"
  43. >
  44. <el-button plain type="danger">
  45. 拥有code:['permission:btn:add', 'permission:btn:edit',
  46. 'permission:btn:delete'] 权限可见
  47. </el-button>
  48. </Perms>
  49. </el-space>
  50. </el-card>
  51. <el-card shadow="never" class="mb-2">
  52. <template #header>
  53. <div class="card-header">函数方式判断权限</div>
  54. </template>
  55. <el-space wrap>
  56. <el-button v-if="hasPerms('permission:btn:add')" plain type="warning">
  57. 拥有code:'permission:btn:add' 权限可见
  58. </el-button>
  59. <el-button
  60. v-if="hasPerms(['permission:btn:edit'])"
  61. plain
  62. type="primary"
  63. >
  64. 拥有code:['permission:btn:edit'] 权限可见
  65. </el-button>
  66. <el-button
  67. v-if="
  68. hasPerms([
  69. 'permission:btn:add',
  70. 'permission:btn:edit',
  71. 'permission:btn:delete'
  72. ])
  73. "
  74. plain
  75. type="danger"
  76. >
  77. 拥有code:['permission:btn:add', 'permission:btn:edit',
  78. 'permission:btn:delete'] 权限可见
  79. </el-button>
  80. </el-space>
  81. </el-card>
  82. <el-card shadow="never">
  83. <template #header>
  84. <div class="card-header">
  85. 指令方式判断权限(该方式不能动态修改权限)
  86. </div>
  87. </template>
  88. <el-space wrap>
  89. <el-button v-perms="'permission:btn:add'" plain type="warning">
  90. 拥有code:'permission:btn:add' 权限可见
  91. </el-button>
  92. <el-button v-perms="['permission:btn:edit']" plain type="primary">
  93. 拥有code:['permission:btn:edit'] 权限可见
  94. </el-button>
  95. <el-button
  96. v-perms="[
  97. 'permission:btn:add',
  98. 'permission:btn:edit',
  99. 'permission:btn:delete'
  100. ]"
  101. plain
  102. type="danger"
  103. >
  104. 拥有code:['permission:btn:add', 'permission:btn:edit',
  105. 'permission:btn:delete'] 权限可见
  106. </el-button>
  107. </el-space>
  108. </el-card>
  109. </div>
  110. </template>