Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.82 KB | None | 0 0
  1. <template lang="pug">
  2. .div
  3. .contest
  4. .contest__loader
  5. dot-loader(:loading="loading", :size="size", :color="color")
  6. hero-contest(v-show="!loading")
  7. section.contest(v-if="!!item && !loading")
  8. .contest__inner.wrapper
  9.  
  10. h2.heading.contest__heading {{ item.nameFullRus }}
  11.  
  12. .contest__grid
  13. .contest__content#contsetInfo
  14. .contest__head
  15. .contest__type-game
  16. .contest__name
  17. .label(:style=`{ backgroundColor: '#' + item.sport.color }`, v-if="item.sport") {{ item.sport.nameRus }}
  18. .contest__range
  19. .contest__range-item(v-for="(dist, i) in item.distances", :key="i") {{ dist.distanceType.nameRus }}
  20. .contest__tabs
  21. .tabs-component
  22. ul.tabs-component-tabs
  23. li.tabs-component-tab(:class="{'is-active': tabOutter === 0}")
  24. a.tabs-component-tab-a(@click="changeTab(0)") О соревновании
  25. li.tabs-component-tab(:class="{'is-active': tabOutter === 1}",v-if="!finished")
  26. a.tabs-component-tab-a(@click="changeTab(1)") Список участников
  27. li.tabs-component-tab(:class="{'is-active': tabOutter === 2}",v-if="finished")
  28. a.tabs-component-tab-a(@click="changeTab(2)") Результаты
  29. //-li.tabs-component-tab(:class="{'is-active': tabOutter === 3}",v-if="finished")
  30. a.tabs-component-tab-a(@click="changeTab(3)") Фото
  31. .tabs-component-panels
  32. section.tabs-component-panel(v-show="tabOutter === 0")
  33. .contest__info
  34. .contest__desc
  35. vue-markdown(:source="item.descriptionRus" v-if="!!item.descriptionRus")
  36. //-regulations
  37.  
  38. .about
  39. .about__inner
  40. //-about-city(:city="item.city", v-if="!!item.city")
  41. about-track(:distances="item.distances",:map="item.tracksMap",v-if="!!item.tracksMap")
  42. about-corporate(:rus="item.corporateDescriptionRus", :eng="item.corporateDescriptionEng", v-if="!!item.corporateDescriptionRus")
  43. about-timerkids(:rus="item.childrenDescriptionRus", :eng="item.childrenDescriptionEng", v-if="!!item.childrenDescriptionRus")
  44. about-schedule(:schedule="item.schedulePeriods",:scheduleNew="item.schedule", v-if="!!item.schedule")
  45. about-conditions(:conditions="item.participationConditionRus",:whereget="item.whereget",v-if="!!item.participationConditionRus")
  46. section.about__section.about__partners#partners(v-if="!!item.partners")
  47. h3.heading.about__heading.about__heading--mb_lg Партнеры
  48. .partners
  49. .partners__inner
  50. .partners__item
  51. vue-markdown(v-if="item.partners", :source="item.partners")
  52. //- about-partners(:partners="item.partners", v-if="item.partners.length !== 0")
  53. section.tabs-component-panel(v-show="tabOutter === 1")
  54. .contest__info
  55. .contest__desc
  56. vue-markdown(:source="item.descriptionRus" v-if="!!item.descriptionRus")
  57. //-regulations
  58.  
  59. event-participants
  60. section.tabs-component-panel(v-show="tabOutter === 2",v-if="finished")
  61. .contest__info
  62. .contest__desc
  63. vue-markdown(:source="item.descriptionRus" v-if="!!item.descriptionRus")
  64. //-regulations
  65.  
  66. event-results
  67. section.tabs-component-panel(v-show="tabOutter === 3",v-if="finished")
  68. .contest__info
  69. .contest__desc
  70. vue-markdown(:source="item.descriptionRus" v-if="!!item.descriptionRus")
  71. //-regulations
  72. carousel-gallery
  73. gallery
  74.  
  75. sidebar-contest(v-if="tabOutter === 0", :item="item")
  76. </template>
  77.  
  78. <script>
  79. import VueMarkdown from 'vue-markdown';
  80. import SidebarContest from "@/components/blocks/sidebarContest";
  81. //import AboutCity from "@/components/section/about/AboutCity";
  82. import AboutTrack from "@/components/section/about/AboutTrack";
  83. import AboutCorporate from "@/components/section/about/AboutCorporate";
  84. import AboutTimerkids from "@/components/section/about/AboutTimerkids";
  85. import AboutSchedule from "@/components/section/about/AboutSchedule";
  86. import AboutConditions from "@/components/section/about/AboutConditions";
  87. import AboutPartners from "@/components/section/about/AboutPartners";
  88. import HeroContest from "@/components/section/heroContest";
  89. import EventParticipants from "@/components/section/event-participants";
  90. import Regulations from '@/components/file_regulations';
  91. import Search from "@/components/blocks/search";
  92. import ParticipantsTable from "@/components/section/tables/participants";
  93. import EventResults from "../components/section/event-results";
  94. import Gallery from "../components/section/gallery";
  95. import CarouselGallery from "../components/section/carouselGallery";
  96. import Loader from '@/mixins/loader'
  97. export default {
  98. name: "contests",
  99. mixins: [Loader],
  100. components: {
  101. EventResults,
  102. HeroContest,
  103. AboutPartners,
  104. AboutConditions,
  105. AboutSchedule,
  106. AboutTimerkids,
  107. AboutCorporate,
  108. AboutTrack,
  109. //AboutCity,
  110. SidebarContest,
  111. Regulations,
  112. EventParticipants,
  113. Search,
  114. Gallery,
  115. CarouselGallery,
  116. VueMarkdown,
  117. },
  118. data () {
  119. return {
  120. filter: 0,
  121. tabOutter: 0,
  122. errorFetch: false,
  123. loading: false,
  124. }
  125. },
  126. computed: {
  127. id() {
  128. return this.$route.params.id
  129. },
  130. item() {
  131. return this.$store.getters.event
  132. },
  133. finished () {
  134. return new Date() > new Date(this.item.date)
  135. },
  136. },
  137. watch: {
  138. '$route'() {
  139. this.handleTabOutter()
  140. },
  141. },
  142. created() {
  143. this.handleTabOutter()
  144.  
  145. this.loading = true
  146. this.$store.dispatch('getEvent', this.id).then(() => {
  147. this.loading = false;
  148. this.fetchParticipants();
  149. this.fetchResults();
  150. })
  151. .catch((error) => {
  152. this.loading = false;
  153. this.$router.push({ name: "participant" });
  154. })
  155. },
  156. methods: {
  157. changeTab (val) {
  158. this.tabOutter = val
  159. let tabOutter = val === 0 ? 'about' : val === 1 ? 'participants' : val === 2 ? 'results' : 'photo'
  160. this.$router.push({ name: 'event-info', query: { tabOutter: tabOutter } })
  161. },
  162. fetchParticipants() {
  163. this.$store.dispatch('getParticipantOnEventGroupByDistance', this.id);
  164. },
  165. handleTabOutter() {
  166. let tabOutter = this.$route.query.tabOutter
  167. if (tabOutter === undefined) {
  168. tabOutter = 'about'
  169. this.$router.push({ name: 'event-info', query: { tabOutter: tabOutter } })
  170. }
  171. if (tabOutter === 'about')
  172. this.tabOutter = 0;
  173. if (tabOutter === 'participants')
  174. this.tabOutter = 1;
  175. if (tabOutter === 'results')
  176. this.tabOutter = 2;
  177. if (tabOutter === 'photo')
  178. this.tabOutter = 3;
  179. },
  180. fetchResults() {
  181. this.$store.dispatch('getParticipantsResultsOnEventGroupByDistance', this.id)
  182. }
  183. }
  184. }
  185. </script>
  186.  
  187. <style scoped>
  188.  
  189. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement