qiyunfeng-create
3 天以前 b15a997e95d715c41df3a76aecbf58ec1141ab53
src/views/personalCenter/index.vue
New file
@@ -0,0 +1,144 @@
<template>
  <page>
    <div class="contentBox">
      <div class="breadcrumbBox">
        <span>位置:</span>
        <el-breadcrumb :separator-icon="ArrowRight">
          <el-breadcrumb-item>个人中心</el-breadcrumb-item>
          <el-breadcrumb-item>{{ label }}</el-breadcrumb-item>
        </el-breadcrumb>
      </div>
      <el-divider />
      <div class="personalPage clear">
        <div class="leftList fl">
          <ul class="menu">
            <li
              v-for="item in listMenu"
              :key="item.key"
              @click="goRouter(item)"
              :class="`/${item.path}` === path ? 'activeItem hover' : 'menuItem hover'"
            >
              <span
                :style="{
                  fill: `/${item.path}` === path ? '#fff' : '#000',
                }"
                v-html="item.icon"
              >
              </span>
              <span>{{ item.label }}</span>
            </li>
          </ul>
        </div>
        <div class="rightContent">
          <div>
            <!-- 让主体做子路由的显示 -->
            <router-view />
          </div>
        </div>
      </div>
    </div>
  </page>
</template>
<script setup lang="ts">
import { ArrowRight } from '@element-plus/icons-vue'
import { menu } from './config.ts'
import { useRouter, onBeforeRouteUpdate } from 'vue-router'
import { ref, onMounted } from 'vue'
const router = useRouter()
const routerVal = router.currentRoute.value
const path = ref(routerVal.path)
const label = ref('')
const listMenu: any = ref([])
onBeforeRouteUpdate(async (to, from) => {
  path.value = to.fullPath
})
onMounted(() => {
  menu.forEach((item) => {
    if ('/' + item.path === path.value) {
      label.value = item.label
    }
  })
  // const userCache: any = localStorage.getItem('jesk-userInfo')
  // const userInfo = JSON.parse(userCache)
  // if(!userInfo){
  //   router.push({
  //     path:'/'
  //   })
  //   return false;
  // }
  // if (userInfo.role == 'Teacher') {
  //   const data: any = menu.filter((item) => item.path != 'class')
  //   listMenu.value = data
  // } else {
  const data: any = menu.filter((item) => item.path != 'course')
  listMenu.value = data
  // }
})
const goRouter = (item: any) => {
  // if (!localStorage.getItem('jsek-token') || localStorage.getItem('jsek-token') == null) {
  //   router.push({
  //     path: '/home',
  //     query: {
  //       showLogin: '1'
  //     }
  //   })
  // } else {
  label.value = item.label
  router.push({ path: item.path })
  // }
}
</script>
<style lang="less" scoped>
.breadcrumbBox {
  display: flex;
  padding: 20px;
}
.personalPage {
  padding: 20px 10px;
  display: flex;
  .leftList {
    width: 275px;
    border-radius: 10px 10px 10px 10px;
    background: #e1ebe3;
    height: max-content;
    .menu {
      li {
        height: 50px;
        padding: 10px 40px;
        font-size: 16px;
        display: flex;
        align-items: center;
        border-bottom: 1px solid #ffffff;
        img {
          width: 19px;
          height: 24px;
        }
        span {
          margin-left: 10px;
        }
      }
      .activeItem {
        background: linear-gradient(90deg, #019e58 0%, #144941 100%);
        background-size: 100% 100%;
        color: #fff;
        svg {
          fill: #fff;
        }
      }
    }
  }
  .rightContent {
    flex: 1;
    overflow: auto;
    margin-left: 15px;
    background-color: #fff;
  }
}
</style>