MarkHome.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <div class="mark-home home">
  3. <div class="home-header">
  4. <view-header>
  5. <h1 slot="logo">{{ curSubject.name }}</h1>
  6. <div class="home-navs" slot="info">
  7. <ul>
  8. <li
  9. :class="{ act: curNav.name === nav.name }"
  10. v-for="(nav, index) in navs"
  11. :key="index"
  12. @click="switchNav(nav)"
  13. >
  14. <span class="nav-item-cont">{{ nav.title }}</span>
  15. </li>
  16. </ul>
  17. </div>
  18. </view-header>
  19. </div>
  20. <div class="home-body">
  21. <div class="home-main">
  22. <router-view />
  23. <view-footer></view-footer>
  24. </div>
  25. </div>
  26. </div>
  27. </template>
  28. <script>
  29. import { navs } from "@/routers/mark";
  30. import menuMixins from "@/components/homeMenuMixins";
  31. import { subjectDetail } from "@/api";
  32. export default {
  33. name: "mark-home",
  34. mixins: [menuMixins],
  35. data() {
  36. return {
  37. subjectId: this.$route.params.subjectId,
  38. navs: [],
  39. curNav: {},
  40. curSubject: { name: "素描" }
  41. };
  42. },
  43. watch: {
  44. $route: {
  45. handler(val) {
  46. this.actSubNav();
  47. }
  48. }
  49. },
  50. mounted() {
  51. this.buildNavs();
  52. this.actSubNav();
  53. this.getSubjectDetail();
  54. },
  55. methods: {
  56. async getSubjectDetail() {
  57. this.curSubject = await subjectDetail(this.subjectId);
  58. },
  59. buildNavs() {
  60. const user = this.$ls.get("user", {});
  61. this.navs = navs;
  62. if (user.role === "ADMIN") {
  63. this.navs = [{ title: "总览", name: "WorkOverview" }, ...navs];
  64. }
  65. },
  66. actSubNav() {
  67. const router = this.$route.matched.filter(
  68. item => item.name !== "Mark"
  69. )[0];
  70. this.actCurNav(router);
  71. }
  72. }
  73. };
  74. </script>