index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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="#2878ff"
  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.initFun();
  70. },
  71. methods: {
  72. initFun() {
  73. this.$store.commit("updateUserItemStore", {
  74. field: "userInfo",
  75. value: {
  76. id: "testuser-DHjjEuxXbN",
  77. encodedPassword: "string",
  78. userStatus: "suspended",
  79. userName: "testuser-DHjjEuxXbN",
  80. email: "test@gmail.com",
  81. firstName: "一",
  82. lastName: "张",
  83. studyId: "U00000",
  84. phone: "13060901234",
  85. nickName: "小强",
  86. group: "临时用户"
  87. }
  88. });
  89. this.activeTabName = 0;
  90. this.currentComponents = this.tabbars[this.activeTabName].pageName;
  91. },
  92. onChange(index) {
  93. this.currentComponents = this.tabbars[this.activeTabName].pageName;
  94. }
  95. }
  96. };
  97. </script>
  98. <style lang="scss" scoped>
  99. .home-box {
  100. height: 100%; // 不要设置vh,手机浏览器计算问题
  101. padding-bottom: 2rem; // 多2em,避免tab栏挡住内容
  102. }
  103. </style>