utils.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. /** iwb_admin-v1.1.0 MIT License By http://www.iwbnet.com e-mail:yueyy@iwbnet.com */
  2. ;/**
  3. * Name:utils.js
  4. * Author:Van
  5. * E-mail:yueyy@iwbnet.com
  6. * Website:http://www.iwbnet.com
  7. * LICENSE:MIT
  8. */
  9. layui.define(['layer'], function (exports) {
  10. var $ = layui.jquery,
  11. layer = layui.layer,
  12. modName = 'utils';
  13. var utils = {
  14. v: '1.0.3',
  15. /**
  16. * 根据一个html内容读取出body标签里的文本
  17. */
  18. getBodyContent: function (content) {
  19. var regBody = /<body[^>]*>([\s\S]*)<\/body>/,
  20. result = regBody.exec(content);
  21. if (result && result.length === 2)
  22. return result[1];
  23. return content;
  24. },
  25. /**
  26. * 读取html字符串
  27. */
  28. loadHtml: function (url, callback) {
  29. var result;
  30. $.ajax({
  31. url: url,
  32. async: false,
  33. dataType: 'html',
  34. beforeSend: function (request) {
  35. request.setRequestHeader("IsGetHtml", 'true');
  36. },
  37. error: function (xhr, err, msg) {
  38. var m = ['<div style="padding: 20px;font-size: 20px;text-align:left;color:#009688;">',
  39. '<p>{{msg}} >>> ' + url + '</p>',
  40. '</div>'
  41. ].join('');
  42. if (xhr.status === 404) {
  43. result = m.replace('{{msg}}', '<i class="layui-icon" style="font-size:70px;">&#xe61c;</i> ' + msg);
  44. return;
  45. }
  46. result = m.replace('{{msg}}', '<i class="layui-icon" style="font-size:70px;">&#xe69c;</i> 未知错误.');
  47. },
  48. success: function (res) {
  49. result = res;
  50. },
  51. complete: function () {
  52. typeof callback === 'function' && callback();
  53. }
  54. });
  55. return result;
  56. },
  57. /**
  58. * 加载等待层
  59. */
  60. load: function (type) {
  61. type = type || 0;
  62. return layer.load(type, { shade: [0.3, '#333'] });
  63. },
  64. /**
  65. * ajax post
  66. */
  67. post: function (url, params, callback, options) {
  68. var defaults = {
  69. error: function (xhr, err, msg) {
  70. console.log('发生错误了..');
  71. console.log(xhr);
  72. console.log(err);
  73. console.log(msg);
  74. },
  75. complete: function (xhr, statusCode) {
  76. console.log('complete.' + statusCode);
  77. }
  78. };
  79. $.extend(true, defaults, options);
  80. $.ajax({
  81. url: url,
  82. beforeSend: function (request) {
  83. request.setRequestHeader("IsAjax", 'true');
  84. },
  85. dataType: 'json',
  86. method: 'POST',
  87. data: params,
  88. error: function (xhr, err, msg) {
  89. defaults.error(xhr, err, msg);
  90. },
  91. success: function (res) {
  92. if (res.code === 101) {
  93. layer.alert(res.msg, {
  94. icon: 2,
  95. title: '系统提示',
  96. cancel: function (index, layero) {
  97. top.location.href = location.origin + '/Account/Login';
  98. }
  99. }, function () {
  100. top.location.href = location.origin + '/Account/Login';
  101. });
  102. } else {
  103. callback(res);
  104. }
  105. },
  106. complete: function (xhr, statusCode) {
  107. defaults.complete(xhr, statusCode);
  108. }
  109. });
  110. },
  111. /**
  112. * ajax get
  113. */
  114. get: function (url, params, callback, options) {
  115. var defaults = {
  116. error: function (xhr, err, msg) {
  117. console.log('发生错误了..');
  118. console.log(xhr);
  119. console.log(err);
  120. console.log(msg);
  121. },
  122. complete: function (xhr, statusCode) {
  123. console.log('complete.' + statusCode);
  124. }
  125. };
  126. $.extend(true, defaults, options);
  127. $.ajax({
  128. url: url,
  129. beforeSend: function (request) {
  130. request.setRequestHeader("IsAjax", 'true');
  131. },
  132. dataType: 'json',
  133. method: 'GET',
  134. data: params,
  135. error: function (xhr, err, msg) {
  136. defaults.error(xhr, err, msg);
  137. },
  138. success: function (res) {
  139. if (res.code === 101) {
  140. layer.alert(res.msg, {
  141. icon: 2,
  142. title: '系统提示',
  143. cancel: function () {
  144. top.location.href = location.origin + '/Account/Login';
  145. }
  146. }, function () {
  147. top.location.href = location.origin + '/Account/Login';
  148. });
  149. } else {
  150. callback(res);
  151. }
  152. },
  153. complete: function (xhr, statusCode) {
  154. defaults.complete(xhr, statusCode);
  155. }
  156. });
  157. },
  158. keyWordHighlight: function (o, flag, rndColor, url) {
  159. /// <summary>
  160. /// 使用 javascript HTML DOM 高亮显示页面特定字词.
  161. /// 实例:
  162. /// keyWordHighlight(document.body, '纸伞|她');
  163. /// 这里的body是指高亮body里面的内容。
  164. /// keyWordHighlight(document.body, '希望|愁怨', false, '/');
  165. /// keyWordHighlight(document.getElementById('at_main'), '独自|飘过|悠长', true, 'search.asp?keyword=');
  166. /// 这里的'at_main'是指高亮id='at_main'的div里面的内容。search.asp?keyword=指给关键字加的链接地址,
  167. /// 我这里加了一个参数,在后面要用到。可以是任意的地址。
  168. /// </summary>
  169. /// <param name="o" type="Object">
  170. /// 对象, 要进行高亮显示的对象.
  171. /// </param>
  172. /// <param name="flag" type="String">
  173. /// 字符串, 要进行高亮的词或多个词, 使用 竖杠(|) 分隔多个词 .
  174. /// </param>
  175. /// <param name="rndColor" type="Boolean">
  176. /// 布尔值, 是否随机显示文字背景色与文字颜色, true 表示随机显示.
  177. /// </param>
  178. /// <param name="url" type="String">
  179. /// URI, 是否对高亮的词添加链接.
  180. /// </param>
  181. /// <return></return>
  182. var fgCor;
  183. var bgCor = fgCor = '';
  184. if (rndColor) {
  185. bgCor = fRndCor(10, 20);
  186. fgCor = fRndCor(230, 255);
  187. } else {
  188. bgCor = 'transparent'; //背景色
  189. fgCor = 'red'; //字体颜色
  190. }
  191. var re = new RegExp(flag, 'i');
  192. for (var i = 0; i < o.childNodes.length; i++) {
  193. var o_ = o.childNodes[i];
  194. var o_p = o_.parentNode;
  195. if (o_.nodeType == 1) {
  196. this.keyWordHighlight(o_, flag, rndColor, url);
  197. } else if (o_.nodeType == 3) {
  198. if (!(o_p.nodeName == 'A')) {
  199. if (o_.data.search(re) == -1) continue;
  200. var temp = fEleA(o_.data, flag);
  201. o_p.replaceChild(temp, o_);
  202. }
  203. }
  204. }
  205. //------------------------------------------------
  206. function fEleA(text, flag) {
  207. var style = ' style="background-color:' + bgCor + ';color:' + fgCor + ';" ';
  208. var o = document.createElement('span');
  209. var str = '';
  210. var re = new RegExp('(' + flag + ')', 'gi');
  211. if (url) {
  212. str = text.replace(re, '<a href="' + url +
  213. '$1"' + style + '>$1</a>'); //这里是给关键字加链接,红色的$1是指上面链接地址后的具体参数。
  214. } else {
  215. str = text.replace(re, '<span ' + style + '>$1</span>'); //不加链接时显示
  216. }
  217. o.innerHTML = str;
  218. return o;
  219. }
  220. //------------------------------------------------
  221. function fRndCor(under, over) {
  222. if (arguments.length == 1) {
  223. var over = under;
  224. under = 0;
  225. } else if (arguments.length == 0) {
  226. var under = 0;
  227. var over = 255;
  228. }
  229. var r = fRandomBy(under, over).toString(16);
  230. r = padNum(r, r, 2);
  231. var g = fRandomBy(under, over).toString(16);
  232. g = padNum(g, g, 2);
  233. var b = fRandomBy(under, over).toString(16);
  234. b = padNum(b, b, 2);
  235. //defaultStatus=r+' '+g+' '+b
  236. return '#' + r + g + b;
  237. function fRandomBy(under, over) {
  238. switch (arguments.length) {
  239. case 1:
  240. return parseInt(Math.random() * under + 1);
  241. case 2:
  242. return parseInt(Math.random() * (over - under + 1) + under);
  243. default:
  244. return 0;
  245. }
  246. }
  247. function padNum(str, num, len) {
  248. var temp = ''
  249. for (var i = 0; i < len; temp += num, i++);
  250. return temp = (temp += str).substr(temp.length - len);
  251. }
  252. }
  253. }
  254. };
  255. exports('utils', utils);
  256. });