import globalStore from "../stores/exampleStore"
import { resolve } from "path";
//防止多次重复点击  (函数节流)
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);
  };
}

/*  
  返回时间补0
  time 时间
  format 格式 yyyyMMdd HH:mm:ss, yyyyMMdd, HH:mm:ss
  Symbol 分隔符号
*/
export function getFormatDate(time, format, symbol) {
  if (typeof time == 'string') {
    time = new Date(time.replace(/-/g, '/'))
  }
  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}`;
  } else if (format === "HH:mm") {
    return `${hour}:${minutes}`;
  }
}
// 返回每个月的第一天
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;
}

//开始时间取整, 取5的倍数
export function getInterTime(time) {
  let date = time;
  if (typeof time == "string") {
    date = new Date(time);
  }
  const min = date.getMinutes();
  const addMin = Math.floor(min / 5) * 5 + 5;
  date.setMinutes(addMin);
  return date;
}


// 判断是刚刚 60分钟以内 23小时以内 正常时间年月日
export function getCreateShowTime(createdTime) {
  let creatTime = createdTime;
  if (typeof createdTime === 'string') {
    creatTime = createdTime.replace(/\-/g, "/")
  }
  let timeResule = ''
  const year = new Date().getFullYear()
  const month = new Date().getMonth() + 1
  const day = new Date().getDate()
  const creatYear = new Date(creatTime).getFullYear()
  const creatMonth = new Date(creatTime).getMonth() + 1
  const creatDay = new Date(creatTime).getDate()
  if (year == creatYear) {
    if (month == creatMonth) {
      if (day == creatDay) {
        const letMin = (new Date().getTime() - new Date(creatTime).getTime()) / 1000 / 60;
        if (letMin < 2) {
          timeResule = '刚刚'

        } else if (letMin < 60) {
          timeResule = letMin.toFixed(0) + '分钟前'
        } else {
          timeResule = (letMin / 60).toFixed(0) + '小时前'
        }
      } else {
        timeResule = day - creatDay + '天前'
      }
    } else {
      const leftDay = (new Date().getTime() - new Date(creatTime).getTime()) / 1000 / 60 / 60 / 24;

      if (leftDay < 28) {
        if (leftDay < 1) {
          timeResule = (leftDay * 24).toFixed(0) + '小时前'
        } else {
          timeResule = leftDay.toFixed(0) + '天前'
        }
      } else {
        timeResule = `${creatTime.substring(5, 7)}月${creatTime.substring(8, 10)}日 ${creatTime.substring(11, 16)}`
      }
    }

  } else {
    timeResule = `${creatTime.substring(0, 4)}年${creatTime.substring(5, 7)}月${creatTime.substring(8, 10)}日 ${creatTime.substring(11, 16)}`
  }

  return timeResule
}

export function padZero(val) {
  return ("00" + val).slice(-2);
}

/*
获取随机数
min = 0 区间范围 默认0
max = 100 区间范围 默认100
[min, max) 
 */
export function getRndInteger(min = 0, max = 100) {
  return Math.floor(Math.random() * (max - min)) + min;
}

/*
展示时间
startTime 开始时间 
endTime 结束时间 
 */

export function getShowTime(startTime, endTime) {
  const weekList = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
  const weekIndex = new Date(startTime).getDay()
  let isAcrossDay = false
  if (startTime.substring(0, 10) !== endTime.substring(0, 10)) {
    isAcrossDay = true
  }
  if (isAcrossDay) {
    return `${startTime.substring(5, 7)}月${startTime.substring(8, 10)}日 ${startTime.substring(11, 16)}-${endTime.substring(5, 7)}月${endTime.substring(8, 10)}日 ${endTime.substring(11, 16)}`
  }
  return `${startTime.substring(5, 7)}月${startTime.substring(8, 10)}日 ${weekList[weekIndex]} ${startTime.substring(11, 16)}-${endTime.substring(11, 16)}`
}

/*
获取两年后的今天
 */

export function getTwoYearToday(startTime) {
  let date = new Date(startTime)
  date.setYear(date.getFullYear() + 2)
  let year = date.getFullYear();
  let month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
  let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
  return year + '-' + month + '-' + day
}

// 处理重复模型
export function dealRepeatModal(item) {
  const repeatWeek = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA']
  // 不重复
  if (item.repeatable === 0) {
    return {
      repeatable: item.repeatable,
      recurrenceModel: item.recurrenceModel
    }
  }
  const initialTime = globalStore.data.startTime.replace(/\//g, "-").substring(0, 10)
  const terminateTime = getTwoYearToday(globalStore.data.startTime)
  const recurrenceModel = {
    model: item.recurrenceModel.model,
    initialTime: initialTime,
    terminateTime: terminateTime,
    interval: 1
  }
  // 每天重复
  if (item.recurrenceModel.model === "daily") {
    return {
      repeatable: item.repeatable,
      recurrenceModel: recurrenceModel,
      selectRepeatId: item.id
    }

  }
  // 每月重复
  if (item.recurrenceModel.model === "absolute_Monthly") {
    recurrenceModel.daysOfMonth = [new Date(globalStore.data.startTime).getDate()]
    return {
      repeatable: item.repeatable,
      recurrenceModel: recurrenceModel,
      selectRepeatId: item.id

    }
  }
  // 每周重复
  if (item.recurrenceModel.weekDayList && item.recurrenceModel.weekDayList.length > 4) {
    recurrenceModel.weekDayList = item.recurrenceModel.weekDayList
    return {
      repeatable: item.repeatable,
      recurrenceModel: recurrenceModel,
      selectRepeatId: item.id

    }
  }
  // 每周的一天重复
  recurrenceModel.weekDayList = [repeatWeek[new Date(globalStore.data.startTime).getDay()]]
  return {
    repeatable: item.repeatable,
    recurrenceModel: recurrenceModel,
    selectRepeatId: item.id

  }
}
// 修改时间修改重复模型
export function modifyTimeImpactRepeat(recurrenceModel) {
  const repeatWeek = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA']

  const initialTime = globalStore.data.startTime.replace(/\//g, "-").substring(0, 10)
  const terminateTime = getTwoYearToday(globalStore.data.startTime)
  recurrenceModel.initialTime = initialTime
  recurrenceModel.terminateTime = terminateTime
  if (recurrenceModel.model === 'weekly' && recurrenceModel.weekDayList.length === 1) {
    recurrenceModel.weekDayList = [repeatWeek[new Date(globalStore.data.startTime).getDay()]]
  }
  if (recurrenceModel.model === 'absolute_Monthly') {
    recurrenceModel.daysOfMonth = [new Date(globalStore.data.startTime).getDate()]
  }
  return recurrenceModel
}
// 添加参会人
export function selectPeople(select, require) {
  const _that = this
  return new Promise((resolve) => {
    dd.complexChoose({
      title: "选择参会人",            //标题
      multiple: true,            //是否多选
      pickedUsers: select, //已选用户    s
      requiredUsers: require,            //必选用户(不可取消选中状态)
      responseUserOnly: true,        //返回人,或者返回人和部门
      success: function (res) {

        resolve(res)
      },
      fail: function (err) {
      }
    })
  })
}
// 可选中去掉必选人
export function selectedelRequired(select, require) {
  return select.filter(it => {
    return !require.includes(it)
  })
}
// 文件格式化
export function renderSize(value) {
  if (null == value || value == '' || value == 0) {
    return "";
  }
  var unitArr = new Array("B", "K", "M", "G", "T", "P", "E", "Z", "Y");
  var index = 0;
  var srcsize = parseFloat(value);
  index = Math.floor(Math.log(srcsize) / Math.log(1024));
  var size = srcsize / Math.pow(1024, index);
  size = size.toFixed(2);//保留的小数位数
  return size + unitArr[index];
}


export function isJSON(str) {
  if (typeof str == 'string') {
    try {
      var obj = JSON.parse(str);
      if (typeof obj == 'object' && obj) {
        return true;
      } else {
        return false;
      }

    } catch (e) {
      return false;
    }
  }
  return false;
}

export function removeHtml(str) {
  return str.replace(/<\/li>/g, "\n").replace(/<.+?>/g, "").replace(/&nbsp;/g, '')
}