index.html 38 KB

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