微信

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <template>
  2. <div class="mainPage">
  3. <div class="banner">
  4. <div>
  5. <!-- <swiper :options="swiperOption" ref="mySwiper">
  6. <swiper-slide class="swiper-slide" v-for="(item,index) in projectInfo.CmsCaseImgs" :key="index">
  7. <img :src='item.CaseImageUrl' class="cover" alt="">
  8. </swiper-slide>
  9. </swiper> -->
  10. <img :src="projectInfo.CmsCaseImgs[0].CaseImageUrl" alt="">
  11. </div>
  12. </div>
  13. <p>{{projectInfo.DetailContent}}</p>
  14. <div class="list flex-h">
  15. <div class="flex-item">
  16. <div v-for="(item,index) in courseList" :key="index">
  17. <span>{{item.month+1}}月</span>
  18. <ul class="items">
  19. <router-link tag="li" v-for="(subItem,subIndex) in item.list" :key="subIndex" :to="{name: 'majorProjectsDetail', query: {id: subItem.id}}" class="flex-h">
  20. <div class="flex-item">
  21. <div>
  22. <courseItem :data="subItem"></courseItem>
  23. </div>
  24. </div>
  25. </router-link>
  26. </ul>
  27. </div>
  28. <div class="cutLine"></div>
  29. <div>
  30. <span>关注我们</span>
  31. <ul class="items">
  32. <li class="flex-h">
  33. <div class="bottom flex-item flex-h">
  34. <div class="flex-item flex-h">
  35. <div class="flex-item">
  36. <div>
  37. <span class="centerLabel">长按右方二维码<br>关注“城的空间”公众号</span>
  38. </div>
  39. </div>
  40. <div class="qrCode">
  41. <a><img src="" class="centerLabel cover" alt=""></a>
  42. </div>
  43. </div>
  44. </div>
  45. </li>
  46. </ul>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. </template>
  52. <script>
  53. import { swiper, swiperSlide } from 'vue-awesome-swiper'
  54. import 'swiper/dist/css/swiper.css'
  55. import { mapState, createNamespacedHelpers } from 'vuex'
  56. const { mapActions: mapProjectActions, mapState: mapProjectState } = createNamespacedHelpers('majorProjects')
  57. import courseItem from '../../../components/courseItem/index'
  58. export default {
  59. name: '',
  60. data () {
  61. return {
  62. swiperOption: {
  63. observer: true,
  64. autoplay: {
  65. disableOnInteraction: false,
  66. }
  67. },
  68. courseList: [], // 课程列表
  69. initList: [
  70. // { // 初始化课程列表
  71. // id: '',
  72. // title: '课程名称',
  73. // img: '',
  74. // time: '2018.04.04 18:30-20:00',
  75. // address: '南京南',
  76. // tag: ['儿童教育', '小小外交官'],
  77. // courseType: '团体课',
  78. // defaultPrice: '168/节',
  79. // getWay: 'ticket',
  80. // startDate: 1514779200000,
  81. // endDate: 1514781600000,
  82. // }, {
  83. // id: '',
  84. // title: '课程名称',
  85. // img: '',
  86. // time: '2018.04.04 18:30-20:00',
  87. // address: '南京南',
  88. // tag: ['儿童教育', '小小外交官'],
  89. // courseType: '团体课',
  90. // defaultPrice: '168/节',
  91. // getWay: 'ticket',
  92. // startDate: 1514779200000,
  93. // endDate: 1514781600000,
  94. // }, {
  95. // id: '',
  96. // title: '课程名称',
  97. // img: '',
  98. // time: '2018.04.04 18:30-20:00',
  99. // address: '南京南',
  100. // tag: ['儿童教育', '小小外交官'],
  101. // courseType: '团体课',
  102. // defaultPrice: '168/节',
  103. // getWay: 'ticket',
  104. // startDate: 1517460000000,
  105. // endDate: 1517467200000,
  106. // }, {
  107. // id: '',
  108. // title: '课程名称',
  109. // img: '',
  110. // time: '2018.04.04 18:30-20:00',
  111. // address: '南京南',
  112. // tag: ['儿童教育', '小小外交官'],
  113. // courseType: '团体课',
  114. // defaultPrice: '168/节',
  115. // getWay: 'ticket',
  116. // startDate: 1517460000000,
  117. // endDate: 1517467200000,
  118. // }
  119. ],
  120. }
  121. },
  122. computed: {
  123. ...mapState({
  124. orgid: x => x.app.orgId,
  125. fiveA: x => x.index.fiveA,
  126. banner: x => x.index.banner,
  127. message: x => x.index.message,
  128. project: x => x.index.project,
  129. cms: x => x.index.cms,
  130. }),
  131. ...mapProjectState({
  132. projectInfo: x => x.projectInfo
  133. }),
  134. // MySwiper () {
  135. // return this.$refs.mySwiper.swiper
  136. // },
  137. },
  138. components: {
  139. courseItem,
  140. swiper,
  141. swiperSlide,
  142. },
  143. created () {
  144. this.initData()
  145. },
  146. methods: {
  147. ...mapProjectActions([
  148. 'getProjectInfo',
  149. ]),
  150. returnTag (arr) {
  151. var aArr = []
  152. for (var n = 0; n < arr.length; n++) {
  153. aArr.push(arr[n].TagName)
  154. }
  155. return aArr
  156. },
  157. returnNum (val) {
  158. return val > 9 ? val : '0' + val
  159. },
  160. returnDate (val) {
  161. val = new Date(val)
  162. return val.getFullYear() + '.' + this.returnNum(val.getMonth() + 1) + '.' + this.returnNum(val.getDate())
  163. },
  164. initData () { // 初始化数据
  165. this.getProjectInfo({ id: this.$route.query.id }).then((res) => {
  166. // console.log(JSON.stringify(res))
  167. // this.initList
  168. if (res.Courses === null) {
  169. res.Courses = []
  170. }
  171. var aArr = []
  172. for (var n = 0; n < res.Courses.length; n++) {
  173. aArr.push({
  174. id: res.Courses[n].CourseId,
  175. title: res.Courses[n].CourseName,
  176. img: res.Courses[n].CourseImg,
  177. time: this.returnDate(res.Courses[n].BeginDate) + '至' + this.returnDate(res.Courses[n].EndDate),
  178. address: res.CaseAddress == undefined ? '暂无数据' : res.CaseAddress,
  179. tag: this.returnTag(res.Courses[n].CourseTags),
  180. courseType: '团体课',
  181. defaultPrice: res.Courses[n].Price + '/节',
  182. getWay: 'ticket',
  183. startDate: new Date(res.Courses[n].BeginDate).getTime(),
  184. endDate: new Date(res.Courses[n].EndDate).getTime(),
  185. })
  186. }
  187. this.initList = aArr
  188. this.calcArr()
  189. })
  190. },
  191. calcArr () {
  192. let arr = []
  193. for (var n = 0; n < this.initList.length; n++) {
  194. arr.push(new Date(this.initList[n].startDate).getMonth())
  195. }
  196. for (var i = 0; i < arr.length; i++) {
  197. if (arr.indexOf(arr[i]) !== i) {
  198. arr.splice(i, 1)
  199. i--
  200. }
  201. }
  202. for (var i = 0; i < arr.length; i++) {
  203. this.courseList.push({
  204. month: arr[i],
  205. list: []
  206. })
  207. }
  208. for (var n = 0; n < this.initList.length; n++) {
  209. for (var i = 0; i < this.courseList.length; i++) {
  210. if (new Date(this.initList[n].startDate).getMonth() === this.courseList[i].month) {
  211. this.courseList[i].list.push(this.initList[n])
  212. }
  213. }
  214. }
  215. },
  216. }
  217. }
  218. </script>
  219. <!-- Add "scoped" attribute to limit CSS to this component only -->
  220. <style lang="scss" scoped>
  221. @import 'page.scss';
  222. </style>