Bladeren bron

添加权限控制菜单显隐的逻辑

lm 1 maand geleden
bovenliggende
commit
355a1745ee
3 gewijzigde bestanden met toevoegingen van 34 en 6 verwijderingen
  1. 8 1
      src/layout/index.vue
  2. 19 3
      src/store/index.ts
  3. 7 2
      src/views/login/login.vue

+ 8 - 1
src/layout/index.vue

@@ -24,7 +24,14 @@ const menuList =  computed(()=>{
 
 
 const horizontalNavList = computed(()=>{
-  return store.state.horizontalMenuItems
+  let user= JSON.parse(localStorage.getItem('userInfo') || '{}')
+  // 学校管理员
+  if(user?.roleCodes?.includes('SCHOOL_MANAGER')){
+      return store.state.managerHorizontalMenuItems
+  // 普通教师
+  }else{
+    return store.state.ordinaryPeopleHorizontalMenuItems
+  }
 })
 
 </script>

+ 19 - 3
src/store/index.ts

@@ -37,7 +37,8 @@ interface HorizontalMenuItem {
 // 定义 RootState 接口(可扩展)
 interface RootState {
   count: number,
-  horizontalMenuItems:any[]
+  ordinaryPeopleHorizontalMenuItems:any[],
+  managerHorizontalMenuItems:any[],
   evaluationManageStepData:HorizontalMenuItem
 
 }
@@ -50,7 +51,8 @@ const route = useRoute()
 const store = createStore<RootState>({
   state: () => ({
     count: 0,
-    horizontalMenuItems:[
+    // 管理员 评教评学 的访问菜单
+    managerHorizontalMenuItems:[
       {
         title:'问卷管理',
         route:`/main`,
@@ -77,6 +79,20 @@ const store = createStore<RootState>({
         childrenRoute:[]
       },
     ],
+
+    // 普通教师 评教评学 的访问菜单
+    ordinaryPeopleHorizontalMenuItems: [
+      {
+        title:'评价分析',
+        route:`/main/reviewAnalysis`,
+        childrenRoute:[]
+      },
+      {
+        title:'个人中心',
+        route:`/main/personalCenter`,
+        childrenRoute:[]
+      },
+    ],
     evaluationManageStepData:{}  //评价管理详情 全局数据
 
   }),
@@ -128,7 +144,7 @@ const store = createStore<RootState>({
   getters: {
     count: (state: RootState) => state.count,
     getDemo:(state)=>()=>{
-      return  state.horizontalMenuItems.map(item=>{
+      return  state.managerHorizontalMenuItems.map(item=>{
           return item
       })
     },

+ 7 - 2
src/views/login/login.vue

@@ -300,8 +300,13 @@ const SubmitLogin = async () => {
         localStorage.setItem('userInfo', JSON.stringify(userInfoRes.data))
         ElMessage.success('登录成功');
 
-        router.push('/main')
-       
+        //根据不同的角色跳转不同的页面
+        // 管理员跳转
+        if(userInfoRes.data?.roleCodes?.includes('SCHOOL_MANAGER')){
+          router.push('/main')
+        }else{
+          router.push('/main/personalCenter')
+        }
       }
     }
   }catch(err){