utils.js 4.54 KB
//防止多次重复点击  (函数节流)
export function throttle(fn, gapTime) {
  if (gapTime == null || gapTime == undefined) {
    gapTime = 1500;
  }
  let _lastTime = null;
  return function() {
    let _nowTime = new Date();
    if (_nowTime - _lastTime > gapTime || !_lastTime) {
      fn.apply(this, arguments); //将this和参数传给原函数
      _lastTime = _nowTime;
    }
  };
}

export function debounce(fn, delay) {
    let timeout = null;
    return function () {
        clearTimeout(timeout);
        timeout = setTimeout(() => {
            fn.apply(this, arguments);
        }, delay);
    };
}

// 判断时间 刚刚 五分钟以内 十分钟以内 正常时间年月日
export function dealFileTime(time) {
  let result = "";
  let argumentsTime = new Date(time.replace(/\-/g, "/")).getTime();
  let nowTime = new Date().getTime();
  let diffValue = nowTime - argumentsTime;
  let minute = 1000 * 60; //把分,时,天,周,半个月,一个月用毫秒表示
  let hour = minute * 60;
  let day = hour * 24;
  let week = day * 7;
  let halfamonth = day * 15;
  let month = day * 30;
  if (diffValue < 0) {
    return;
  }
  let minC = diffValue / minute; //计算时间差的分,时,天,周,月
  let hourC = diffValue / hour;
  let dayC = diffValue / day;
  let weekC = diffValue / week;
  let monthC = diffValue / month;
  if (monthC >= 1 && monthC <= 3) {
    result = " " + parseInt(monthC) + "月前";
  } else if (weekC >= 1 && weekC <= 3) {
    result = " " + parseInt(weekC) + "周前";
  } else if (dayC >= 1 && dayC <= 6) {
    result = " " + parseInt(dayC) + "天前";
  } else if (hourC >= 1 && hourC <= 23) {
    result = " " + parseInt(hourC) + "小时前";
  } else if (minC >= 1 && minC <= 59) {
    result = " " + parseInt(minC) + "分钟前";
  } else if (diffValue >= 0 && diffValue <= minute) {
    result = "刚刚";
  } else {
    let datetime = new Date();
    datetime.setTime(time);
    let Nyear = datetime.getFullYear();
    let Nmonth =
      datetime.getMonth() + 1 < 10
        ? "0" + (datetime.getMonth() + 1)
        : datetime.getMonth() + 1;
    let Ndate =
      datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
    let Nhour =
      datetime.getHours() < 10
        ? "0" + datetime.getHours()
        : datetime.getHours();
    let Nminute =
      datetime.getMinutes() < 10
        ? "0" + datetime.getMinutes()
        : datetime.getMinutes();
    let Nsecond =
      datetime.getSeconds() < 10
        ? "0" + datetime.getSeconds()
        : datetime.getSeconds();
    result = Nyear + "-" + Nmonth + "-" + Ndate;
  }
  return result;
}
/*  
  返回时间补0
  time 时间
  format 格式 yyyyMMdd HH:mm:ss, yyyyMMdd, HH:mm:ss
  Symbol 分隔符号
*/
export function getFormatDate(time, format, symbol) {
  format = format ? format : "yyyyMMdd HH:mm:ss";
  symbol = symbol ? symbol : "";
  let year = time.getFullYear();
  let month =
    time.getMonth() < 9 ? "0" + (time.getMonth() + 1) : time.getMonth() + 1;
  let day = time.getDate() < 10 ? "0" + time.getDate() : time.getDate();
  let hour = time.getHours() < 10 ? "0" + time.getHours() : time.getHours();
  let minutes =
    time.getMinutes() < 10 ? "0" + time.getMinutes() : time.getMinutes();
  let seconds =
    time.getSeconds() < 10 ? "0" + time.getSeconds() : time.getSeconds();
  if (format === "yyyyMMdd HH:mm:ss") {
    return symbol
      ? `${year}${symbol}${month}${symbol}${day} ${hour}:${minutes}:${seconds}`
      : `${year}/${month}/${day} ${hour}:${minutes}:${seconds}`;
  } else if (format === "yyyyMMdd") {
    return symbol
      ? `${year}${symbol}${month}${symbol}${day}`
      : `${year}/${month}/${day}`;
  } else if (format === "HH:mm:ss") {
    return `${hour}:${minutes}:${seconds}`;
  }
}
// 返回每个月的第一天
export function getCurrentMonthFirst(date) {
  date.setDate(1);
  var month = parseInt(date.getMonth() + 1);
  var day = date.getDate();
  if (month < 10) {
    month = "0" + month;
  }
  if (day < 10) {
    day = "0" + day;
  }
  return date.getFullYear() + "-" + month + "-" + day;
}
// 返回每个月的最后一天
export function getCurrentMonthLast(date) {
  var currentMonth = date.getMonth();
  var nextMonth = ++currentMonth;
  var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
  var oneDay = 1000 * 60 * 60 * 24;
  var lastTime = new Date(nextMonthFirstDay - oneDay);
  var month = parseInt(lastTime.getMonth() + 1);
  var day = lastTime.getDate();
  if (month < 10) {
    month = "0" + month;
  }
  if (day < 10) {
    day = "0" + day;
  }
  return date.getFullYear() + "-" + month + "-" + day;
}