You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Index.js 13 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. 
  2. $(function () {
  3. "use strict";
  4. $.fn.SiteCarousel = function (options) {
  5. //默认配置
  6. var defaults = {
  7. speed: 4000, //滚动速度,值越大速度越慢
  8. rowHeight: 47 //每行的高度
  9. };
  10. var opts = $.extend({}, defaults, options), intId;
  11. function marquee(obj, step, callback) {
  12. obj.find("ul").animate({
  13. marginTop: '-=' + step
  14. }, 300, function () {
  15. $(this).find("li").slice(0, 1).appendTo($(this));
  16. $(this).css("margin-top", 0);
  17. callback();
  18. });
  19. }
  20. this.each(function (i) {
  21. var sh = opts["rowHeight"], speed = opts["speed"], _this = $(this);
  22. var _fn = function (flag) {
  23. if (flag) {
  24. clearInterval(intId);
  25. intId = setTimeout(_fn, speed);
  26. }
  27. else {
  28. if (_this.find("ul").height() > _this.height()) {
  29. marquee(_this, sh, function () {
  30. clearInterval(intId);
  31. intId = setTimeout(_fn, speed);
  32. });
  33. }
  34. }
  35. };
  36. _fn(true);
  37. _this.hover(function () {
  38. if (intId) {
  39. clearInterval(intId);
  40. }
  41. }, function () {
  42. _fn(true);
  43. });
  44. });
  45. };
  46. var formatDate = function (v, format) {
  47. if (!v) return "";
  48. var d = v;
  49. if (typeof v === 'string') {
  50. if (v.indexOf("/Date(") > -1)
  51. d = new Date(parseInt(v.replace("/Date(", "").replace(")/", ""), 10));
  52. else
  53. d = new Date(Date.parse(v.replace(/-/g, "/").replace("T", " ").split(".")[0]));//.split(".")[0] 用来处理出现毫秒的情况,截取掉.xxx,否则会出错
  54. }
  55. var o = {
  56. "M+": d.getMonth() + 1, //month
  57. "d+": d.getDate(), //day
  58. "h+": d.getHours(), //hour
  59. "m+": d.getMinutes(), //minute
  60. "s+": d.getSeconds(), //second
  61. "q+": Math.floor((d.getMonth() + 3) / 3), //quarter
  62. "S": d.getMilliseconds() //millisecond
  63. };
  64. if (/(y+)/.test(format)) {
  65. format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
  66. }
  67. for (var k in o) {
  68. if (new RegExp("(" + k + ")").test(format)) {
  69. format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
  70. }
  71. }
  72. return format;
  73. };
  74. /*模块3标签页切换*/
  75. $('.lr-site-modules').on('click', '.lr-site-tab', function () {
  76. var $this = $(this);
  77. if (!$this.hasClass('active')) {
  78. var $parent = $this.parent();
  79. $parent.find('.active').removeClass('active');
  80. $this.addClass('active');
  81. var value = $this.attr('data-value');
  82. $parent.next().find('.active').removeClass('active');
  83. $parent.next().find('[data-value="' + value + '"]').addClass('active');
  84. }
  85. });
  86. $('.lr-site-modules').on('click', '.lr-site-more', function () {
  87. var $this = $(this);
  88. var data = $this.parents('.lr-site-module')[0].data;
  89. if (data.F_Url) {
  90. window.location.href = $.rootUrl + '/Home/ChildIndex?id=' + data.F_Url + '&module=' + escape(data.F_Name);
  91. }
  92. });
  93. $('.lr-site-modules').on('click', '.lr-site-article-list-item', function () {
  94. var data = $(this)[0].data;
  95. window.open($.rootUrl + '/Home/DetailIndex?id=' + data.F_Id);
  96. return false;
  97. });
  98. var renderModule = function (data) {
  99. var schemeObj = JSON.parse(data.F_Scheme);
  100. var $item;
  101. var $list = $('.lr-site-modules');
  102. switch (schemeObj.type) {
  103. case '1':// 风格一
  104. $item = $('<div class="lr-site-module module1">\
  105. <div class="lr-site-box">\
  106. <div class="title">\
  107. <i class="fa fa-volume-down"></i>\
  108. <span class="name" >' + data.F_Name + '</span>\
  109. <span class="arrow"></span>\
  110. </div>\
  111. <div class="content">\
  112. <ul>\
  113. </ul>\
  114. </div>\
  115. <div class="lr-site-more">' + (data.F_Url ? '更多' : '') + '</div>\
  116. </div>\
  117. </div>');
  118. $item.find('.content').SiteCarousel();
  119. var $ul = $item.find('ul');
  120. $ul.html('');
  121. $.each(schemeObj.list, function (_index, _item) {
  122. var _$li = $('<li><a href="javascript:void(0);" class="lr-text-item lr-site-article-list-item">' + _item.F_Title + '</a></li>');
  123. _$li[0].data = _item;
  124. $ul.append(_$li);
  125. });
  126. $list.append($item);
  127. break;
  128. case '2':
  129. $item = $('<div class="lr-site-module module2" data-value="' + data.F_Id + '" >\
  130. <div class="lr-site-box">\
  131. <div class="lr-site-title"><span class="name" >' + data.F_Name + '</span><div class="lr-site-more">' + (data.F_Url ? '更多' : '') + '</div></div>\
  132. <div class="lr-site-body">\
  133. <div class="lr-site-module-pic">\
  134. <div class="lr-site-module-swiper-container swiper-container">\
  135. <div class="swiper-wrapper">\
  136. </div>\
  137. <div class="swiper-pagination"></div>\
  138. </div>\
  139. </div>\
  140. <div class="lr-site-module-list">\
  141. </div>\
  142. </div>\
  143. </div>\
  144. </div>');
  145. $list.append($item);
  146. $item[0].swiper = new Swiper('[data-value="' + data.F_Id + '"] .lr-site-module-swiper-container', {
  147. direction: 'horizontal',
  148. autoplay: true,
  149. loop: true,
  150. speed: 600,
  151. // 分页器
  152. pagination: {
  153. el: '.swiper-pagination',
  154. clickable: true
  155. },
  156. });
  157. $item.css({ width: parseFloat(schemeObj.prop) * 100 + '%' });
  158. // 加载图片
  159. if (schemeObj.list1.length == 0) {
  160. $item.addClass('noimg');
  161. }
  162. else {
  163. $item.removeClass('noimg');
  164. var $swrapper = $item.find('.swiper-wrapper');
  165. $swrapper.html('');
  166. $.each(schemeObj.list1, function (_index, _item) {
  167. var $li = $('<div class="swiper-slide lr-site-article-list-item">\
  168. <img class="img" src="' + top.$.rootUrl + '/Home/GetArticleImg?keyValue=' + _item.F_Id + '" />\
  169. </div>');
  170. $li[0].data = _item;
  171. $swrapper.append($li);
  172. });
  173. $item[0].swiper.update();
  174. }
  175. // 加载文字列表
  176. var $textList = $item.find('.lr-site-module-list');
  177. $textList.html('');
  178. $.each(schemeObj.list2, function (_index, _item) {
  179. var $li = $('<div class="lr-site-module-item lr-site-article-list-item">\
  180. <div class="text">'+ _item.F_Title + '</div>\
  181. <div class="date">' + formatDate(_item.F_PushDate, 'yyyy-MM-dd') + '</div>\
  182. </div>');
  183. $li[0].data = _item;
  184. $textList.append($li);
  185. });
  186. break;
  187. case '3':
  188. $item = $('<div class="lr-site-module module3" data-value="' + data.F_Id + '" >\
  189. <div class="lr-site-box">\
  190. <div class="lr-site-tabs"></div>\
  191. <div class="lr-site-body">\
  192. </div>\
  193. </div>\
  194. </div>');
  195. $list.append($item);
  196. $item.css({ width: parseFloat(schemeObj.prop) * 100 + '%' });
  197. var tabList = $item.find('.lr-site-tabs');
  198. var tabBody = $item.find('.lr-site-body');
  199. tabList.html('');
  200. tabBody.html('');
  201. $.each(schemeObj.list, function (_index, _item) {
  202. var $li = $('<div class="lr-site-tab" data-value="' + _index + '">' + _item.name + '</div>');
  203. tabList.append($li);
  204. var $tabContent = $('<div class="lr-site-tab-content" data-value="' + _index + '"></div>')
  205. $.each(_item.list, function (_jindex, _jitem) {
  206. var _$jli = $('<div class="lr-site-tab-content-item lr-site-article-list-item">' + _jitem.F_Title + '</div>');
  207. _$jli[0].data = _jitem;
  208. $tabContent.append(_$jli);
  209. });
  210. tabBody.append($tabContent);
  211. if (_index == 0) {
  212. $li.trigger('click');
  213. }
  214. });
  215. break;
  216. case '4':
  217. $item = $('<div class="lr-site-module module4" data-value="' + data.F_Id + '" >\
  218. <div class="lr-site-box">\
  219. <div class="lr-site-title"><span class="name" >' + data.F_Name + '</span><div class="lr-site-more">' + (data.F_Url ? '更多' : '') + '</div></div>\
  220. <div class="lr-site-body">\
  221. </div>\
  222. </div>\
  223. </div>');
  224. $list.append($item);
  225. var $body = $item.find('.lr-site-body');
  226. $body.html('');
  227. $.each(schemeObj.list, function (_index, _item) {
  228. var _$li = $('<div class="lr-site-img-item lr-site-article-list-item">\
  229. <div class="lr-site-img-item-content">\
  230. <img class="img" src="' + $.rootUrl + '/Home/GetArticleImg?keyValue=' + _item.F_Id + '" />\
  231. <div class="text">' + _item.F_Title + '</div>\
  232. </div>\
  233. </div>');
  234. _$li[0].data = _item;
  235. $body.append(_$li);
  236. });
  237. break;
  238. case '5':
  239. $item = $('<div class="lr-site-module module5" data-value="' + data.F_Id + '" >\
  240. <div class="lr-site-box lr-site-article-list-item">\
  241. <div class="lr-site-title"><span class="name" >' + data.F_Name + '</span></div>\
  242. <div class="lr-site-body">\
  243. <div class="lr-site-article-pic">\
  244. <img class="img" src="' + $.rootUrl + '/Home/GetArticleImg?keyValue=' + schemeObj.article + '" />\
  245. </div>\
  246. <div class="text-content">\
  247. <div class="text" data-text="' + schemeObj.article + '" ></div>\
  248. </div>\
  249. </div>\
  250. </div>\
  251. </div>');
  252. $list.append($item);
  253. $item.find('.lr-site-box')[0].data = { F_Id: schemeObj.article };
  254. $item.css({ width: parseFloat(schemeObj.prop) * 100 + '%' });
  255. httpGet($.rootUrl + '/Home/GetArticle?keyValue=' + schemeObj.article, function (res) {
  256. if (res && res.code == 200) {
  257. var data = res.data;
  258. var text = $('<div></div>').html(data.F_Content).text().substring(0, 106) || '';
  259. if (text.length == 106) {
  260. text = text.substring(0, 105) + '...';
  261. }
  262. $('.module5 [data-text="' + data.F_Id + '"]').text(text);
  263. }
  264. });
  265. break;
  266. }
  267. $item[0].data = data;
  268. }
  269. httpGet($.rootUrl + '/Home/GetList?type=9', function (res) {
  270. if (res && res.code == 200) {
  271. $.each(res.data, function (_index, _item) {
  272. renderModule(_item);
  273. });
  274. }
  275. });
  276. });