text: ﻿const $A = {
      /**
       * 获取缓存
       * @param key
       * @returns {string}
       */
      getStorage(key) {
          return localStorage.getItem(key);
      },
  
      /**
       * 设置缓存
       * @param key
       * @param value
       */
      setStorage(key, value) {
          return localStorage.setItem(key, value);
      },
  
      /**
       * 删除缓存
       * @param keys
       */
      removeStorage(keys) {
          return localStorage.removeItem(keys);
      },
  
      /**
       * 清空缓存
       */
      clearStorage() {
          return localStorage.clear();
      },
  
      /**
       * 显示通知
       * @param title
       * @param options
       * @param link
       */
      showNotify(title, options, link) {
          var notification = new Notification(title, Object.assign({
              dir: "rtl",
              lang: "zh-CN",
              icon: "images/icon-message.png",
          }, options));
          notification.onclick = function () {
              if (link) {
                  window.open(link);
              }
          };
      },
  
      /**
       * 地址获取域名
       * @param url
       * @returns {string}
       */
      getHost(url) {
          if (/^chrome:\/\//.test(url)) {
              return "";
          }
          try {
              var info = new URL(url);
              return info.host || info.hostname;
          } catch (err) {
              console.log(err);
          }
      },
  
      /**
       * 删除地址中的参数
       * @param url
       * @param parameter
       * @returns {string|*}
       */
      removeURLParameter(url, parameter) {
          if (parameter instanceof Array) {
              parameter.forEach((key) => {
                  url = $A.removeURLParameter(url, key)
              });
              return url;
          }
          var urlparts = url.split('?');
          if (urlparts.length >= 2) {
              //参数名前缀
              var prefix = encodeURIComponent(parameter) + '=';
              var pars = urlparts[1].split(/[&;]/g);
  
              //循环查找匹配参数
              for (var i = pars.length; i-- > 0;) {
                  if (pars[i].lastIndexOf(prefix, 0) !== -1) {
                      //存在则删除
                      pars.splice(i, 1);
                  }
              }
  
              return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');
          }
          return url;
      },
  
      /**
       * 连接加上参数
       * @param url
       * @param params
       * @returns {*}
       */
      urlAddParams(url, params) {
          if (typeof params === "object" && params !== null) {
              url+= "";
              url+= url.indexOf("?") === -1 ? '?' : '';
              for (var key in params) {
                  if (!params.hasOwnProperty(key)) {
                      continue;
                  }
                  url+= '&' + key + '=' + params[key];
              }
          }
          return url.replace("?&", "?");
      },
  
      /**
       * 将一个 JSON 字符串转换为对象（已try）
       * @param str
       * @param defaultVal
       * @returns {*}
       */
      jsonParse(str, defaultVal) {
          if (str === null) {
              return defaultVal ? defaultVal : {};
          }
          if (typeof str === "object") {
              return str;
          }
          try {
              return JSON.parse(str);
          } catch (e) {
              return defaultVal ? defaultVal : {};
          }
      },
  
      /**
       * 将 JavaScript 值转换为 JSON 字符串（已try）
       * @param json
       * @param defaultVal
       * @returns {string}
       */
      jsonStringify(json, defaultVal) {
          if (typeof json !== 'object') {
              return json;
          }
          try {
              return JSON.stringify(json);
          } catch (e) {
              return defaultVal ? defaultVal : "";
          }
      },
  
      /**
       * 转数字
       * @param str
       * @param fixed
       * @returns {number}
       */
      runNum(str, fixed) {
          var _s = Number(str);
          if (_s + "" === "NaN") {
              _s = 0;
          }
          if (/^[0-9]*[1-9][0-9]*$/.test(fixed)) {
              _s = _s.toFixed(fixed);
              var rs = _s.indexOf('.');
              if (rs < 0) {
                  _s += ".";
                  for (var i = 0; i < fixed; i++) {
                      _s += "0";
                  }
              }
          }
          return _s;
      },
  
      /**
       * 消息内容取描述
       * @param content
       * @returns {*}
       */
      getMsgDesc(content) {
          var desc;
          switch (content.type) {
              case 'text':
                  desc = content.text;
                  break;
              case 'image':
                  desc = '[图片]';
                  break;
              case 'taskB':
                  desc = content.text + " [来自关注任务]";
                  break;
              case 'report':
                  desc = content.text + " [来自工作报告]";
                  break;
              default:
                  desc = '[未知类型]';
                  break;
          }
          return desc;
      }
  }
  