Layout.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <div class="tw-h-screen tw-flex">
  3. <div class="tw-bg-white">
  4. <div class="tw-text-center tw-py-10">qm logo</div>
  5. <a-menu style="width: 240px" mode="inline" :open-keys="['sub1', 'sub2']">
  6. <a-sub-menu key="sub1">
  7. <template #icon> icon </template>
  8. <template #title>基础管理</template>
  9. <a-menu-item key="11">
  10. <router-link active-class="active-route" to="/basic/rootOrg">
  11. 顶级机构管理
  12. </router-link>
  13. </a-menu-item>
  14. <a-menu-item key="12">
  15. <router-link active-class="active-route" to="/basic/subOrg">
  16. 机构管理
  17. </router-link>
  18. </a-menu-item>
  19. <a-menu-item key="13">角色管理</a-menu-item>
  20. <a-menu-item key="14">用户管理</a-menu-item>
  21. <a-menu-item key="15">科目管理</a-menu-item>
  22. </a-sub-menu>
  23. <a-sub-menu key="sub2">
  24. <template #icon> icon </template>
  25. <template #title>项目管理</template>
  26. <a-menu-item key="21">项目列表</a-menu-item>
  27. <a-menu-item key="22">关联分析</a-menu-item>
  28. </a-sub-menu>
  29. </a-menu>
  30. </div>
  31. <div class="tw-h-screen" style="width: calc(100% - 240px)">
  32. <div
  33. class="tw-bg-white tw-flex tw-justify-between"
  34. style="border-left: 1px solid var(--app-main-bg-color)"
  35. >
  36. <div>
  37. 当前所在位置:<span class="location-teleport">{{
  38. store.currentLocation
  39. }}</span>
  40. </div>
  41. <div class="tw-flex tw-cursor-pointer">
  42. <div>{{ store.userInfo.displayName }}</div>
  43. <div @click="doLogout">退出</div>
  44. </div>
  45. </div>
  46. <router-view class="tw-m-8"></router-view>
  47. </div>
  48. </div>
  49. </template>
  50. <script setup lang="ts">
  51. import { logout } from "@/api/loginPage";
  52. import { routeLogout } from "@/router";
  53. import { useMainStore } from "@/store";
  54. const store = useMainStore();
  55. async function doLogout() {
  56. logout().then(() => routeLogout({ cause: "主动退出", redirectTo: "/" }));
  57. }
  58. </script>
  59. <style scoped>
  60. .active-route {
  61. color: #4d66fd;
  62. }
  63. </style>