소스 검색

教师面包屑

lifanagju_citu 2 달 전
부모
커밋
bd09b18825
3개의 변경된 파일49개의 추가작업 그리고 37개의 파일을 삭제
  1. 5 5
      src/layout/teacher.vue
  2. 16 11
      src/layout/teacher/side.vue
  3. 28 21
      src/router/modules/components/recruit/teacher.js

+ 5 - 5
src/layout/teacher.vue

@@ -2,7 +2,7 @@
   <div class="parent d-flex flex-column">
     <Headers class="headers"></Headers>
     <div class="content d-flex">
-      <side class="content-sticky" v-if="!router.currentRoute.value?.meta?.hideSide"></side>
+      <side class="content-sticky" v-if="!isInWhiteList(route.path)"></side>
       <div class="content-box d-flex flex-column" :style="`width: ${ !isInWhiteList(route.path) ? 'calc(100% - 230px)' : '100%'}`">
         <div v-if="!isInWhiteList(route.path)" class="breadcrumbs_sticky">
           <div class=" d-flex align-center justify-space-between">
@@ -34,7 +34,7 @@ import side from './teacher/side.vue'
 import { useRouter, useRoute } from 'vue-router'
 import { watch, computed } from 'vue'
 import { useSystem } from '@/store/system'
-import { useUserStore } from '@/store/user'
+// import { useUserStore } from '@/store/user'; const user = useUserStore()
 
 const router = useRouter()
 const route = useRoute()
@@ -43,7 +43,8 @@ const key = computed(() => {
   return route.path + Math.random()
 })
 
-const whiteList = []
+const whiteList = [
+]
 // 查询是否在白名单内,在则不展示面包屑
 const isInWhiteList = (url)=> {
   const path = url.split('?')[0]
@@ -55,12 +56,11 @@ const isInWhiteList = (url)=> {
   return false
 }
 
-const user = useUserStore()
 watch(
   () => route.matched,
   async (val) => {
-    // getTitle(val, route.fullPath)
     system.setTeacherBreadcrumbs(val, route.fullPath)
+    // await user.getSchoolInfo(false)
   },
   { immediate: true },
   { deep: true }

+ 16 - 11
src/layout/teacher/side.vue

@@ -1,10 +1,10 @@
 <template>
   <div>
     <v-list class="side-box" color="primary">
-      <template v-for="(item, index) in list">
+      <template v-for="item in list">
         <template v-if="!item.children.length">
           <v-list-item
-            :key="`${item.name}_${index}`"
+            :key="item.key"
             active-class="active"
             color="primary"
             :href="item.path"
@@ -51,26 +51,31 @@ const list = computed(() => {
   return getList(routeList)
 })
 
-// console.log(import.meta.env.VITE_NODE_ENV, '当前环境变量============')
-
-const getList = (arr, obj = []) => {
+const MENU_TYPE = {
+  CATALOGUE: 1,
+  MENU: 2,
+  BUTTON: 3
+}
 
-  arr.forEach(element => {
+const getList = (arr, obj = [], root = '') => {
+  arr.forEach((element, index) => {
     if (element.show) return
     let data = {}
+    const path = root + element.path
     data = {
-      title: element?.meta?.title,
+      key: element?.name + index,
+      title: element?.name,
       enName: element?.meta?.enName,
-      icon: element?.meta?.icon,
-      name: element?.name,
-      path: element?.path,
+      icon: element?.icon,
+      path: MENU_TYPE.CATALOGUE === element.type ? path + '/index' : path,
       children: []
     }
     if (element?.children) {
-      getList(element.children, data.children)
+      getList(element.children, data.children, path + '/')
     }
     obj.push(data)
   })
+
   return obj
 }
 

+ 28 - 21
src/router/modules/components/recruit/teacher.js

@@ -10,17 +10,16 @@ const teacher = [
   {
     path: '/recruit/teacher/studentList',
     component: Layout,
-    name: 'studentList',
+    name: '学生列表',
+    icon: 'mdi-account-school-outline',
     meta: {
-      title: '学生列表',
-      enName: 'Student List',
-      icon: 'mdi-account-school-outline'
+      enName: 'Student List'
     },
     children: [
       {
         path: 'index',
+        name: '学生列表',
         meta: {
-          title: '学生列表',
           enName: 'Student List',
         },
         show: true,
@@ -29,8 +28,8 @@ const teacher = [
       {
         path: 'detail/:id',
         show: true,
+        name: '学生详情',
         meta: {
-          title: '学生详情',
           enName: 'Student Details'
         },
         component: () => import('@/views/recruit/teacher/studentList/studentDetails.vue')
@@ -40,17 +39,16 @@ const teacher = [
   {
     path: '/recruit/teacher/internshipSituation',
     component: Layout,
-    name: 'internshipSituation',
+    name: '实习情况',
+    icon: 'mdi-town-hall',
     meta: {
-      title: '实习情况',
-      enName: 'Internship Situation',
-      icon: 'mdi-town-hall'
+      enName: 'Internship Situation'
     },
     children: [
       {
         path: 'index',
+        name: '实习情况',
         meta: {
-          title: '实习情况',
           enName: 'Internship Situation',
         },
         show: true,
@@ -61,17 +59,16 @@ const teacher = [
   {
     path: '/recruit/teacher/internshipReport',
     component: Layout,
-    name: 'internshipReport',
+    name: '实习报告',
+    icon: 'mdi-file-document-multiple-outline',
     meta: {
-      title: '实习报告',
-      enName: 'Internship Report',
-      icon: 'mdi-file-document-multiple-outline'
+      enName: 'Internship Report'
     },
     children: [
       {
         path: 'index',
+        name: '实习报告',
         meta: {
-          title: '实习报告',
           enName: 'Internship Report',
         },
         show: true,
@@ -103,17 +100,16 @@ const teacher = [
   {
     path: '/recruit/teacher/teacherCertification',
     component: Layout,
-    name: 'teacherCertification',
+    name: '账号信息',
+    icon: 'mdi-human-male-board',
     meta: {
-      title: '账号信息',
-      enName: 'Teacher Certification',
-      icon: 'mdi-human-male-board'
+      enName: 'Teacher Certification'
     },
     children: [
       {
         path: 'index',
+        name: '账号信息',
         meta: {
-          title: '账号信息',
           enName: 'Teacher Certification',
         },
         show: true,
@@ -122,4 +118,15 @@ const teacher = [
     ]
   },
 ]
+
+function traverse(list, type) {
+  list.forEach(e => {
+    if (!e.type) e.type = type
+    if (!e.meta) e.meta = {}
+    if (!e.meta.title) e.meta.title = e.name
+    if (e.children?.length) traverse(e.children, 2)
+  })
+}
+traverse(teacher, 1)
+
 export default teacher