base.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  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. getHost(url) {
  55. if (/^chrome:\/\//.test(url)) {
  56. return "";
  57. }
  58. try {
  59. var info = new URL(url);
  60. return info.host || info.hostname;
  61. } catch (err) {
  62. console.log(err);
  63. return "";
  64. }
  65. },
  66. /**
  67. * 地址获取目录
  68. * @param url
  69. * @returns {string}
  70. */
  71. getPathname(url) {
  72. if (/^chrome:\/\//.test(url)) {
  73. return "";
  74. }
  75. try {
  76. var info = new URL(url);
  77. return info.pathname;
  78. } catch (err) {
  79. console.log(err);
  80. return "";
  81. }
  82. },
  83. /**
  84. * 删除地址中的参数
  85. * @param url
  86. * @param parameter
  87. * @returns {string|*}
  88. */
  89. removeURLParameter(url, parameter) {
  90. if (parameter instanceof Array) {
  91. parameter.forEach((key) => {
  92. url = $A.removeURLParameter(url, key)
  93. });
  94. return url;
  95. }
  96. var urlparts = url.split('?');
  97. if (urlparts.length >= 2) {
  98. //参数名前缀
  99. var prefix = encodeURIComponent(parameter) + '=';
  100. var pars = urlparts[1].split(/[&;]/g);
  101. //循环查找匹配参数
  102. for (var i = pars.length; i-- > 0;) {
  103. if (pars[i].lastIndexOf(prefix, 0) !== -1) {
  104. //存在则删除
  105. pars.splice(i, 1);
  106. }
  107. }
  108. return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');
  109. }
  110. return url;
  111. },
  112. /**
  113. * 连接加上参数
  114. * @param url
  115. * @param params
  116. * @returns {*}
  117. */
  118. urlAddParams(url, params) {
  119. if (typeof params === "object" && params !== null) {
  120. url+= "";
  121. url+= url.indexOf("?") === -1 ? '?' : '';
  122. for (var key in params) {
  123. if (!params.hasOwnProperty(key)) {
  124. continue;
  125. }
  126. url+= '&' + key + '=' + params[key];
  127. }
  128. }
  129. return url.replace("?&", "?");
  130. },
  131. /**
  132. * 将一个 JSON 字符串转换为对象(已try)
  133. * @param str
  134. * @param defaultVal
  135. * @returns {*}
  136. */
  137. jsonParse(str, defaultVal) {
  138. if (str === null) {
  139. return defaultVal ? defaultVal : {};
  140. }
  141. if (typeof str === "object") {
  142. return str;
  143. }
  144. try {
  145. return JSON.parse(str);
  146. } catch (e) {
  147. return defaultVal ? defaultVal : {};
  148. }
  149. },
  150. /**
  151. * 将 JavaScript 值转换为 JSON 字符串(已try)
  152. * @param json
  153. * @param defaultVal
  154. * @returns {string}
  155. */
  156. jsonStringify(json, defaultVal) {
  157. if (typeof json !== 'object') {
  158. return json;
  159. }
  160. try {
  161. return JSON.stringify(json);
  162. } catch (e) {
  163. return defaultVal ? defaultVal : "";
  164. }
  165. },
  166. /**
  167. * 转数字
  168. * @param str
  169. * @param fixed
  170. * @returns {number}
  171. */
  172. runNum(str, fixed) {
  173. var _s = Number(str);
  174. if (_s + "" === "NaN") {
  175. _s = 0;
  176. }
  177. if (/^[0-9]*[1-9][0-9]*$/.test(fixed)) {
  178. _s = _s.toFixed(fixed);
  179. var rs = _s.indexOf('.');
  180. if (rs < 0) {
  181. _s += ".";
  182. for (var i = 0; i < fixed; i++) {
  183. _s += "0";
  184. }
  185. }
  186. }
  187. return _s;
  188. },
  189. /**
  190. * 消息内容取描述
  191. * @param content
  192. * @returns {*}
  193. */
  194. getMsgDesc(content) {
  195. var desc;
  196. switch (content.type) {
  197. case 'text':
  198. desc = content.text;
  199. break;
  200. case 'image':
  201. desc = '[图片]';
  202. break;
  203. case 'file':
  204. desc = '[文件]';
  205. break;
  206. case 'taskB':
  207. desc = content.text + " [任务消息]";
  208. break;
  209. case 'report':
  210. desc = content.text + " [工作报告]";
  211. break;
  212. default:
  213. desc = '[未知类型]';
  214. break;
  215. }
  216. return desc;
  217. },
  218. /**
  219. * 更新参数
  220. * @param key
  221. * @param updateConfig
  222. */
  223. updateConfigLists(key, updateConfig) {
  224. var configLists = $A.jsonParse($A.getStorage("configLists"), {});
  225. var keyConfig = configLists[key];
  226. if (keyConfig !== null
  227. && typeof keyConfig == "object"
  228. && updateConfig !== null
  229. && typeof updateConfig == "object") {
  230. var up = false;
  231. for (var k in updateConfig) {
  232. if (!updateConfig.hasOwnProperty(k)) {
  233. continue;
  234. }
  235. if (updateConfig[k] !== keyConfig[k]) {
  236. up = true;
  237. break;
  238. }
  239. }
  240. if (up) {
  241. keyConfig = Object.assign(keyConfig, updateConfig);
  242. $A.setStorage("configLists", $A.jsonStringify(configLists));
  243. }
  244. }
  245. }
  246. }