var barcode = require("./barcode");
var qrcode = require("./qrcode");

const extConfig = wx.getExtConfigSync ? wx.getExtConfigSync() : {}
let imgProxy = extConfig.attr.imgProxy;

function convertUTCTimeToLocalTime(UTCDateString) {
  if (!UTCDateString) {
    return '-';
  }
  function formatFunc(str) {    //格式化显示
    return str > 9 ? str : '0' + str
  }
  var date2 = new Date(UTCDateString);     //这步是关键
  var year = date2.getFullYear();
  var mon = formatFunc(date2.getMonth() + 1);
  var day = formatFunc(date2.getDate());
  var hour = date2.getHours();
  var noon = hour >= 12 ? 'PM' : 'AM';
  hour = hour >= 24 ? hour - 24 : hour;
  hour = formatFunc(hour);
  var min = formatFunc(date2.getMinutes());
  var dateStr = ' ' + hour + ':' + min ;
  return dateStr;
}

// function fmtDate(date) {
//   var dateee = new Date(date).toJSON();
//   return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '');
// }

function toHHmmss(date) {//传入时间戳获取时分秒
  var time;

  var d = Math.floor(date / 1000 / 60 / 60 / 24)
  var hours = Math.floor(((date / 1000 / 60 / 60) % 24) + 24 * d)
  var minutes = Math.floor((date / 1000 / 60) % 60)
  var seconds = Math.floor((date / 1000) % 60)

 
  if (date<=0){
    time = "00:00:00"
  }else{
    time = (hours < 10 ? ('0' + hours) : hours) + ':' + (minutes < 10 ? ('0' + minutes) : minutes) + ':' + (seconds < 10 ? ('0' + seconds) : seconds);
  }
  return time;
}

const formatTime = (date, fmt) => {
  try {
    if (!date) {
      return date;
    }
    if (typeof date === 'string' && date.length === 13) {
      date = Number(date);
    }
    if (typeof date == "number") {
      date = new Date(date);
    }
    var 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 (var 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;
  } catch (error) {
    return date;
  }
};

const formatNumber = n => {
  n = n.toString();
  return n[1] ? n : "0" + n;
};

function convert_length(length) {
  return Math.round((wx.getSystemInfoSync().windowWidth * length) / 750);
}

function barc(id, code, width, height) {
  barcode.code128(
    wx.createCanvasContext(id),
    code,
    convert_length(width),
    convert_length(height)
  );
}

function qrc(id, code, width, height) {
  qrcode.api.draw(code, {
    ctx: wx.createCanvasContext(id),
    width: convert_length(width),
    height: convert_length(height)
  });
}
function fmtDate(obj) {
  if (typeof obj === 'string' && obj.length === 13) {
    obj = Number(obj);
  }
  var date = new Date(obj);
  var y = 1900 + date.getYear();
  var m = "0" + (date.getMonth() + 1);
  var d = "0" + date.getDate();
  return (
    y +
    "-" +
    m.substring(m.length - 2, m.length) +
    "-" +
    d.substring(d.length - 2, d.length)
  );
}

//计算下单的时间与现在的时间的
function timechuo(startTime) {
  var s1 = new Date(startTime.replace(/-/g, "/"));
  var s2 = new Date();
  var runTime = parseInt((s1.getTime() - s2.getTime()) / 1000);
  var year = Math.floor(runTime / 86400 / 365);
  var runTime = runTime % (86400 * 365);
  var month = Math.floor(runTime / 86400 / 30);
  var runTime = runTime % (86400 * 30);
  var day = Math.floor(runTime / 86400);
  var runTime = runTime % 86400;
  var hour = Math.floor(runTime / 3600);
  var runTime = runTime % 3600;
  var minute = Math.floor(runTime / 60);
  var runTime = runTime % 60;
  var second = runTime;
  if (day && !year && !month){
    return (day + '天' + hour + "小时" + minute + "分钟")
  } else if (month && !year){
    return ((month*30+day) +'天' + hour + "小时" + minute + "分钟")
  } else if (year) {
    return ((year*365 + month*30+ day) + '天' + hour + "小时" + minute + "分钟")
  }else{
    return (hour + "小时" + minute + "分钟")
  }
}


//计算时间差
function timecha(endTime,startTime) {
  var s1 = new Date(endTime.replace(/-/g, "/"));
  var s2 = new Date(startTime.replace(/-/g, "/"));
  var runTime = parseInt((s1.getTime() - s2.getTime()) / 1000);
  var year = Math.floor(runTime / 86400 / 365);
  var runTime = runTime % (86400 * 365);
  var month = Math.floor(runTime / 86400 / 30);
  var runTime = runTime % (86400 * 30);
  var day = Math.floor(runTime / 86400);
  var runTime = runTime % 86400;
  var hour = Math.floor(runTime / 3600);
  var runTime = runTime % 3600;
  var minute = Math.floor(runTime / 60);
  var runTime = runTime % 60;
  var second = runTime;
  return (month+"月"+day+"天"+hour+"小时"+minute+"分钟")
}
function isJSON(str) {
  if (typeof str == 'string') {
    console.log("string")
    try {
      var obj = JSON.parse(str);
      if (typeof obj == 'object' && obj) {
        return true;
      } else {
        return false;
      }
    } catch (e) {
      console.log(e);
      wx.showToast({
        title: '请扫描正确的二维码',
        icon: 'none',
        duration: 1300
      })
    }
  } else {
    wx.showToast({
      title: '请扫描正确的二维码',
      icon: 'none',
      duration: 1300
    })
  }
}
function getProxyImgUrl(str) {
  let str1 = str;
  imgProxy.map(file=>{
    if (str.indexOf(file.orgUrl) == 0) {
      str1 = str.replace(file.orgUrl, file.newUrl)
      return
    }
  })
  return str1
}
module.exports = {
  toHHmmss: toHHmmss,
  formatTime: formatTime,
  barcode: barc,
  qrcode: qrc,
  isJSON: isJSON,
  fmtDate: fmtDate,
  timechuo: timechuo,
  timecha: timecha,
  getProxyImgUrl: getProxyImgUrl,
  convertUTCTimeToLocalTime: convertUTCTimeToLocalTime
};
