index.html 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. {extend name="public/container"}
  2. {block name="title"}{$title}{/block}
  3. {block name='head_top'}
  4. <script src="{__WAP_PATH}zsff/js/jquery.cookie.js"></script>
  5. <style>
  6. body {
  7. background-color: #f5f5f5;
  8. }
  9. .thematic-details,
  10. .banner,
  11. .nav {
  12. background-color: #fff;
  13. }
  14. .thematic-details {
  15. position: fixed;
  16. top: 0;
  17. left: 0;
  18. z-index: 9;
  19. width: 100%;
  20. height: .8rem;
  21. background-color: rgba(0, 0, 0, .32);
  22. }
  23. .index .studyCourse .title .more {
  24. font-size: 0.25rem;
  25. color: #999;
  26. display: inherit;
  27. }
  28. .index .studyCourse .title .titleCon {
  29. width: 4rem;
  30. }
  31. .free {
  32. font-weight: 400;
  33. font-size: .24rem;
  34. color: #ffba25;
  35. }
  36. .news {
  37. display: -webkit-flex;
  38. display: flex;
  39. -webkit-align-items: center;
  40. align-items: center;
  41. padding: .24rem .2rem;
  42. background-color: #fff;
  43. margin-top: 0.14rem;
  44. }
  45. .news .pictrue {
  46. width: 1.24rem;
  47. margin-right: .2rem;
  48. }
  49. .news .pictrue img {
  50. display: block;
  51. width: 100%;
  52. }
  53. .news .swiper-container {
  54. -webkit-flex: 1;
  55. flex: 1;
  56. height: .4rem;
  57. }
  58. .news .swiper-slide a {
  59. display: block;
  60. height: .4rem;
  61. overflow: hidden;
  62. white-space: nowrap;
  63. text-overflow: ellipsis;
  64. font-weight: 400;
  65. font-size: .28rem;
  66. line-height: .4rem;
  67. }
  68. .teacher {
  69. margin-top: .14rem;
  70. background-color: #fff;
  71. }
  72. .teacher .teacher-hd {
  73. display: -webkit-box;
  74. display: -webkit-flex;
  75. display: flex;
  76. -webkit-box-align: center;
  77. -webkit-align-items: center;
  78. align-items: center;
  79. padding: .3rem .2rem 0;
  80. }
  81. .teacher .teacher-hd .name {
  82. -webkit-box-flex: 1;
  83. -webkit-flex: 1;
  84. flex: 1;
  85. font-weight: bold;
  86. font-size: .32rem;
  87. color: #333;
  88. }
  89. .teacher .teacher-hd .link {
  90. font-size: .22rem;
  91. color: #999999;
  92. }
  93. .teacher .teacher-hd .knowledge {
  94. font-size: .22rem;
  95. }
  96. .teacher .swiper-slide {
  97. width: 2.7rem;
  98. height: 3.2rem;
  99. border-radius: .1rem;
  100. margin: .3rem 0 .4rem;
  101. background-color: #f9fafc;
  102. }
  103. .teacher .swiper-slide .link {
  104. display: -webkit-box;
  105. display: -webkit-flex;
  106. display: flex;
  107. -webkit-box-orient: vertical;
  108. -webkit-box-direction: normal;
  109. -webkit-flex-direction: column;
  110. flex-direction: column;
  111. -webkit-box-pack: center;
  112. -webkit-justify-content: center;
  113. justify-content: center;
  114. -webkit-box-align: center;
  115. -webkit-align-items: center;
  116. align-items: center;
  117. height: 100%;
  118. }
  119. .teacher .swiper-slide .img {
  120. width: 1.3rem;
  121. height: 1.3rem;
  122. border-radius: 50%;
  123. object-fit: cover;
  124. }
  125. .teacher .swiper-slide .name {
  126. width: 100%;
  127. padding: 0 .27rem;
  128. margin-top: .17rem;
  129. overflow: hidden;
  130. white-space: nowrap;
  131. text-overflow: ellipsis;
  132. font-size: .3rem;
  133. line-height: .42rem;
  134. text-align: center;
  135. color: #282828;
  136. }
  137. .teacher .swiper-slide .info {
  138. display: -webkit-box;
  139. -webkit-box-orient: vertical;
  140. -webkit-line-clamp: 2;
  141. width: 100%;
  142. padding: 0 .27rem;
  143. margin-top: .12rem;
  144. overflow: hidden;
  145. font-size: .24rem;
  146. text-align: center;
  147. color: #999;
  148. }
  149. .teacher .swiper-slide .label {
  150. width: 100%;
  151. padding: 0 .27rem;
  152. margin-top: .12rem;
  153. text-align: center;
  154. }
  155. .teacher .swiper-slide .label .cell {
  156. display: inline-block;
  157. height: .34rem;
  158. padding: 0 .12rem;
  159. border-radius: .04rem;
  160. background-color: #fff7e6;
  161. vertical-align: middle;
  162. font-size: .22rem;
  163. line-height: .34rem;
  164. color: #feb720;
  165. }
  166. .teacher .swiper-slide .explain {
  167. display: -webkit-box;
  168. -webkit-box-orient: vertical;
  169. -webkit-line-clamp: 2;
  170. overflow: hidden;
  171. padding: 0 .33rem;
  172. margin-top: .1rem;
  173. font-size: .26rem;
  174. line-height: .4rem;
  175. text-align: center;
  176. color: #999;
  177. }
  178. </style>
  179. {/block}
  180. {block name="content"}
  181. <div v-cloak id="app" class="indexNew">
  182. <!--关注-->
  183. {if !$subscribe}
  184. <div class="thematic-details" v-if="topFocus">
  185. <div class="follow acea-row row-between-wrapper">
  186. <div>点击“立即关注”即可关注公众号</div>
  187. <div>
  188. <span class="followBnt" @click=" is_code = true">立即关注</span>
  189. <span class="iconfont iconguanbi2" @click="topFocus = false"></span>
  190. </div>
  191. </div>
  192. </div>
  193. {/if}
  194. <!--搜索-->
  195. <div class="header">
  196. <a class="search acea-row row-center-wrapper" href="{:Url('search')}"><span
  197. class="iconfont icon-sousuo"></span>输入你想要找的课程名称</a>
  198. </div>
  199. <!--幻灯片-->
  200. <div class="banner">
  201. <div id="carousel" class="swiper-container" style="width: 7.1rem;border-radius: .2rem;">
  202. <div class="swiper-wrapper">
  203. <div v-for="(item, index) in swiperlist" :key="index" class="swiper-slide">
  204. <img :src="item.pic" :data-url="item.url" style="width: 100%;height: 100%;border-radius: .2rem;object-fit: cover;" />
  205. </div>
  206. </div>
  207. <!-- 如果需要分页器 -->
  208. <div id="carousel-pagination" class="swiper-pagination"></div>
  209. </div>
  210. </div>
  211. <!--导航-->
  212. <div class="nav acea-row" v-cloak="">
  213. <a class="item" v-for="(item,index) in navList" :href="getNavHref(item,1)">
  214. <div class="pictrue"><img :src="item.icon"></div>
  215. <div class="text">{{item.title}}</div>
  216. </a>
  217. </div>
  218. <!-- 新闻 -->
  219. <div v-if="newsList.length" class="news">
  220. <div class="pictrue"><img src="{__WAP_PATH}zsff/images/news.png" /></div>
  221. <div id="news" class="swiper-container">
  222. <div class="swiper-wrapper">
  223. <div v-for="(item, index) in newsList" :key="index" class="swiper-slide">
  224. <a :href="$h.U({c:'article', a:'unified_list'})">{{ item.title }}</a>
  225. </div>
  226. </div>
  227. </div>
  228. </div>
  229. <!--活动区域-->
  230. <div class="activity acea-row row-between" v-if="activity.length || activityOne.id">
  231. <a class="left" :href="activityOne.wap_link">
  232. <div class="title line1" v-text="activityOne.title"></div>
  233. <div class="info line1" v-text="activityOne.info"></div>
  234. <div class="pictrue"><img :src="activityOne.pic"></div>
  235. </a>
  236. <div class="right" v-if="activity.length">
  237. <a class="item acea-row row-middle" v-for="item in activity" :href="item.wap_link">
  238. <div class="text">
  239. <div class="title line1" v-text="item.title"></div>
  240. <div class="info line1" v-text="item.info">考研强助力</div>
  241. </div>
  242. <div class="pictrue"><img :src="item.pic"></div>
  243. </a>
  244. </div>
  245. </div>
  246. <!-- 自定义排版 -->
  247. <template v-if="recommend.length">
  248. <template v-for="(item, index) in recommend">
  249. <!--直播-->
  250. <div class="broadcast" v-if="item.type === 5 && item.list.length">
  251. <div class="public_title acea-row row-between-wrapper">
  252. <div class="name">热门直播</div>
  253. </div>
  254. <div class="swiper-container swiperScroll">
  255. <div class="swiper-wrapper">
  256. <a class="swiper-slide item" v-for="itm in item.list" :href="getDetails(2,itm.id)">
  257. <div class="pictrue">
  258. <img :src="itm.image">
  259. <div class="state acea-row row-center-wrapper" v-if="itm.status == 1">
  260. <img src="/wap/first/zsff/images/live01.png">
  261. <div class="stateTxt">直播中</div>
  262. </div>
  263. <div class="state return acea-row row-center-wrapper" v-else-if="itm.status == 2">
  264. <img src="/wap/first/zsff/images/returnVisit.png">
  265. <div class="stateTxt">回放</div>
  266. </div>
  267. <div class="state make acea-row row-center-wrapper" v-else-if="itm.status == 3">
  268. <img src="/wap/first/zsff/images/live_time.png">
  269. <div class="stateTxt">直播时间 {{itm.start_play_time}}</div>
  270. </div>
  271. </div>
  272. <div class="text">
  273. <div class="name line1" v-text="itm.title"></div>
  274. <div class="info"><span class="red">{{itm.records}}</span>人正在学习</div>
  275. </div>
  276. </a>
  277. </div>
  278. </div>
  279. </div>
  280. <!-- 推荐讲师 -->
  281. <div v-if="item.type === 6 && item.list.length" class="teacher">
  282. <div class="teacher-hd">
  283. <div class="name">推荐讲师</div>
  284. <a class="link" href="{:url('wap/special/teacher_list')}">查看更多<span class="knowledge iconxiangyou"></span></a>
  285. </div>
  286. <div id="teacher" class="swiper-container">
  287. <div class="swiper-wrapper">
  288. <div v-for="(itm, index) in item.list" :key="index" class="swiper-slide">
  289. <a class="link" :href="$h.U({c:'special',a:'teacher_detail'})+'?id=' + itm.id">
  290. <img class="img" :src="itm.lecturer_head">
  291. <div class="name">{{itm.lecturer_name}}</div>
  292. <div v-if="itm.label.length" class="label">
  293. <template v-for="(itms, idx) in itm.label">
  294. <div v-if="!idx" :key="idx" class="cell">{{itms}}</div>
  295. </template>
  296. </div>
  297. <div class="explain">{{itm.explain}}</div>
  298. </a>
  299. </div>
  300. </div>
  301. </div>
  302. </div>
  303. <!-- 线下活动 -->
  304. <div class="essential activity-offline" v-if="item.type === 7 && item.list.length">
  305. <div class="public_title acea-row row-between-wrapper">
  306. <div class="name">线下活动</div>
  307. <a class="more acea-row row-middle" :href="getActivityHref()">查看更多<span class="knowledge iconxiangyou"></span></a>
  308. </div>
  309. <div class="list">
  310. <a class="item" v-for="itm in item.list" :href="activityDetails(itm.id)">
  311. <div class="pictrue">
  312. <img :src="itm.image">
  313. </div>
  314. <div class="text">
  315. <div class="title acea-row row-middle">
  316. <div class="name line1" v-text="itm.title"></div>
  317. </div>
  318. <div class="info">
  319. <div><span class="knowledge icondidian"></span>{{ itm.province }}{{ itm.city }}{{ itm.district }}{{ itm.detail }}</div>
  320. <div><span class="knowledge iconshijian2"></span>{{ itm.time }}</div>
  321. </div>
  322. </div>
  323. </a>
  324. </div>
  325. </div>
  326. <!-- 左右切换 -->
  327. <div v-if="item.typesetting == 4 && item.list.length" :key="index" class="curriculum">
  328. <div class="public_title acea-row row-between-wrapper">
  329. <div class="name" v-text="item.title"></div>
  330. <a class="more acea-row row-middle" :href="getNavHref(item)">查看更多<span
  331. class="knowledge iconxiangyou"></span></a>
  332. </div>
  333. <div class="swiper-container" :class="'swiper-course-'+index" :data-index="index">
  334. <div class="swiper-wrapper">
  335. <div class="swiper-slide" v-for="(vv,inx) in item.data">
  336. <div class="public_list">
  337. <a class="item acea-row" v-for="val in vv.value"
  338. :href="getDetails(item.type,val.link_id)">
  339. <div class="pictrue">
  340. <img :src="val.image">
  341. </div>
  342. <div class="text">
  343. <div class="title acea-row row-middle">
  344. <div class="name line1">{{val.title}}</div>
  345. </div>
  346. <div class="labelList">
  347. <span class="labelItem" v-for="label in val.label">{{label}}</span>
  348. </div>
  349. <div class="acea-row row-between-wrapper">
  350. <div>
  351. <div class="free" v-if="val.pay_type == 0 || val.pay_type == 2">免费</div>
  352. <div class="money" v-if="val.pay_type == 1 && val.is_pink == 0">¥<span>{{val.money}}</span></div>
  353. <div class="money" v-if="val.pay_type == 1 && val.is_pink > 0">¥<span>{{val.pink_money}}</span></div>
  354. <!--<div class="money" v-if="item.type==0">¥<span>{{val.money}}</span></div>-->
  355. <!--<div class="money" v-if="item.type==4">¥<span>{{val.money}}</span></div>-->
  356. </div>
  357. <div class="total" v-if="val.special_type!=4 && item.type==0">共{{ val.count }}节</div>
  358. <!--<div class="num acea-row row-center-wrapper" v-if="item.type==0">-->
  359. <!--{{val.browse_count >= 1000 ? '1000+' : val.browse_count}}人已学习</div>-->
  360. <!--<div class="num acea-row row-center-wrapper" v-if="item.type==4">-->
  361. <!--已售{{ val.count }}件</div>-->
  362. </div>
  363. </div>
  364. </a>
  365. </div>
  366. </div>
  367. </div>
  368. <div v-if="item.data.length > 1" class="swiper-pagination"></div>
  369. </div>
  370. </div>
  371. <!-- 大图 -->
  372. <div v-if="item.typesetting == 1 && item.list.length" :key="index" class="essential">
  373. <div class="public_title acea-row row-between-wrapper">
  374. <div class="name" v-text="item.title"></div>
  375. <a class="more acea-row row-middle" :href="getNavHref(item)">查看更多<span
  376. class="knowledge iconxiangyou"></span></a>
  377. </div>
  378. <div class="list">
  379. <a class="item" v-for="val in item.list" :href="getDetails(item.type,val.link_id)">
  380. <div class="pictrue"><img :src="val.image">
  381. <div class="label">{{val.special_type_name}}</div>
  382. </div>
  383. <div class="text">
  384. <div class="title acea-row row-middle">
  385. <div class="name line1" v-text="val.title"></div>
  386. </div>
  387. <div class="info acea-row row-between-wrapper">
  388. <div class="labelList">
  389. <span class="labelItem" v-for="label in val.label">{{label}}</span>
  390. </div>
  391. <div>
  392. <div class="free" v-if="val.pay_type == 0 || val.pay_type == 2">免费</div>
  393. <div class="money" v-if="val.pay_type == 1 && val.is_pink == 0">¥<span>{{val.money}}</span></div>
  394. <div class="money" v-if="val.pay_type == 1 && val.is_pink > 0">¥<span>{{val.pink_money}}</span></div>
  395. <!--<div class="money" v-if="val.money > 0 && val.pay_type == 1 && item.type==0">-->
  396. <!--<span class="yen">¥</span>{{val.money}}-->
  397. <!--</div>-->
  398. <!--<div class="money" v-else-if="val.money > 0 && item.type==4">-->
  399. <!--<span class="yen">¥</span>{{val.money}}-->
  400. <!--</div>-->
  401. <!--<div class="free" v-else-if="item.type==0">免费</div>-->
  402. <div class="total" v-if="val.special_type!=4 && item.type==0">共{{ val.count }}节</div>
  403. <div class="total" v-else-if="item.type==4">已售{{ val.count }}件</div>
  404. </div>
  405. </div>
  406. </div>
  407. </a>
  408. </div>
  409. </div>
  410. <!-- 小图 -->
  411. <div v-if="item.typesetting == 3 && item.list.length" :key="index" class="interest">
  412. <div class="public_title acea-row row-between-wrapper">
  413. <div class="name" v-text="item.title"></div>
  414. <a class="more acea-row row-middle" :href="getNavHref(item)">查看更多<span
  415. class="knowledge iconxiangyou"></span></a>
  416. </div>
  417. <div class="public_list">
  418. <a class="item acea-row" v-for="val in item.list"
  419. :href="getDetails(item.type,val.link_id)">
  420. <div class="pictrue">
  421. <img :src="val.image">
  422. <div class="label">{{val.special_type_name}}</div>
  423. </div>
  424. <div class="text">
  425. <div class="title acea-row row-middle">
  426. <div class="name line1" v-text="val.title"></div>
  427. </div>
  428. <div class="labelList" style="height:.4rem;line-height:.4rem;">
  429. <span class="labelItem" v-for="label in val.label">{{label}}</span>
  430. </div>
  431. <div class="acea-row row-middle row-between" style="height:.45rem;" v-if="item.type==0">
  432. <div>
  433. <div class="free" v-if="val.pay_type == 0 || val.pay_type == 2">免费</div>
  434. <div class="money" v-if="val.pay_type == 1 && val.is_pink == 0">¥<span>{{val.money}}</span></div>
  435. <div class="money" v-if="val.pay_type == 1 && val.is_pink > 0">¥<span>{{val.pink_money}}</span></div>
  436. </div>
  437. <div class="total" v-if="val.special_type!=4">共{{ val.count }}节</div>
  438. <!--<div class="num">{{val.browse_count >= 1000 ? '1000+' : val.browse_count}}人已学习</div>-->
  439. </div>
  440. <div class="acea-row row-middle row-between" style="height:.45rem;" v-if="item.type==4">
  441. <div>
  442. <div class="money" v-if="val.money > 0">¥<span>{{val.money}}</span></div>
  443. <div class="free" v-else>免费</div>
  444. </div>
  445. <!--<div class="num">已售{{ val.count }}件</div>-->
  446. </div>
  447. </div>
  448. </a>
  449. </div>
  450. </div>
  451. <!-- 宫图 -->
  452. <div v-if="item.typesetting == 2 && item.list.length" :key="index" class="interest english">
  453. <div class="public_title acea-row row-between-wrapper">
  454. <div class="name" v-text="item.title"></div>
  455. <a class="more acea-row row-middle" :href="getNavHref(item)">查看更多<span
  456. class="knowledge iconxiangyou"></span></a>
  457. </div>
  458. <div class="list acea-row row-between-wrapper">
  459. <a class="item" v-for="val in item.list" :href="getDetails(item.type,val.link_id)">
  460. <div class="pictrue"><img :src="val.image"></div>
  461. <div class="text">
  462. <div class="title acea-row row-middle">
  463. <div class="name line1" v-text="val.title"></div>
  464. </div>
  465. <div class="label acea-row row-middle">
  466. <span class="cell" v-for="label in val.label">{{label}}</span>
  467. </div>
  468. <div class="group acea-row row-middle" v-if="item.type==0">
  469. <div class="free" v-if="val.pay_type == 0 || val.pay_type == 2">免费</div>
  470. <div class="money" v-if="val.pay_type == 1 && val.is_pink == 0">
  471. ¥<span class="num">{{val.money}}</span>
  472. </div>
  473. <div class="money" v-if="val.pay_type == 1 && val.is_pink > 0">
  474. ¥<span class="num">{{val.pink_money}}</span>
  475. </div>
  476. <div class="total" v-if="val.special_type!=4">共{{ val.count }}节</div>
  477. </div>
  478. <div class="group acea-row row-middle" v-if="item.type==4">
  479. <div class="free" v-if="val.money==0">免费</div>
  480. <div class="money" v-if="val.money > 0">
  481. ¥<span class="num">{{val.money}}</span>
  482. </div>
  483. <div class="total" >已售{{ val.count }}件</div>
  484. </div>
  485. </div>
  486. </a>
  487. </div>
  488. </div>
  489. </template>
  490. </template>
  491. <p class="loading-line">
  492. <span v-show="loading==true" class="fa fa-spinner loadingpic" style="font-size: 0.4rem"></span>
  493. </p>
  494. <!--关注二维码-->
  495. {if !$subscribe}
  496. <div class="mask" style="align-items:center;display: flex;" v-show="is_code" @click="is_code=false" v-cloak="">
  497. <img src="{$code_url}" alt="" style="width: 5rem;height: 5rem;margin: 0 auto;">
  498. </div>
  499. {/if}
  500. <div class="masks" style="align-items:center;display: flex;" v-show="is_live_one" v-cloak="">
  501. <div class="liveone" >
  502. <img src="{__WAP_PATH}zsff/images/close1.png" class="close" alt="" @click="clickLive(0,liveOne.id)">
  503. <img :src="liveOne.image" alt="" style="width: 100%;margin: 0 auto;">
  504. <div class="btn" @click="clickLive(1,liveOne.id)">看直播</div>
  505. </div>
  506. </div>
  507. <div style="height: 1.0rem"></div>
  508. {include file="public/store_menu"}
  509. </div>
  510. <script type="text/javascript">
  511. var banner = {$banner}, activity = {$activity}, liveOne={$liveOne};
  512. require(['vue', 'helper', 'store'], function (Vue, $h, storeApi) {
  513. new Vue({
  514. el: '#app',
  515. data: {
  516. liveOne: liveOne ? liveOne : {},
  517. swiperlist: banner,
  518. recommend: [],
  519. navList: [],
  520. loading: false,
  521. loadTitle: '',
  522. loadend: false,
  523. page: 1,
  524. limit: 10,
  525. is_code: false,
  526. activity: activity,
  527. activityOne: {},
  528. is_live_one: false,
  529. newsList: [],
  530. topFocus: true
  531. },
  532. created: function () {
  533. this.getNewsList();
  534. },
  535. mounted: function () {
  536. var that = this;
  537. var live_one = $.cookie('live_one');
  538. if (live_one != undefined && live_one != null) live_one = JSON.parse(live_one);
  539. if ($.isEmptyObject(that.liveOne) == true) {
  540. $.cookie('live_one', null);
  541. that.is_live_one = false;
  542. } else {
  543. if (live_one == undefined && live_one == null) { that.is_live_one = true; }
  544. else if (live_one.is_lives && live_one.id == that.liveOne.id) { that.is_live_one = false; }
  545. else if (live_one.id != that.liveOne.id) { that.is_live_one = true; }
  546. else { that.is_live_one = false; }
  547. }
  548. that.$nextTick(function () {
  549. new Swiper('#carousel', {
  550. speed: 1000,
  551. autoplay: 2500,
  552. spaceBetween: 20,
  553. autoplayDisableOnInteraction: false,
  554. pagination: '#carousel-pagination',
  555. paginationClickable: true,
  556. loop: true,
  557. observer: true,
  558. observeParents: true,
  559. onInit: function (swiper) {
  560. if (swiper.slides.length <= 3) {
  561. swiper.lockSwipes();
  562. }
  563. },
  564. onClick: function (swiper, event) {
  565. var url = event.target.dataset.url;
  566. if (url && url != '#') {
  567. location.href = url;
  568. }
  569. }
  570. });
  571. });
  572. if (this.activity.length) {
  573. var activityOne = this.activity.shift();
  574. that.$set(that, "activityOne", activityOne);
  575. }
  576. this.get_content_recommend();
  577. this.get_recommend();
  578. },
  579. methods: {
  580. // 获取新闻列表
  581. getNewsList: function () {
  582. var that = this;
  583. storeApi.baseGet($h.U({ c: 'article', a: 'get_unifiend_list' }), function (res) {
  584. that.newsList = res.data.data;
  585. that.$nextTick(function () {
  586. new Swiper('#news', {
  587. direction: "vertical",
  588. speed: 1000,
  589. autoplay: 2500,
  590. loop: true,
  591. observer: true,
  592. observeParents: true,
  593. autoplayDisableOnInteraction: false
  594. });
  595. });
  596. }, function (err) {
  597. $h.pushMsgOnce('获取失败');
  598. });
  599. },
  600. clickLive:function(type,id){
  601. this.is_live_one=false;
  602. var data={};
  603. data.is_lives=1;
  604. data.id=id;
  605. $.cookie('live_one', JSON.stringify(data), { expires: 1 });
  606. if(type){
  607. window.location.href=$h.U({c: 'special', a: 'details', q: {id: id}});
  608. }
  609. },
  610. activityDetails:function(id){
  611. return $h.U({c: 'special', a: 'activity_details', q: {id: id}});
  612. },
  613. getDetails: function (type, id) {
  614. switch (type) {
  615. case 0:
  616. case 2:
  617. return $h.U({c: 'special', a: 'details', q: {id: id}});
  618. break;
  619. case 1:
  620. return $h.U({c: 'article', a: 'details', q: {id: id}});
  621. break;
  622. case 4:
  623. return $h.U({c: 'store', a: 'detail', q: {id: id}});
  624. break;
  625. }
  626. },
  627. getNavHref: function (item, bo) {
  628. if (item.type == 3) {
  629. return item.link;
  630. }else if (item.type == 4) {
  631. return $h.U({ c: 'store', a: 'index'});
  632. } else {
  633. if (bo) {
  634. return $h.U({ c: 'special', a: 'special_cate', q: { cate_id: item.grade_id } });
  635. }
  636. return $h.U({
  637. c: 'index',
  638. a: 'unified_list',
  639. q: { type: item.type, title: item.title, recommend_id: item.id }
  640. });
  641. }
  642. },
  643. getActivityHref:function(){
  644. return $h.U({
  645. c: 'activity',
  646. a: 'index'
  647. });
  648. },
  649. get_recommend: function () {
  650. storeApi.baseGet($h.U({ c: 'index', a: 'get_recommend' }), function (res) {
  651. this.$set(this, 'navList', res.data.data);
  652. }.bind(this))
  653. },
  654. initSwiper: function () {
  655. var that = this;
  656. this.$nextTick(function () {
  657. var swiperScroll = new Swiper('.swiperScroll', {
  658. freeMode: true,
  659. freeModeMomentum: true,
  660. slidesPerView: "auto",
  661. observer: true,
  662. observeParents: true
  663. });
  664. for (var index in that.recommend) {
  665. if (that.recommend[index].typesetting == 4 && that.recommend[index].list.length) {
  666. var className = '.swiper-course-' + index;
  667. new Swiper(className, {
  668. pagination: '.swiper-pagination',
  669. speed: 1000,
  670. watchOverflow: true,
  671. paginationClickable: false,
  672. autoplayDisableOnInteraction: false,
  673. onSlideChangeStart: function (swiper) {
  674. var inx = $(className).data('index');
  675. that.$set(that.recommend[inx], 'courseIndex', swiper.activeIndex + 1);
  676. }
  677. });
  678. }
  679. }
  680. })
  681. },
  682. get_content_recommend: function () {
  683. if (this.loading) return;
  684. if (this.loadend) return;
  685. this.loadTitle = '';
  686. this.loading = true;
  687. storeApi.baseGet($h.U({
  688. c: 'index',
  689. a: 'get_content_recommend',
  690. q: { page: this.page, limit: this.limit }
  691. }), function (res) {
  692. var list = res.data.data.recommend;
  693. var recommend = $h.SplitArray(list, this.recommend);
  694. this.loading = false;
  695. this.page = res.data.data.page;
  696. this.loadend = list.length < this.limit;
  697. this.loadTitle = this.loadend ? '我是有底线的' : '上拉加载更多';
  698. this.$set(this, 'recommend', recommend);
  699. this.initSwiper();
  700. this.$nextTick(function () {
  701. new Swiper('#teacher', {
  702. slidesPerView: 'auto',
  703. spaceBetween: 10,
  704. slidesOffsetBefore: 10,
  705. slidesOffsetAfter: 10,
  706. observer: true,
  707. observeParents: true
  708. });
  709. });
  710. }.bind(this), function (res) {
  711. this.loadTitle = '加载更多';
  712. this.loading = false;
  713. }.bind(this));
  714. }
  715. }
  716. });
  717. })
  718. </script>
  719. {/block}