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.

tool.js 13 KiB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. (function(wd) {
  2. /**
  3. * @description js工具类,内置常用方法以及基本配置
  4. * */
  5. $$ = {
  6. base_api: "http://wxtest/zzcx/", //接口地址
  7. v: "2.2", //版本号
  8. version: "version=2.2",
  9. logCount: 0, //打印的次数
  10. infoApiError: "服务器开小差了,请联系技术部相关人员",
  11. infoNotLogin: "您还没有登录,点击确定前往登录页面",
  12. /**
  13. * @param {Function} function
  14. * @param {Number} time
  15. * @description 延迟函数
  16. * */
  17. delay: (function() {
  18. var timer = 0;
  19. return function(callback, time) {
  20. clearTimeout(timer);
  21. timer = setTimeout(callback, time);
  22. };
  23. })(),
  24. /**
  25. * @description 得到uuid
  26. */
  27. getUUID: function() {
  28. var d = new Date().getTime();
  29. var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  30. var r = (d + Math.random() * 16) % 16 | 0;
  31. d = Math.floor(d / 16);
  32. return(c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
  33. });
  34. return uuid;
  35. },
  36. /**
  37. * @param {Number}
  38. * @description 得到随机字符串
  39. * */
  40. getRdStr: function(len) {
  41. len = len || 1;
  42. var rdmString = "";
  43. for(; rdmString.length < len; rdmString += Math.random().toString(36).substr(2));
  44. return rdmString.substr(0, len);
  45. },
  46. /**
  47. * @param {Element} element
  48. * @param {String} type
  49. * @param {Event} handler
  50. * @description 添加监听
  51. * */
  52. addHandler: function(element, type, handler) {
  53. if(element.addEventListener) {
  54. element.addEventListener(type, handler, false);
  55. } else if(element.attachEvent) {
  56. element.attachEvent("on" + type, handler);
  57. } else {
  58. element["on" + type] = handler;
  59. }
  60. },
  61. /**description 自定义打印日志*/
  62. ZZLog: function() {
  63. var isLog = true; //是否打印
  64. var isSign = false; //是否签名
  65. if(isLog) {
  66. this.logCount++;
  67. console.group("第" + this.logCount + "次打印");
  68. if(isSign) {
  69. //如果要加前缀
  70. var args = Array.prototype.slice.call(arguments);
  71. args.unshift('[ZZCX:DeBug:Log]');
  72. console.log.apply(console, args);
  73. } else {
  74. console.log.apply(console, arguments);
  75. }
  76. }
  77. console.groupEnd();
  78. //ES6
  79. /*
  80. * // 打印日志
  81. //function ZZLog(...type) {
  82. // var isLog = true; //是否打印
  83. // if(isLog) {
  84. // type.forEach(v => {
  85. // if(typeof(v) == 'object') {
  86. // console.log(v);
  87. // } else {
  88. // console.log('%c' + v, 'color:#666699');
  89. // }
  90. // })
  91. // }
  92. //}
  93. *
  94. */
  95. },
  96. /**
  97. * @param {Object} arrObj []
  98. * @description 自定义打印table arrObj必须是数组且成员是object
  99. */
  100. ZZLogTable: function(arrObj) {
  101. this.logCount++;
  102. console.group("第" + this.logCount + "次打印");
  103. console.table(arrObj);
  104. console.groupEnd();
  105. },
  106. /**
  107. * @param {String} par
  108. * @description 从URL上获得参数
  109. */
  110. getPar: function(par) {
  111. //获取当前URL
  112. var local_url = document.location.href;
  113. local_url = decodeURI(local_url);
  114. //获取要取得的get参数位置
  115. var get = local_url.indexOf(par + "=");
  116. if(get == -1) {
  117. return "";
  118. }
  119. //截取字符串
  120. var get_par = local_url.slice(par.length + get + 1);
  121. //判断截取后的字符串是否还有其他get参数
  122. var nextPar = get_par.indexOf("&");
  123. if(nextPar != -1) {
  124. get_par = get_par.slice(0, nextPar);
  125. }
  126. return get_par;
  127. },
  128. /**
  129. * @param {String} name
  130. * @param {String} value
  131. * @param {String} time
  132. * @description 设置cookie eg:time='d30|s30|h24'
  133. * */
  134. setCookie: function(name, value, time) {
  135. var strsec = getsec(time);
  136. var exp = new Date();
  137. exp.setTime(exp.getTime() + strsec * 1);
  138. document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString();
  139. function getsec(str) {
  140. var str1 = str.substring(1, str.length) * 1;
  141. var str2 = str.substring(0, 1);
  142. if(str2 == "s") {
  143. return str1 * 1000;
  144. } else if(str2 == "h") {
  145. return str1 * 60 * 60 * 1000;
  146. } else if(str2 == "d") {
  147. return str1 * 24 * 60 * 60 * 1000;
  148. }
  149. }
  150. },
  151. /**
  152. * @param {String} name
  153. * @description 删除指定cookie
  154. * */
  155. delCookie: function(name) {
  156. var exp = new Date();
  157. exp.setTime(exp.getTime() - 1);
  158. var cval = this.getCookie(name);
  159. if(cval != null)
  160. document.cookie = name + "=" + cval + ";path=/;expires=" + exp.toGMTString();
  161. },
  162. /**
  163. * @param {String} name
  164. * @description 得到指定cookie
  165. * */
  166. getCookie: function(name) {
  167. var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
  168. if(arr = document.cookie.match(reg))
  169. return unescape(arr[2]);
  170. else
  171. return null;
  172. },
  173. /**
  174. * @param {String} objName
  175. * @param {String} objValue
  176. * @description 设置字符串类型的本地缓存
  177. * */
  178. setStorage: function(objName, objValue) {
  179. var sto = window.localStorage;
  180. if(sto)
  181. sto.setItem(objName, objValue);
  182. },
  183. /**
  184. * @param {String} objName
  185. * @description 读取字符串类型的本地缓存
  186. * */
  187. getStorage: function(objName) {
  188. var ret = '';
  189. var sto = window.localStorage;
  190. if(sto)
  191. ret = sto.getItem(objName);
  192. return ret;
  193. },
  194. /**
  195. * @param {String} objName
  196. * @description 清除本地缓存,如没指定名称则为清空所有缓存
  197. * */
  198. clearStorage: function(objName) {
  199. var sto = window.localStorage;
  200. if(sto) {
  201. if(objName)
  202. sto.removeItem(objName);
  203. else
  204. sto.clear();
  205. }
  206. },
  207. /**
  208. * @param {String} objName
  209. * @param {Object} json
  210. * @description 设置Json类型的本地缓存
  211. * */
  212. setStorJson: function(objName, json) {
  213. if(json) setStorage(objName, JSON.stringify(json));
  214. },
  215. /**
  216. * @param {String} objName
  217. * @description 读取Json类型的本地缓存
  218. * */
  219. getStorJson: function(objName) {
  220. var ret = null;
  221. var str = getStorage(objName);
  222. if(str)
  223. ret = JSON.parse(str);
  224. return ret;
  225. },
  226. /**
  227. * @param {Date} day
  228. * @description js判断一个日期是星期几 传入 年/月/日
  229. * */
  230. getWeekDay: function(day) {
  231. var a = new Array("日", "一", "二", "三", "四", "五", "六");
  232. var week = new Date(day).getDay();
  233. var str = "星期" + a[week];
  234. return str;
  235. },
  236. /**
  237. * @param {Date} date
  238. * @description 获取前一天日期 传入指定时间
  239. * */
  240. before: function(date) {
  241. var d = date;
  242. d = new Date(d);
  243. d = +d - 10006060 / 3 * 24;
  244. d = new Date(d);
  245. //格式化
  246. var year = ";" + d.getFullYear() + ";";
  247. var month = ";" + (d.getMonth() + 0 + 1) + ";";
  248. var day = ";" + d.getDate() + ";";
  249. if(year.length < 4) {
  250. year = "0" + year;
  251. }
  252. if(month.length < 4) {
  253. month = "0" + month;
  254. }
  255. if(day.length < 4) {
  256. day = "0" + day;
  257. }
  258. var datestr = year + "-" + month + "-" + day;
  259. datestr = datestr.replace(/;/g, "");
  260. return datestr;
  261. },
  262. /**
  263. * @param {Number} addDayCount
  264. * @param {Date} curDate
  265. * @description 获取指定日期的前后几天
  266. * */
  267. getDateByDay: function(addDayCount, curDate) {
  268. var d = new Date(curDate);
  269. d.setDate(d.getDate() + addDayCount); //获取AddDayCount天后的日期
  270. //格式化
  271. var year = ";" + d.getFullYear() + ";";
  272. var month = ";" + (d.getMonth() + 0 + 1) + ";";
  273. var day = ";" + d.getDate() + ";";
  274. if(year.length < 4) {
  275. year = "0" + year;
  276. }
  277. if(month.length < 4) {
  278. month = "0" + month;
  279. }
  280. if(day.length < 4) {
  281. day = "0" + day;
  282. }
  283. var datestr = year + "-" + month + "-" + day;
  284. datestr = datestr.replace(/;/g, "");
  285. return datestr;
  286. },
  287. /**
  288. * @param {Date} date
  289. * @description 获取后一天日期 传入指定时间
  290. * */
  291. after: function(date) {
  292. var d = date;
  293. d = new Date(d);
  294. d = +d + 10006060 / 3 * 24;
  295. d = new Date(d);
  296. //格式化
  297. var year = ";" + d.getFullYear() + ";";
  298. var month = ";" + (d.getMonth() + 0 + 1) + ";";
  299. var day = ";" + d.getDate() + ";";
  300. if(year.length < 4) {
  301. year = "0" + year;
  302. }
  303. if(month.length < 4) {
  304. month = "0" + month;
  305. }
  306. if(day.length < 4) {
  307. day = "0" + day;
  308. }
  309. var datestr = year + "-" + month + "-" + day;
  310. datestr = datestr.replace(/;/g, "");
  311. return datestr;
  312. },
  313. /**
  314. * @description 解决冒泡
  315. * */
  316. solveBubbing: function() {
  317. var e = getEvent();
  318. if(window.event) {
  319. e.cancelBubble = true; //阻止冒泡
  320. } else if(e.preventDefault) {
  321. e.stopPropagation(); //阻止冒泡
  322. }
  323. //得到事件
  324. function getEvent() {
  325. if(window.event) {
  326. return window.event;
  327. }
  328. func = getEvent.caller;
  329. while(func != null) {
  330. var arg0 = func.arguments[0];
  331. if(arg0) {
  332. if((arg0.constructor == Event || arg0.constructor == MouseEvent ||
  333. arg0.constructor == KeyboardEvent) ||
  334. (typeof(arg0) == "object" && arg0.preventDefault &&
  335. arg0.stopPropagation)) {
  336. return arg0;
  337. }
  338. }
  339. func = func.caller;
  340. }
  341. return null;
  342. }
  343. },
  344. /**
  345. * @description 得到浏览器
  346. * */
  347. myBrowser: function() {
  348. var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  349. var isOpera = userAgent.indexOf("Opera") > -1;
  350. //判断是否Opera浏览器
  351. if(isOpera) {
  352. return "Opera"
  353. };
  354. //判断是否Firefox浏览器
  355. if(userAgent.indexOf("Firefox") > -1) {
  356. return "Firefox";
  357. }
  358. //判断是否Chrome浏览器
  359. if(userAgent.indexOf("Chrome") > -1) {
  360. return "Chrome";
  361. }
  362. //判断是否Safari浏览器
  363. if(userAgent.indexOf("Safari") > -1) {
  364. return "Safari";
  365. }
  366. if(userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
  367. return "IE";
  368. }; //判断是否IE浏览器
  369. },
  370. /**
  371. * @param {Number} nTypeFlag
  372. * @description 得到时间组合
  373. * */
  374. getDateTime: function(nTypeFlag) {
  375. var tNowTime = new Date();
  376. var myYear = ';' + tNowTime.getFullYear() + ';';
  377. var myMonth = ';' + (tNowTime.getMonth() + 1 - 0) + ';';
  378. var myDay = ';' + tNowTime.getDate() + ';';
  379. var myHour = ';' + tNowTime.getHours() + ';';
  380. var myMinu = ';' + tNowTime.getMinutes() + ';';
  381. var mySecond = ';' + tNowTime.getSeconds() + ';';
  382. if(myMonth.length < 4) myMonth = '0' + myMonth;
  383. if(myDay.length < 4) myDay = '0' + myDay;
  384. if(myHour.length < 4) myHour = '0' + myHour;
  385. if(myMinu.length < 4) myMinu = '0' + myMinu;
  386. if(mySecond.length < 4) mySecond = '0' + mySecond;
  387. var cNewTimeStr;
  388. //alert(tNowTime);
  389. switch(nTypeFlag + 1 - 1) {
  390. case 0:
  391. cNewTimeStr = myYear + '-' + myMonth + '-' + myDay;
  392. break;
  393. case 1:
  394. cNewTimeStr = myYear + myMonth + myDay;
  395. break;
  396. case 2:
  397. cNewTimeStr = myHour + ':' + myMinu + ':' + mySecond;
  398. break;
  399. case 3:
  400. cNewTimeStr = myHour + myMinu + mySecond;
  401. break;
  402. case 4:
  403. cNewTimeStr = myYear + myMonth + myDay + myHour + myMinu + mySecond;
  404. break;
  405. case 5:
  406. cNewTimeStr = myYear + '年' + myMonth + '月' + myDay + '日';
  407. break;
  408. case 6:
  409. cNewTimeStr = myYear;
  410. break;
  411. case 7:
  412. cNewTimeStr = myYear + '-' + myMonth;
  413. break;
  414. case 8: //得到上一个月的今天
  415. var date = getDateTime(0);
  416. var arr = date.split('-');
  417. var year = arr[0]; //获取当前日期的年份
  418. var month = arr[1]; //获取当前日期的月份
  419. var day = arr[2]; //获取当前日期的日
  420. var days = new Date(year, month, 0);
  421. days = days.getDate(); //获取当前日期中月的天数
  422. var year2 = year;
  423. var month2 = parseInt(month) - 1;
  424. if(month2 == 0) {
  425. year2 = parseInt(year2) - 1;
  426. month2 = 12;
  427. }
  428. var day2 = day;
  429. var days2 = new Date(year2, month2, 0);
  430. days2 = days2.getDate();
  431. if(day2 > days2) {
  432. day2 = days2;
  433. }
  434. if(month2 < 10) {
  435. month2 = '0' + month2;
  436. }
  437. cNewTimeStr = year2 + '-' + month2 + '-' + day2;
  438. break;
  439. case 9: //得到下一个月的今天
  440. var date = getDateTime(0);
  441. var arr = date.split('-');
  442. var year = arr[0]; //获取当前日期的年份
  443. var month = arr[1]; //获取当前日期的月份
  444. var day = arr[2]; //获取当前日期的日
  445. var days = new Date(year, month, 0);
  446. days = days.getDate(); //获取当前日期中的月的天数
  447. var year2 = year;
  448. var month2 = parseInt(month) + 1;
  449. if(month2 == 13) {
  450. year2 = parseInt(year2) + 1;
  451. month2 = 1;
  452. }
  453. var day2 = day;
  454. var days2 = new Date(year2, month2, 0);
  455. days2 = days2.getDate();
  456. if(day2 > days2) {
  457. day2 = days2;
  458. }
  459. if(month2 < 10) {
  460. month2 = '0' + month2;
  461. }
  462. var t2 = year2 + '-' + month2 + '-' + day2;
  463. return t2;
  464. break;
  465. default:
  466. cNewTimeStr = myYear + '-' + myMonth + '-' + myDay + ' ' + myHour + ':' + myMinu + ':' + mySecond;
  467. break;
  468. }
  469. cNewTimeStr = cNewTimeStr.replace(/;/g, "");
  470. return cNewTimeStr;
  471. }
  472. }
  473. })(window);