app.js 17 KB

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