微信

index.vue 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <template>
  2. <div class="mainPage flex-v">
  3. <div class="flex-item">
  4. <div class="content">
  5. <div class="banner">
  6. <div class="scrollImg">
  7. <swiper :options="swiperOption" ref="mySwiper">
  8. <swiper-slide class="swiper-slide" v-for="(item,index) in courseDetail.CourseImgs" :key="index">
  9. <img :src='item.ImgUrl' class="cover" alt="">
  10. </swiper-slide>
  11. </swiper>
  12. </div>
  13. <div>
  14. <span>{{courseDetail.CourseName}}</span>
  15. <div>
  16. <span>¥<em>{{courseDetail.Price}}</em>起/课时</span>
  17. <span>参与者<em>{{courseDetail.SignupNum}}</em>/{{courseDetail.MaxNum}}人</span>
  18. </div>
  19. </div>
  20. </div>
  21. <div class="subContent time">
  22. <h5>时间</h5>
  23. <span>{{returnDate(courseDetail.BeginDate)}}~{{returnDate(courseDetail.EndDate)}}</span>
  24. <div class="list flex-h">
  25. <div class="flex-item">
  26. <ul :class="{'show':showMoreCourse}">
  27. <li v-for="(item,index) in courseTimeList" :key="index">{{returnCourseTime(item.BeginDate,item.EndDate)}}</li>
  28. </ul>
  29. <a class="moreCourse" @click="triggerCourseTime">
  30. {{showMoreCourse ? '收起' : '更多'}}
  31. <i v-if="!showMoreCourse" class="iconfont icon-jiantou-down"></i>
  32. <i v-if="showMoreCourse" class="iconfont icon-jiantou-up"></i>
  33. </a>
  34. </div>
  35. </div>
  36. </div>
  37. <div style="width:100%;height:.1rem;background:#ebf1f2;"></div>
  38. <div class="subContent address">
  39. <h5>地点</h5>
  40. <div class="flex-h">
  41. <div class="flex-item">
  42. <div class="img">
  43. <router-link :to="{name: '', query: {}}">
  44. <img :src="courseDetail.CaseInfo.CaseIcon" class="centerLabel cover" alt="">
  45. <div class="flex-h">
  46. <i class="iconfont icon-dingwei"></i>
  47. <div class="flex-item">
  48. <div>
  49. <span>{{courseDetail.CaseInfo.CaseName}}({{courseDetail.CaseInfo.CaseAddress}})</span>
  50. </div>
  51. </div>
  52. </div>
  53. </router-link>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. <div class="flex-h">
  61. <div class="flex-item">
  62. <div>
  63. <span>总计¥<em>{{courseDetail.Price}}</em></span>
  64. <span>优惠券体验</span>
  65. </div>
  66. </div>
  67. <router-link :to="{name: 'placeOrderForCourse', query: {id: courseDetail.CourseId}}">去购买</router-link>
  68. </div>
  69. </div>
  70. </template>
  71. <script>
  72. import { swiper, swiperSlide } from 'vue-awesome-swiper'
  73. import 'swiper/dist/css/swiper.css'
  74. import { mapState, createNamespacedHelpers } from 'vuex'
  75. const { mapActions: mapProjectActions, mapState: mapProjectState } = createNamespacedHelpers('majorProjects')
  76. export default {
  77. name: '',
  78. data () {
  79. return {
  80. swiperOption: {
  81. observer: true,
  82. autoplay: {
  83. disableOnInteraction: false,
  84. }
  85. },
  86. showMoreCourse: false, // 显隐更多课程时间
  87. courseTimeList: [], // 课程时间
  88. }
  89. },
  90. computed: {
  91. ...mapState({
  92. orgid: x => x.app.orgId,
  93. fiveA: x => x.index.fiveA,
  94. banner: x => x.index.banner,
  95. message: x => x.index.message,
  96. project: x => x.index.project,
  97. cms: x => x.index.cms,
  98. }),
  99. ...mapProjectState({
  100. courseDetail: x => x.courseDetail
  101. }),
  102. MySwiper () {
  103. return this.$refs.mySwiper.swiper
  104. },
  105. },
  106. components: {
  107. swiper,
  108. swiperSlide,
  109. },
  110. created () {
  111. this.getCourseDetailInfo({ id: this.$route.query.id }).then((res) => {
  112. var arr = res.CourseDetail
  113. this.courseTimeList = arr.sort(function (a, b) { return new Date(a.BeginDate).getTime() > new Date(b.BeginDate).getTime() ? 1 : -1 })
  114. // console.log(JSON.stringify(res))
  115. })
  116. },
  117. methods: {
  118. ...mapProjectActions([
  119. 'getCourseDetailInfo',
  120. ]),
  121. returnCourseTime (val,endVal) { // 返回课时时间
  122. val = new Date(val)
  123. endVal = new Date(endVal)
  124. return this.returnNum(val.getMonth() + 1) + '/' + this.returnNum(val.getDate()) + ' 周' + '日一二三四五六'.split('')[new Date(val).getDay()] + ' ' + this.returnNum(val.getHours()) + ':' + this.returnNum(val.getMinutes()) + '~' + this.returnNum(endVal.getHours()) + ':' + this.returnNum(endVal.getMinutes())
  125. },
  126. returnNum (val) {
  127. return val > 9 ? val : '0' + val
  128. },
  129. returnDate (val) {
  130. val = new Date(val)
  131. return val.getFullYear() + '年' + this.returnNum(val.getMonth() + 1) + '月' + this.returnNum(val.getDate()) + '日'
  132. },
  133. triggerCourseTime () { // 显隐更多课程时间
  134. this.showMoreCourse = !this.showMoreCourse
  135. },
  136. }
  137. }
  138. </script>
  139. <!-- Add "scoped" attribute to limit CSS to this component only -->
  140. <style lang="scss" scoped>
  141. @import "page.scss";
  142. </style>