app.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447
  1. $(function(){
  2. preLoadingInit();
  3. getTableListData(appInit);
  4. getClassifyData(headerClassifyInit);
  5. headerSearchInit();
  6. })
  7. function preLoadingInit(){
  8. var clientHeight=$(window).height();
  9. var loadingheight=clientHeight-100;
  10. var text='<div style="height:'+loadingheight+'px;">'
  11. +'<div class="col-sm-2">'
  12. +'<div class="sp sp-circle"></div>'
  13. +'<h5 class="preloading">努力加载中...</h5>'
  14. +'</div>'
  15. +'</div>';
  16. $("#root").html(text);
  17. }
  18. function errorLoadingInit(){
  19. var clientHeight=$(window).height();
  20. var loadingheight=clientHeight-100;
  21. var text='<div style="height:'+loadingheight+'px;">'
  22. +'<div style="text-align:center;padding-top:25px;color:#606266;font-size:14px;">'
  23. +'出错了,请下滑刷新页面'
  24. +'</div>'
  25. +'</div>';
  26. $("#root").html(text);
  27. }
  28. function appInit(data){
  29. var text='';
  30. var len=data.length;
  31. for(var i=0;i<len;i++){
  32. var item=data[i];
  33. text+='<li id="'+item.spec_id+'" class="mui-table-view-cell animated fadeIn">'
  34. +'<div style="width:375px;">'
  35. +'<div class="listImageWrapper">'
  36. +'<img src="'+item.course_img+'" alt="" class="listImage"/>'
  37. +'</div>'
  38. +'<div class="listTitleWrapper">'
  39. +'<div class="listTitle">'
  40. +item.course_name
  41. +'</div>'
  42. +'<div class="teacherNameWrapper">'
  43. +'<div class="teacherName">'
  44. +item.teacher_name
  45. +'</div>'
  46. +'</div>'
  47. +'<div class="teacherSchoolWrapper">'
  48. +'<div class="teacherSchool">'
  49. +item.teacher_organization
  50. +'</div>'
  51. +'</div>'
  52. +'<div style="clear:both;"></div>'
  53. +'<div class="courseClickWrapper">'
  54. +'<div class="courseClick">浏览:'
  55. +item.click
  56. +'</div>'
  57. +'</div>'
  58. +'</div>'
  59. +'<div style="clear:both;"></div>'
  60. +'</div>'
  61. +'</li>'
  62. }
  63. $("#root").html(text);
  64. mui.init({
  65. pullRefresh : {
  66. container:refreshContainer,//待刷新区域标识,querySelector能定位的css选择器均可,比如:id、.class等
  67. down : {
  68. height:50,//可选,默认50.触发下拉刷新拖动距离,
  69. auto: false,//可选,默认false.首次加载自动下拉刷新一次
  70. contentdown : "下拉可以刷新",//可选,在下拉可刷新状态时,下拉刷新控件上显示的标题内容
  71. contentover : "释放立即刷新",//可选,在释放可刷新状态时,下拉刷新控件上显示的标题内容
  72. contentrefresh : "正在刷新...",//可选,正在刷新状态时,下拉刷新控件上显示的标题内容
  73. callback :function(){
  74. gobalData.listPage=1;
  75. var _this=this;
  76. setTimeout(function(){
  77. $("#root").empty();
  78. preLoadingInit();
  79. getTableListData(appInit);
  80. mui('#refreshContainer').pullRefresh().endPulldownToRefresh();
  81. },1500);
  82. }
  83. },
  84. up : {
  85. height:50,//可选.默认50.触发上拉加载拖动距离
  86. auto:false,//可选,默认false.自动上拉加载一次
  87. contentrefresh : "正在加载...",//可选,正在加载状态时,上拉加载控件上显示的标题内容
  88. contentnomore:'没有更多了',//可选,请求完毕若没有更多数据时显示的提醒内容;
  89. callback :function(){
  90. if(gobalData.listPage<gobalData.totalListPage){
  91. //mui('#refreshContainer').pullRefresh().refresh(true);
  92. gobalData.listPage=Number(gobalData.listPage)+1;
  93. var _this=this;
  94. setTimeout(function(){
  95. _this.endPullupToRefresh(false);
  96. getTableListData(insertMoreData);
  97. },1500);
  98. }else{
  99. var _this=this;
  100. setTimeout(function(){
  101. _this.endPullupToRefresh(true);
  102. //$("#noMore").show();
  103. },1500);
  104. }
  105. }
  106. }
  107. }
  108. });
  109. mui(".mui-table-view").on('tap','.mui-table-view-cell',function(){
  110. //获取id
  111. var id = this.getAttribute("id");
  112. //传值给详情页面,通知加载新数据
  113. //mui.fire(detail,'getDetail',{id:id});
  114. //打开新闻详情
  115. mui.openWindow({
  116. id:'detail',
  117. url:'detail.html?id='+id
  118. });
  119. })
  120. }
  121. function insertMoreData(data){
  122. var text='';
  123. var len=data.length;
  124. for(var i=0;i<len;i++){
  125. var item=data[i];
  126. text+='<li id="'+item.spec_id+'" class="mui-table-view-cell animated fadeIn">'
  127. +'<div style="width:375px;">'
  128. +'<div class="listImageWrapper">'
  129. +'<img src="'+item.course_img+'" alt="" class="listImage"/>'
  130. +'</div>'
  131. +'<div class="listTitleWrapper">'
  132. +'<div class="listTitle">'
  133. +item.course_name
  134. +'</div>'
  135. +'<div class="teacherNameWrapper">'
  136. +'<div class="teacherName">'
  137. +item.teacher_name
  138. +'</div>'
  139. +'</div>'
  140. +'<div class="teacherSchoolWrapper">'
  141. +'<div class="teacherSchool">'
  142. +item.teacher_organization
  143. +'</div>'
  144. +'</div>'
  145. +'<div style="clear:both;"></div>'
  146. +'<div class="courseClickWrapper">'
  147. +'<div class="courseClick">浏览:'
  148. +item.click
  149. +'</div>'
  150. +'</div>'
  151. +'</div>'
  152. +'<div style="clear:both;"></div>'
  153. +'</div>'
  154. +'</li>'
  155. }
  156. $("#root").append(text);
  157. }
  158. /**分类 */
  159. function headerClassifyInit(data){
  160. $("#headerClassify").on("tap",function(){
  161. $("#popularModel").hide();
  162. $("#cancelSearch").fadeOut();
  163. $("#root").show();
  164. $("#classifyContentModel").slideToggle();
  165. });
  166. $("#classifyContentModel").empty();
  167. var type_1_data=data.type1;
  168. gobalData.classifyType1=type_1_data;
  169. var type_1_text='';
  170. for(var i in type_1_data){
  171. var item1=type_1_data[i];
  172. type_1_text+='<div id="classify1_'+item1.id+'" class="headerClassifyContentItem" '
  173. +'onclick="handleClassify1Item(classify1_'+item1.id+')">'+item1.name+'</div>';
  174. }
  175. var type_2_data=data.type2;
  176. gobalData.classifyType2=type_2_data;
  177. var type_2_text='';
  178. for(var j in type_2_data){
  179. var item2=type_2_data[j];
  180. type_2_text+='<div id="classify2_'+item2.id+'" class="headerClassifyContentItem" '
  181. +'onclick="handleClassify1Item(classify2_'+item2.id+')">'+item2.name+'</div>';
  182. }
  183. var text='<div>'
  184. /**分类一 */
  185. +'<div style="padding-top:10px;padding-bottom:10px;">'
  186. +'<div class="headerClassifyContentTitle">分类一</div>'
  187. +'<div>'
  188. +type_1_text
  189. +'<div style="clear:both;"></div>'
  190. +'</div>'
  191. +'</div>'
  192. /**分类二 */
  193. +'<div style="padding-top:10px;padding-bottom:10px;">'
  194. +'<div class="headerClassifyContentTitle">分类二</div>'
  195. +'<div>'
  196. +type_2_text
  197. +'<div style="clear:both;"></div>'
  198. +'</div>'
  199. +'</div>'
  200. /**按钮 */
  201. +'<div style="width:355px;margin:0 auto;padding-top:15px;padding-bottom:20px;text-align:center;">'
  202. +'<button id="dealClasssifyBtn" type="button" class="mui-btn mui-btn-primary" '
  203. +'style="width:120px;border:solid #409EFF 1px;border-radius:3px;color:#fff;background:#409EFF;">完成</button>'
  204. +'</div>'
  205. +'</div>';
  206. $("#classifyContentModel").append(text);
  207. $("#dealClasssifyBtn").on("click",function(){
  208. gobalData.listPage=1;
  209. gobalData.totalListPage=0;
  210. $("#root").empty();
  211. $("#classifyContentModel").slideUp();
  212. getTableListData(appInit);
  213. $("#root").fadeIn();
  214. $("#popularModel").hide();
  215. $("#cancelSearch").fadeOut();
  216. });
  217. }
  218. function handleClassify1Item(target){
  219. var _id=target.id;
  220. if(_id && _id!=''){
  221. var tag=_id.indexOf("_");
  222. if(tag>=0){
  223. idArr=_id.split("_");
  224. var active_type=idArr[0];
  225. var active_id=idArr[1];
  226. if(active_type=='classify1'){
  227. var classifyData=gobalData.classifyType1;
  228. for(var i in classifyData){
  229. var item=classifyData[i];
  230. var idItem=item.id;
  231. if(idItem==active_id){
  232. if(idItem==gobalData.selectedType1){
  233. gobalData.selectedType1="";
  234. $("#classify1_"+idItem).removeClass("activeSelected");
  235. }else{
  236. gobalData.selectedType1=idItem;
  237. $("#classify1_"+idItem).addClass("activeSelected");
  238. }
  239. }else{
  240. $("#classify1_"+idItem).removeClass("activeSelected");
  241. }
  242. }
  243. }
  244. if(active_type=='classify2'){
  245. var classifyData=gobalData.classifyType2;
  246. for(var i in classifyData){
  247. var item=classifyData[i];
  248. var idItem=item.id;
  249. if(idItem==active_id){
  250. if(idItem==gobalData.selectedType2){
  251. gobalData.selectedType2="";
  252. $("#classify2_"+idItem).removeClass("activeSelected");
  253. }else{
  254. gobalData.selectedType2=idItem;
  255. $("#classify2_"+idItem).addClass("activeSelected");
  256. }
  257. }else{
  258. $("#classify2_"+idItem).removeClass("activeSelected");
  259. }
  260. }
  261. }
  262. }
  263. }
  264. }
  265. function headerSearchInit(){
  266. popularModelInit();
  267. //搜索框获得焦点
  268. $("#searchInput").on("focus",function(){
  269. $("#root").hide();
  270. $("#popularModel").fadeIn();
  271. $("#cancelSearch").fadeIn();
  272. });
  273. $("#cancelSearch").on("tap",function(){
  274. $("#popularModel").hide();
  275. $("#root").fadeIn();
  276. $("#cancelSearch").hide();
  277. });
  278. //点击搜索
  279. $("#searchIcon").on("tap",function(){
  280. var searchInputVal=$("#searchInput").val();
  281. var _searchInputVal=searchInputVal.trim();
  282. gobalData.activePopularRecommend="";
  283. gobalData.activePopularSearch="";
  284. gobalData.activeSearchVal=_searchInputVal;
  285. $("#popularModel").hide();
  286. $("#root").fadeIn();
  287. $("#cancelSearch").hide();
  288. gobalData.listPage=1;
  289. gobalData.totalListPage=0;
  290. $("#root").empty();
  291. getTableListData(appInit);
  292. });
  293. }
  294. function popularModelInit(){
  295. $("#popularModel").empty();
  296. var text='<div style="padding-bottom:20px;">'
  297. //热门推荐
  298. +'<div>'
  299. +'<div class="popularTitle">热门推荐</div>'
  300. +'<div id="popularRecommendModel" style="width:355px;margin:0 auto;">'
  301. +'</div>'
  302. +'</div>'
  303. //热门搜索
  304. +'<div>'
  305. +'<div class="popularTitle">热门搜索</div>'
  306. +'<div id="popularSearchModel" style="width:355px;margin:0 auto;">'
  307. +'</div>'
  308. +'</div>'
  309. +'</div>';
  310. $("#popularModel").append(text);
  311. getPopularRecommendData();
  312. getPopularSearchData();
  313. }
  314. /**获取热门标签数据 */
  315. function getPopularRecommendData(){
  316. $("#popularRecommendModel").empty();
  317. var totalURL=gobalData.link;
  318. var requestURL=totalURL.popular_recommend;
  319. $.ajax({
  320. url:requestURL,
  321. type:'POST',
  322. dataType:'json',
  323. data:{
  324. limit:10
  325. },
  326. success:function(res){
  327. if(res.code=="1"){
  328. var _data=res.data;
  329. var text='';
  330. var num=0;
  331. for(var i in _data){
  332. var _item=_data[i];
  333. var item=_item.trim();
  334. if(item && item!=''){
  335. num++;
  336. text+='<div id="popularRecommendItem_'+num+'" class="popularItem" '
  337. +'onclick="handlePopularRecomend(popularRecommendItem_'+num+')">'
  338. +item
  339. +'</div>';
  340. }
  341. }
  342. text+='<div style="clear:both;"></div>';
  343. $("#popularRecommendModel").append(text);
  344. }
  345. }
  346. });
  347. }
  348. function getPopularSearchData(){
  349. $("#popularSearchModel").empty();
  350. var totalURL=gobalData.link;
  351. var requestURL=totalURL.popular_search;
  352. $.ajax({
  353. url:requestURL,
  354. type:'POST',
  355. dataType:'json',
  356. data:{
  357. limit:10
  358. },
  359. success:function(res){
  360. if(res.code=="1"){
  361. var _data=res.data;
  362. var text='';
  363. var num=0;
  364. for(var i in _data){
  365. var _item=_data[i];
  366. var itemKeyword=_item.keyword.trim();
  367. if(itemKeyword && itemKeyword!=''){
  368. num++;
  369. text+='<div id="popularSearchItem_'+num+'" class="popularItem" '
  370. +'onclick="handlePopularSearch(popularSearchItem_'+num+')">'
  371. +itemKeyword
  372. +'</div>';
  373. }
  374. }
  375. text+='<div style="clear:both;"></div>';
  376. $("#popularSearchModel").append(text);
  377. }
  378. }
  379. });
  380. }
  381. function handlePopularRecomend(target){
  382. var _id=target.id;
  383. if(_id && _id!=''){
  384. var val=$("#"+_id).text();
  385. if(val && val!=''){
  386. gobalData.activePopularRecommend=val;
  387. gobalData.activePopularSearch="";
  388. gobalData.activeSearchVal="";
  389. $("#popularModel").hide();
  390. $("#root").fadeIn();
  391. $("#cancelSearch").fadeOut();
  392. gobalData.listPage=1;
  393. gobalData.totalListPage=0;
  394. gobalData.courseLoading = false;
  395. $("#root").empty();
  396. getTableListData(appInit);
  397. }
  398. }
  399. }
  400. function handlePopularSearch(target){
  401. var _id=target.id;
  402. if(_id && _id!=''){
  403. var val=$("#"+_id).text();
  404. if(val && val!=''){
  405. gobalData.activePopularRecommend="";
  406. gobalData.activePopularSearch=val;
  407. gobalData.activeSearchVal="";
  408. $("#popular").hide();
  409. $("#root").fadeIn();
  410. $("#cancelSearch").fadeOut();
  411. gobalData.listPage=1;
  412. gobalData.totalListPage=0;
  413. gobalData.courseLoading = false;
  414. $("#root").empty();
  415. getTableListData(appInit);
  416. }
  417. }
  418. }