index.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template>
  2. <div class="home-box">
  3. <van-nav-bar
  4. title="京铁学堂"
  5. left-text=""
  6. right-text=""
  7. bind:click-left=""
  8. bind:click-right=""
  9. />
  10. <transition name="tab" mode="out-in">
  11. <component :is="currentComponents" class="page" />
  12. </transition>
  13. <van-tabbar
  14. v-model="activeTabName"
  15. active-color="#F2674E"
  16. inactive-color="#808080"
  17. @change="onChange"
  18. >
  19. <van-tabbar-item v-for="(item, index) in tabbars" :key="index">
  20. <span>{{ item.title }}</span>
  21. <template #icon="props">
  22. <img :src="props.active ? item.iconActive : item.iconInactive" />
  23. </template>
  24. </van-tabbar-item>
  25. </van-tabbar>
  26. </div>
  27. </template>
  28. <script>
  29. import PageLearn from "./learn/page-learn";
  30. import PageAnswer from "./answer/page-answer";
  31. import PageExam from "./exam/page-exam";
  32. import PagePerson from "./person/page-person";
  33. export default {
  34. name: "home",
  35. components: { PageLearn, PageAnswer, PageExam, PagePerson },
  36. data() {
  37. return {
  38. activeTabName: 0,
  39. currentComponents: "pageLearn",
  40. tabbars: [
  41. {
  42. title: "学习",
  43. pageName: "pageLearn",
  44. iconInactive: require("@/assets/image/homeTab/study.png"),
  45. iconActive: require("@/assets/image/homeTab/studyActive.png")
  46. },
  47. {
  48. title: "答题",
  49. pageName: "pageAnswer",
  50. iconInactive: require("@/assets/image/homeTab/answer.png"),
  51. iconActive: require("@/assets/image/homeTab/answerActive.png")
  52. },
  53. {
  54. title: "考试",
  55. pageName: "pageExam",
  56. iconInactive: require("@/assets/image/homeTab/exam.png"),
  57. iconActive: require("@/assets/image/homeTab/examActive.png")
  58. },
  59. {
  60. title: "我的",
  61. pageName: "pagePerson",
  62. iconInactive: require("@/assets/image/homeTab/person.png"),
  63. iconActive: require("@/assets/image/homeTab/personActive.png")
  64. }
  65. ]
  66. };
  67. },
  68. created() {
  69. this.activeTabName = 2;
  70. this.currentComponents = this.tabbars[this.activeTabName].pageName;
  71. },
  72. methods: {
  73. onChange(index) {
  74. this.currentComponents = this.tabbars[this.activeTabName].pageName;
  75. // if (this.current !== pageName) {
  76. // this.current = pageName;
  77. // this.$router.replace({ name: "home", query: { page: pageName } });
  78. // }
  79. }
  80. }
  81. };
  82. </script>
  83. <style lang="scss" scoped>
  84. .home-box {
  85. height: 100%; // 不要设置vh,手机浏览器计算问题
  86. padding-bottom: 2rem; // 多2em,避免tab栏挡住内容
  87. }
  88. </style>