常用 Util

312 阅读1分钟

常用 Util

千分位显示优化

/**
 * 时间格式化
 * @param {*} fmt 格式 yyyy-MM-dd hh:mm:ss
 * @param {*} date 时间
 */
function dateformat(fmt = 'yyyy-MM-dd hh:mm:ss', date) {
  date = new Date(date);
  let o = {
    "M+": date.getMonth() + 1, //月份   
    "d+": date.getDate(), //日   
    "h+": date.getHours(), //小时   
    "m+": date.getMinutes(), //分   
    "s+": date.getSeconds(), //秒   
    "q+": Math.floor((date.getMonth() + 3) / 3), //季度   
    "S": date.getMilliseconds() //毫秒   
  };
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  for (let k in o)
    if (new RegExp("(" + k + ")").test(fmt))
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  return fmt;
}

文件上传

/**
 * 
 * @param {*} name 文件名称
 * @param {*} url 访问地址
 */
function exportFilePublic(name = "fileName", url, data, callback) {
  const token = localStorage.getItem("token");

  var xmlResquest;
  if (window.XMLHttpRequest) {
    xmlResquest = new XMLHttpRequest();
  } else {
    xmlResquest = new ActiveXObject("microsoft.XMLHTTP");
  }
  xmlResquest.open("POST", '真实地址', true);
  xmlResquest.setRequestHeader("content-type", "application/json");
  xmlResquest.setRequestHeader("authorization", token);
  xmlResquest.responseType = "blob"; //区分流  和字符的区别

  xmlResquest.onload = function (oEvent) {
    var content = null;
    //另一只种方法
    var reader = new FileReader(); // 挂载
    reader.onload = e => {
      try {
        let res = JSON.parse(e.target.result);
        console.error(res.message);
        return;
      } catch (err) {
        content = xmlResquest.response;
        var elink = document.createElement("a");
        elink.download = name + ".xlsx";
        elink.style.display = "none";
        var blob = new Blob([content], { type: "text/plain;charset=utf-8" });
        if (window.navigator.msSaveOrOpenBlob) {
          navigator.msSaveBlob(blob, name + ".xlsx");
        } else {
          elink.href = URL.createObjectURL(blob);
          document.body.appendChild(elink);
          elink.click();
          document.body.removeChild(elink);
        }
        if (callback) callback();
      }
    };
    // readAsText 方法是异步的 必须要挂载 实例下的 onload 或 onloadend 的方法处理转化后的结果
    reader.readAsText(xmlResquest.response);

    return;
    //另一种方法
    //IE 11 是没有Response对象的
    var text = new Response(xmlResquest.response).text();
    text
      .then(data => {
        try {
          content = JSON.parse(data);
          console.error(content.message);
        } catch (err) {
          content = xmlResquest.response;
          var elink = document.createElement("a");
          elink.download = name + ".xlsx";
          elink.style.display = "none";
          var blob = new Blob([content], { type: "text/plain;charset=utf-8" });
          if (window.navigator.msSaveOrOpenBlob) {
            navigator.msSaveBlob(blob, name + ".xlsx");
          } else {
            elink.href = URL.createObjectURL(blob);
            document.body.appendChild(elink);
            elink.click();
            document.body.removeChild(elink);
          }
          if (callback) callback();
        }
      })
      .catch(err => {
        console.error(err);
      });
  };
  xmlResquest.send(JSON.stringify(data));
  xmlResquest.onerror = () => {
    if (callback) callback();
    console.error("下载文件错误!");
  };
}