base.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. const $A = {
  2. /**
  3. * 获取缓存
  4. * @param key
  5. * @returns {string}
  6. */
  7. getStorage(key) {
  8. return localStorage.getItem(key);
  9. },
  10. /**
  11. * 设置缓存
  12. * @param key
  13. * @param value
  14. */
  15. setStorage(key, value) {
  16. return localStorage.setItem(key, value);
  17. },
  18. /**
  19. * 删除缓存
  20. * @param keys
  21. */
  22. removeStorage(keys) {
  23. return localStorage.removeItem(keys);
  24. },
  25. /**
  26. * 清空缓存
  27. */
  28. clearStorage() {
  29. return localStorage.clear();
  30. },
  31. /**
  32. * 显示通知
  33. * @param title
  34. * @param options
  35. * @param link
  36. */
  37. showNotify(title, options, link) {
  38. var notification = new Notification(title, Object.assign({
  39. dir: "rtl",
  40. lang: "zh-CN",
  41. icon: "images/icon-message.png",
  42. }, options));
  43. notification.onclick = function () {
  44. if (link) {
  45. window.open(link);
  46. }
  47. };
  48. },
  49. /**
  50. * 地址获取域名
  51. * @param url
  52. * @returns {string}
  53. */
  54. getHostname(url) {
  55. if (/^chrome:\/\//.test(url)) {
  56. return "";
  57. }
  58. try {
  59. var info = new URL(url);
  60. return info.hostname;
  61. } catch (err) {
  62. console.log(err);
  63. }
  64. },
  65. /**
  66. * 删除地址中的参数
  67. * @param url
  68. * @param parameter
  69. * @returns {string|*}
  70. */
  71. removeURLParameter(url, parameter) {
  72. if (parameter instanceof Array) {
  73. parameter.forEach((key) => {
  74. url = $A.removeURLParameter(url, key)
  75. });
  76. return url;
  77. }
  78. var urlparts = url.split('?');
  79. if (urlparts.length >= 2) {
  80. //参数名前缀
  81. var prefix = encodeURIComponent(parameter) + '=';
  82. var pars = urlparts[1].split(/[&;]/g);
  83. //循环查找匹配参数
  84. for (var i = pars.length; i-- > 0;) {
  85. if (pars[i].lastIndexOf(prefix, 0) !== -1) {
  86. //存在则删除
  87. pars.splice(i, 1);
  88. }
  89. }
  90. return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');
  91. }
  92. return url;
  93. },
  94. /**
  95. * 连接加上参数
  96. * @param url
  97. * @param params
  98. * @returns {*}
  99. */
  100. urlAddParams(url, params) {
  101. if (typeof params === "object" && params !== null) {
  102. url+= "";
  103. url+= url.indexOf("?") === -1 ? '?' : '';
  104. for (var key in params) {
  105. if (!params.hasOwnProperty(key)) {
  106. continue;
  107. }
  108. url+= '&' + key + '=' + params[key];
  109. }
  110. }
  111. return url.replace("?&", "?");
  112. },
  113. /**
  114. * 将一个 JSON 字符串转换为对象(已try)
  115. * @param str
  116. * @param defaultVal
  117. * @returns {*}
  118. */
  119. jsonParse(str, defaultVal) {
  120. if (str === null) {
  121. return defaultVal ? defaultVal : {};
  122. }
  123. if (typeof str === "object") {
  124. return str;
  125. }
  126. try {
  127. return JSON.parse(str);
  128. } catch (e) {
  129. return defaultVal ? defaultVal : {};
  130. }
  131. },
  132. /**
  133. * 将 JavaScript 值转换为 JSON 字符串(已try)
  134. * @param json
  135. * @param defaultVal
  136. * @returns {string}
  137. */
  138. jsonStringify(json, defaultVal) {
  139. if (typeof json !== 'object') {
  140. return json;
  141. }
  142. try {
  143. return JSON.stringify(json);
  144. } catch (e) {
  145. return defaultVal ? defaultVal : "";
  146. }
  147. },
  148. /**
  149. * 转数字
  150. * @param str
  151. * @param fixed
  152. * @returns {number}
  153. */
  154. runNum(str, fixed) {
  155. var _s = Number(str);
  156. if (_s + "" === "NaN") {
  157. _s = 0;
  158. }
  159. if (/^[0-9]*[1-9][0-9]*$/.test(fixed)) {
  160. _s = _s.toFixed(fixed);
  161. var rs = _s.indexOf('.');
  162. if (rs < 0) {
  163. _s += ".";
  164. for (var i = 0; i < fixed; i++) {
  165. _s += "0";
  166. }
  167. }
  168. }
  169. return _s;
  170. },
  171. /**
  172. * 消息内容取描述
  173. * @param content
  174. * @returns {*}
  175. */
  176. getMsgDesc(content) {
  177. var desc;
  178. switch (content.type) {
  179. case 'text':
  180. desc = content.text;
  181. break;
  182. case 'image':
  183. desc = '[图片]';
  184. break;
  185. case 'taskB':
  186. desc = content.text + " [来自关注任务]";
  187. break;
  188. case 'report':
  189. desc = content.text + " [来自工作报告]";
  190. break;
  191. default:
  192. desc = '[未知类型]';
  193. break;
  194. }
  195. return desc;
  196. }
  197. }