index.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <template>
  2. <div class="slide">
  3. <el-menu
  4. :default-active="(router.currentRoute.value.name as string)"
  5. @select="(name: string) => router.push({ name })"
  6. style="border-right: none"
  7. >
  8. <sub-menu
  9. v-for="route in routes"
  10. :meta="route.meta"
  11. v-show="!route.meta.hidden"
  12. :name="(route.name as string)"
  13. :key="route.name"
  14. />
  15. </el-menu>
  16. </div>
  17. </template>
  18. <script setup lang="ts">
  19. import { computed } from "vue";
  20. import subMenu from "./submenu.vue";
  21. import { user } from "@/store/user";
  22. import { router, findRoute } from "@/router";
  23. //@TODO
  24. const isSuper = computed(
  25. () =>
  26. user.value.roles.filter((item) => item.roleKey === "super_admin").length > 0
  27. );
  28. const normal_name = [
  29. "scene",
  30. "relics",
  31. "device",
  32. "organization",
  33. "users",
  34. "no-persession",
  35. ];
  36. const super_names = [
  37. "scene",
  38. "relics",
  39. "device",
  40. "organization",
  41. "users",
  42. "no-persession",
  43. ];
  44. console.log("isSuper", isSuper.value);
  45. const routes = isSuper.value
  46. ? super_names.map((name) => findRoute(name)!)
  47. : normal_name.map((name) => findRoute(name)!);
  48. </script>
  49. <style lang="scss" scoped>
  50. .slide {
  51. background: #ffffff;
  52. }
  53. </style>