index.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <script setup lang="ts">
  2. import { initRouter } from "@/router/utils";
  3. import { storageLocal } from "@pureadmin/utils";
  4. import { type CSSProperties, ref, computed } from "vue";
  5. import { useUserStoreHook } from "@/store/modules/user";
  6. import { usePermissionStoreHook } from "@/store/modules/permission";
  7. defineOptions({
  8. name: "PermissionPage"
  9. });
  10. const elStyle = computed((): CSSProperties => {
  11. return {
  12. width: "85vw",
  13. justifyContent: "start"
  14. };
  15. });
  16. const username = ref(useUserStoreHook()?.username);
  17. const options = [
  18. {
  19. value: "admin",
  20. label: "管理员角色"
  21. },
  22. {
  23. value: "common",
  24. label: "普通角色"
  25. }
  26. ];
  27. function onChange() {
  28. useUserStoreHook()
  29. .loginByUsername({ username: username.value, password: "admin123" })
  30. .then(res => {
  31. if (res.success) {
  32. storageLocal().removeItem("async-routes");
  33. usePermissionStoreHook().clearAllCachePage();
  34. initRouter();
  35. }
  36. });
  37. }
  38. </script>
  39. <template>
  40. <div>
  41. <p class="mb-2!">
  42. 模拟后台根据不同角色返回对应路由,观察左侧菜单变化(管理员角色可查看系统管理菜单、普通角色不可查看系统管理菜单)
  43. </p>
  44. <el-card shadow="never" :style="elStyle">
  45. <template #header>
  46. <div class="card-header">
  47. <span>当前角色:{{ username }}</span>
  48. </div>
  49. <el-link
  50. class="mt-2"
  51. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/permission/page/index.vue"
  52. target="_blank"
  53. >
  54. 代码位置 src/views/permission/page/index.vue
  55. </el-link>
  56. </template>
  57. <el-select v-model="username" class="w-[160px]!" @change="onChange">
  58. <el-option
  59. v-for="item in options"
  60. :key="item.value"
  61. :label="item.label"
  62. :value="item.value"
  63. />
  64. </el-select>
  65. </el-card>
  66. </div>
  67. </template>