Role.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <!--
  2. Description: 权限控制
  3. Author: BaiQi
  4. Created Date: 2024-6-30
  5. -->
  6. <template>
  7. <div class="home-container">
  8. <router-view v-if="isRouterAlive"></router-view>
  9. </div>
  10. </template>
  11. <script lang="ts" setup>
  12. import './role.scss'
  13. import {useStore} from "@/store";
  14. import emitter from "@/utils/emitter";
  15. import {nextTick, onUnmounted, provide, ref} from "vue";
  16. import router from "@/router";
  17. const store = useStore()
  18. const role:'teachers' | 'student' = store.user.role === 'STUDENT' ? 'student':'teachers';
  19. // 整体用于刷新数据
  20. const isRouterAlive = ref(true);
  21. const reload = ()=>{
  22. isRouterAlive.value = false;
  23. // console.log("刷新前")
  24. nextTick(()=>{
  25. isRouterAlive.value = true;
  26. // console.log("刷新后")
  27. });
  28. };
  29. provide("reload",reload);
  30. /*
  31. 路由变换
  32. */
  33. const changePage = (value: string) => {
  34. // console.log(role)
  35. if(role == 'student'){
  36. // console.log("学生")
  37. switch (value){
  38. case 'CourseSquare':
  39. router.push("/home/courseSquare");
  40. break;
  41. case 'MyCourse':
  42. router.push("/home/myCourse");
  43. break;
  44. case 'MyWork':
  45. router.push("/home/myHomework");
  46. break;
  47. }
  48. // changePage.value = value
  49. } else if(role == 'teachers'){
  50. switch (value){
  51. case 'CourseSquare':
  52. router.push("/home/courseSquare");
  53. break;
  54. case 'MyCourse':
  55. router.push("/home/myCourse");
  56. break;
  57. case 'MyWork':
  58. router.push("/home/myCorrect/course");
  59. break;
  60. }
  61. }
  62. }
  63. //绑定路由变更事件
  64. emitter.on("change-page", (value:string)=> {
  65. changePage(value)
  66. })
  67. //解绑事件
  68. onUnmounted(()=>{
  69. emitter.off('change-page')
  70. })
  71. </script>
  72. <script lang="ts">
  73. export default {
  74. name: "Role"
  75. }
  76. </script>