EventView.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <div class="event-view">
  3. <EventList :class="{ 'hide-sidebars': getSidebarisOpen == false}"></EventList>
  4. <!-- <EventContentArea :class="{'eventContentArea-Span': getSidebarisOpen == false}"></EventContentArea> -->
  5. <EventContent :class="{'eventContentArea-Span': getSidebarisOpen == false}"></EventContent>
  6. <!--<CommentList v-if=" $store.getters.getOpenCommentList == true && getSidebarisOpen == false" />-->
  7. </div>
  8. </template>
  9. <script>
  10. import CommentList from "./CommentList.vue";
  11. import EventList from "./EventList";
  12. import EventContentArea from "./EventContentArea.vue";
  13. import EventContent from "./EventContent.vue";
  14. import { mapGetters } from 'vuex';
  15. export default {
  16. name: "EventView",
  17. components: {
  18. EventList,
  19. EventContentArea,
  20. CommentList,
  21. EventContent,
  22. },
  23. data() {
  24. return {
  25. MyNo: "4", //接收NavBar 選定的那一頁icon標示
  26. MyName: "",
  27. mockdata: "",
  28. eventPageType: ["preview", "exam", "homework", "vote", "survey"] //本頁出現的類型
  29. };
  30. },
  31. created() {
  32. this.MyName = this.$t("studentWeb.eventView-title");
  33. this.$emit("onNavNo", this.MyNo);
  34. this.$emit("onNavName", this.MyName);
  35. this.$store.commit("ToggleSidebar", true);
  36. this.$store.commit("SaveNowPage", '活動');
  37. },
  38. methods: {
  39. scrollList() {
  40. //當從通知操作進行捲動時,將篩選條件清空
  41. this.selectedEventStatusNow = "所有活動狀態";
  42. this.eventTypeCheckers = [];
  43. let targetItem = document.getElementById(
  44. `event${this.getItemTitle.eventID}`
  45. );
  46. let scrollList = document.querySelectorAll(".event-list .list-block")[0];
  47. if (scrollList !== undefined) {
  48. let scrollvalue = 0;
  49. if (targetItem.offsetTop > 600) {
  50. scrollvalue = targetItem.offsetTop - 128;
  51. } else if (targetItem.offsetTop < 600) {
  52. scrollvalue = -scrollList.scrollHeight;
  53. }
  54. console.log(scrollList.scrollHeight, scrollvalue);
  55. scrollList.scrollTo({
  56. top: scrollvalue,
  57. behavior: "smooth",
  58. });
  59. }
  60. },
  61. gotoNextItem() {
  62. let nextItems = [];
  63. for (let i = 0; i <= this.mockdata.length; i++) {
  64. if (this.getItemTitle == this.mockdata[i]) {
  65. let j = i + 1;
  66. if (
  67. j < this.mockdata.length && this.eventPageType.includes(this.mockdata[j].eventType)
  68. ) {
  69. nextItems.push(this.mockdata[j]);
  70. } else {
  71. for (let j = i + 1; j < this.mockdata.length; j++) {
  72. if (this.eventPageType.includes(this.mockdata[j].eventType)) {
  73. nextItems.push(this.mockdata[j]);
  74. }
  75. }
  76. }
  77. }
  78. }
  79. if (nextItems != "") {
  80. if (
  81. nextItems[0].eventName ==
  82. this.mockdata[this.mockdata.length - 1].eventName
  83. )
  84. this.$store.commit("ChangeItemName", nextItems[0]);
  85. this.$router.push("/studentWeb/eventView#" + nextItems[0].eventID);
  86. this.scrollList();
  87. this.$store.commit("SetisFromInfoPoptpScroll", true);
  88. //重置預習活動
  89. this.$store.commit("PassPhaseTest", 0);
  90. this.$store.commit("ChangeCurrentPhase", 0);
  91. this.$store.commit("ChangeCurrentSelectedReadingName", 1);
  92. this.$store.commit("ToggleSentCurrentphase", false);
  93. this.$store.commit("SetCurrentQuestionNo", 0);
  94. this.$store.commit("SetTrytestCount", [0, 0, 0]);
  95. } else {
  96. this.$store.commit("ChangeItemName", this.mockdata[0]);
  97. this.scrollList();
  98. this.$store.commit("SetisFromInfoPoptpScroll", true);
  99. }
  100. },
  101. },
  102. computed: {
  103. ...mapGetters([
  104. "getSidebarisOpen",
  105. "getItemTitle"
  106. ])
  107. }
  108. };
  109. </script>
  110. <style scoped>
  111. .hide-sidebars {
  112. /*width: 0%;*/
  113. transition: ease-out 0.3s;
  114. display:none;
  115. }
  116. .eventContentArea-view {
  117. float: right;
  118. width: 75%;
  119. }
  120. .eventContentArea-Span {
  121. padding: 1% 10%;
  122. width: 100%;
  123. }
  124. .eventContentArea-left {
  125. width: 80%;
  126. float: left;
  127. padding: 1% 7%;
  128. transition: 0s;
  129. }
  130. .nextItemBtn {
  131. position: fixed;
  132. bottom: 4%;
  133. right: 3%;
  134. background-color: #d8d8d8;
  135. color: #515a6e;
  136. z-index: 3;
  137. padding: 7px;
  138. cursor: pointer;
  139. border-radius: 3px;
  140. font-weight: bolder;
  141. }
  142. .nextItemBtn:hover {
  143. background-color: rgb(100, 174, 22) !important;
  144. color: white;
  145. border: none;
  146. }
  147. </style>