colleges_list.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. $(function () {
  2. var currentPage = 1, totalPage = 1, _data = { currentPage }, lock = true;
  3. const globalData = {
  4. types: [
  5. {
  6. name: '院校所在地', key: "location", value: [{ "key": 1, "name": "全部" }, { "key": 2, "name": "北京" }, { "key": 22, "name": "天津" }, { "key": 43, "name": "上海" }, { "key": 64, "name": "重庆" }, { "key": 106, "name": "河北" }, { "key": 291, "name": "山西" }, { "key": 425, "name": "台湾" }, { "key": 433, "name": "辽宁" }, { "key": 550, "name": "吉林" }, { "key": 620, "name": "黑龙江" }, { "key": 766, "name": "江苏" }, { "key": 886, "name": "浙江" }, { "key": 989, "name": "安徽" }, { "key": 1111, "name": "福建" }, { "key": 1206, "name": "江西" }, { "key": 1318, "name": "山东" }, { "key": 1476, "name": "河南" }, { "key": 1655, "name": "湖北" }, { "key": 1776, "name": "湖南" }, { "key": 1914, "name": "广东" }, { "key": 2064, "name": "甘肃" }, { "key": 2167, "name": "四川" }, { "key": 2371, "name": "贵州" }, { "key": 2470, "name": "海南" }, { "key": 2509, "name": "云南" }, { "key": 2657, "name": "青海" }, { "key": 2709, "name": "陕西" }, { "key": 2828, "name": "广西" }, { "key": 2954, "name": "西藏" }, { "key": 3035, "name": "宁夏" }, { "key": 3062, "name": "新疆" }, { "key": 3182, "name": "内蒙古" }, { "key": 3297, "name": "澳门" }, { "key": 3299, "name": "香港" }
  7. ]
  8. },
  9. {
  10. name: "院校类型",
  11. key: "category",
  12. value: [
  13. { name: "全部", key: 1 },
  14. { name: "综合", key: 2 },
  15. { name: "工科", key: 3 },
  16. { name: "农业", key: 4 },
  17. { name: "林业", key: 5 },
  18. { name: "医药", key: 6 },
  19. { name: "师范", key: 7 },
  20. { name: "语言", key: 8 },
  21. { name: "财经", key: 9 },
  22. { name: "政法", key: 10 },
  23. { name: "体育", key: 11 },
  24. { name: "艺术", key: 12 },
  25. { name: "民族", key: 13 },
  26. ]
  27. },
  28. {
  29. name: "学历层次", key: "level", value: [
  30. { name: "全部", key: 1 },
  31. { name: "本科", key: 2 },
  32. { name: "高职(专科)", key: 3 }
  33. ]
  34. }
  35. ],
  36. typeChoose: {
  37. location: 1,
  38. category: 1,
  39. level: 1
  40. },
  41. _typeChoose: {}
  42. }
  43. var typesDom = globalData.types.map(item => `
  44. <div class="types-row">
  45. <div class="types-cell">${item.name}</div>
  46. <div data-key=${item.key} class="types-cell">
  47. ${item.value.map(it => `<a data-key=${it.key} data-name=${it.name} class="types-item ${globalData["typeChoose"][item.key] == it.key ? "checked" : ''}">${it.name}</a>`).join("")
  48. }
  49. </div>
  50. </div>
  51. `)
  52. // 请求
  53. function init (data) {
  54. currentPage = 1, totalPage = 1;
  55. _data = { ...data, currentPage };
  56. $(".my-loading").html("加载中......");
  57. requestFunc(_data).then(res => {
  58. lock = true; $("#loading").hide(); totalPage = res; currentPage++; $(".my-loading").hide();
  59. });
  60. }
  61. // 查询
  62. $(".search>.button").click(function () {
  63. var value = $(this).prev().children("input").val().trim();
  64. init({ name: value })
  65. })
  66. // types 选中
  67. function checkedFunc (fatherElem, childElem) {
  68. fatherElem.children().removeClass("checked");
  69. childElem.addClass('checked');
  70. init(globalData["_typeChoose"])
  71. }
  72. // types 选择
  73. function typesFunc () {
  74. var clickDoms = $(".types>.types-row>.types-cell:last-child");
  75. clickDoms.click(function (e) {
  76. let that = this, child = e.target;
  77. function init () {
  78. let key = $(that).data('key');
  79. let childKey = $(child).data('key');
  80. globalData['typeChoose'][key] = childKey;
  81. globalData['_typeChoose'][key] = $(child).data('name') == "全部" ? '' : $(child).data('name');
  82. checkedFunc($(that), $(child));
  83. }
  84. if (child.className.trim() == "types-item") init();
  85. })
  86. }
  87. // types 下拉
  88. function slFunc () {
  89. var clickDoms = $(".types>.types-row>.types-cell:first-child");
  90. clickDoms.click(function () {
  91. if ($(window).width() >= 768) return false;
  92. if ($(this).next()[0].className == "types-cell active") {
  93. $(this).next().removeClass("active");
  94. return false;
  95. }
  96. $(this).parent().siblings().children(".types-cell:last-child").removeClass("active")
  97. $(this).next().addClass("active");
  98. let that = this;
  99. $(this).parent().mouseleave(function () {
  100. $(that).next().removeClass("active");
  101. })
  102. })
  103. }
  104. // 最后执行
  105. $(document).ready(function () {
  106. $(".types").append(typesDom.join(""));
  107. typesFunc();
  108. slFunc();
  109. })
  110. // 上拉加载
  111. // 可见区域高度
  112. var ch = document.documentElement.clientHeight || document.body.clientHeight;
  113. init();
  114. $(window).scroll(function () {
  115. // 滑动区高度
  116. let sh = document.documentElement.scrollHeight || document.body.scrollHeight;
  117. // 滑动位置
  118. let st = document.documentElement.scrollTop || document.body.scrollTop;
  119. let c = sh * 1 - ch * 1 - st * 1
  120. if (c == 0 && currentPage <= totalPage && lock) {
  121. $(".my-loading").html("加载中......").show();
  122. _data.currentPage = currentPage;
  123. requestFunc(_data).then(res => { lock = true; $("#loading").hide(); totalPage = res; currentPage++; _data.currentPage = currentPage; $(".my-loading").hide(); })
  124. }
  125. if (c == 0 && currentPage > totalPage) {
  126. $(".my-loading").html("已经没有可以加载的数据了").show();
  127. }
  128. })
  129. // 请求高校列表
  130. function requestFunc (data) {
  131. lock = false;
  132. $("#loading").show()
  133. return new Promise((resolve, reject) => {
  134. $.ajax({
  135. url: "http://192.168.2.45:8033/colleges/list/",
  136. data: {
  137. ...data,
  138. pageSize: 10
  139. },
  140. type: "get",
  141. error: function (error) {
  142. lock = true;
  143. $("#loading").hide();
  144. $(".my-loading").html("加载失败").show();
  145. },
  146. success: function (res) {
  147. let { totalPage, dataList } = res.data;
  148. let father = document.createDocumentFragment();
  149. Array.from(dataList).forEach(item => {
  150. let str = `<a targert="_blank"
  151. href="http://www.gaokaoapp.net/colleges/${item.id}.html"
  152. class="item">
  153. <div class="item-img">
  154. <img data-original="${item.logo}" src="../imgs/app.png" alt="${item.name}">
  155. </div>
  156. <div class="item-desc">
  157. <p class="item-desc-name">${item.name}</p>
  158. <p class="item-desc-z">
  159. <span>院校类型:${item.category}</span>
  160. <span>学历层次:${item.level}</span>
  161. <span>院校所在地:${item.location}</span>
  162. </p>
  163. <p class="item-desc-desc">学校特色: ${item.characteristics}</p>
  164. </div>
  165. </a>
  166. `;
  167. $(father).append(str)
  168. })
  169. if (data.currentPage == 1) $(".school_list").find(".item").remove();
  170. $(".school_list>.my-loading").before(father)
  171. if (data.currentPage == 1 && dataList.length == 0) {
  172. $(".my-loading").html("暂无数据").show();
  173. lock = true;
  174. $("#loading").hide();
  175. return false;
  176. }
  177. $("img").lazyload();
  178. resolve(totalPage)
  179. }
  180. })
  181. })
  182. }
  183. })