ms.util.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. /**
  2. * 通用工具类
  3. */
  4. (function() {
  5. /**
  6. * 地址栏获取参数
  7. * @param name 参数名称
  8. * @return {*}
  9. */
  10. function getParameter(name) {
  11. try {
  12. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  13. var r = window.location.search.substr(1).match(reg);
  14. if (r != null) {
  15. return decodeURI(r[2]);
  16. }
  17. return null;
  18. } catch (e) {
  19. log(e.message);
  20. }
  21. }
  22. //日期处理
  23. var date = {
  24. //格式化时间
  25. fmt: function(date, fmt) {
  26. var date = new Date(date);
  27. log(fmt);
  28. if (fmt == undefined || validator.isEmpty(fmt)) {
  29. fmt = "yyyy-mm-dd";
  30. }
  31. var o = {
  32. "M+": date.getMonth() + 1, //月份
  33. "d+": date.getDate(), //日
  34. "h+": date.getHours(), //小时
  35. "m+": date.getMinutes(), //分
  36. "s+": date.getSeconds(), //秒
  37. "q+": Math.floor((date.getMonth() + 3) / 3), //季度
  38. "S": date.getMilliseconds() //毫秒
  39. };
  40. if (/(y+)/.test(fmt))
  41. fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  42. for (var k in o)
  43. if (new RegExp("(" + k + ")").test(fmt))
  44. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  45. return fmt;
  46. }
  47. }
  48. var array = {
  49. //根据key清理arr里面重复的值
  50. unique: function(arr, key) {
  51. if (arr.length == 0) {
  52. return;
  53. }
  54. var result = [arr[0]];
  55. for (var i = 1; i < arr.length; i++) {
  56. var item = arr[i];
  57. var repeat = false;
  58. var repeat = false;
  59. for (var j = 0; j < result.length; j++) {
  60. if (item[key] == result[j][key]) {
  61. if (item['write'] && result[j]['write'] == false) {
  62. break;
  63. }
  64. repeat = true;
  65. break;
  66. }
  67. }
  68. if (!repeat) {
  69. result.push(item);
  70. }
  71. }
  72. return result;
  73. },
  74. //根据pro属性与value移除arr对应的值
  75. remove: function(arr, attr, value) {
  76. for (var j = 0; j < arr.length; j++) {
  77. if (arr[j][attr] == value) {
  78. arr.splice(j, 1);
  79. break;
  80. }
  81. }
  82. }
  83. }
  84. var convert = {
  85. byte: function(bytes) {
  86. if (isNaN(bytes)) {
  87. return '';
  88. }
  89. var symbols = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
  90. var exp = Math.floor(Math.log(bytes) / Math.log(2));
  91. if (exp < 1) {
  92. exp = 0;
  93. }
  94. var i = Math.floor(exp / 10);
  95. bytes = bytes / Math.pow(2, 10 * i);
  96. if (bytes.toString().length > bytes.toFixed(2).toString().length) {
  97. bytes = bytes.toFixed(2);
  98. }
  99. return bytes + ' ' + symbols[i];
  100. },
  101. //根据经纬度计算记录
  102. distance: function(lon1, lat1, lon2, lat2) {
  103. var DEF_PI = 3.14159265359; // PI
  104. var DEF_2PI = 6.28318530712; // 2*PI
  105. var DEF_PI180 = 0.01745329252; // PI/180.0
  106. var DEF_R = 6370693.5; // radius of earth
  107. var ew1, ns1, ew2, ns2;
  108. var dx, dy, dew;
  109. var distance;
  110. // 角度转换为弧度
  111. ew1 = lon1 * DEF_PI180;
  112. ns1 = lat1 * DEF_PI180;
  113. ew2 = lon2 * DEF_PI180;
  114. ns2 = lat2 * DEF_PI180;
  115. // 经度差
  116. dew = ew1 - ew2;
  117. // 若跨东经和西经180 度,进行调整
  118. if (dew > DEF_PI)
  119. dew = DEF_2PI - dew;
  120. else if (dew < -DEF_PI)
  121. dew = DEF_2PI + dew;
  122. dx = DEF_R * Math.cos(ns1) * dew; // 东西方向长度(在纬度圈上的投影长度)
  123. dy = DEF_R * (ns1 - ns2); // 南北方向长度(在经度圈上的投影长度)
  124. // 勾股定理求斜边长
  125. distance = Math.sqrt(dx * dx + dy * dy).toFixed(0);
  126. return distance;
  127. }
  128. }
  129. var log = function(msg) {
  130. if (ms.debug) {
  131. console.log(msg);
  132. }
  133. }
  134. var store = {
  135. set: function(key, value) {
  136. window.sessionStorage.setItem(key, value);
  137. },
  138. get: function(key) {
  139. return window.sessionStorage.getItem(key);
  140. },
  141. remove: function(key) {
  142. window.sessionStorage.removeItem(key);
  143. }
  144. }
  145. var cookie = {
  146. }
  147. var util = {
  148. getParameter: getParameter,
  149. date: date,
  150. array: array,
  151. log: log,
  152. convert: convert,
  153. store: store,
  154. }
  155. if (typeof ms != "object") {
  156. window.ms = {};
  157. }
  158. window.ms.util = util;
  159. }());