index.js 4.62 KB
export const getImgUrl = function(src, width = 300, height = 300, mode = 2) {
  return src ? src.replace(/(\{width}|\{height}|\{mode})/g, function($0) {
      const dict = {
        '{width}': width,
        '{height}': height,
        '{mode}': mode || 2
      };

      return dict[$0];
    }) : '';
};


export const replaceHttp = function(src) {
  return src.replace(/https?:/, '');
};


export const debounce = (idle, action) => { // 函数去抖动,超过一定时间才会执行,如果周期内触发,充值计时器
  let last;

  return function() {
    let args = arguments;

    if (last) {
      clearTimeout(last);
    }
    last = setTimeout(() => {
      action.apply(this, args);
    }, idle);
  };
};


export const throttle = (delay, action) => { // 函数节流器,定义函数执行间隔,按频率触发函数
  let last = 0;

  return function() {
    let args = arguments;
    let curr = +new Date();

    if (curr - last > delay) {
      action.apply(this, args);
      last = curr;
    }
  };
};

/** 
 * 时间戳转化为年 月 日 时 分 秒 
 * time: 传入时间戳
 * format:返回格式,支持自定义,但参数必须与formateArr里保持一致 
 * formatTimeByDefined(1488481383,'Y/M/D h:m:s') => 2017/03/03 03:03:03
*/

export const formatTimeByDefined = function (time, format) {
  var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  var returnArr = [];

  var date = new Date(time * 1000);
  returnArr.push(date.getFullYear());
  returnArr.push(formatNumber(date.getMonth() + 1));
  returnArr.push(formatNumber(date.getDate()));

  returnArr.push(formatNumber(date.getHours()));
  returnArr.push(formatNumber(date.getMinutes()));
  returnArr.push(formatNumber(date.getSeconds()));

  for (var i in returnArr) {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}

function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}

/** 
 * 时间戳转化为 分 秒 
 * time: 传入时间戳
 * format:返回格式,支持自定义,但参数必须与formateArr里保持一致 
 * formatTimeByDefined(1488481383,'Y/M/D h:m:s') => 2017/03/03 03:03:03
*/
function formatTimeByMin(time, format) {

  var formateArr = ['m', 's'];
  var returnArr = [];
  var int_day, int_hour, int_minute, int_second;
  var date = new Date(time * 1000);

  returnArr.push(formatNumber(date.getMinutes()));
  returnArr.push(formatNumber(date.getSeconds()));
  // if (time >= 0) {
  //   // int_day = Math.floor(time / 86400000)
  //   // time -= int_day * 86400000;
  //   // int_hour = Math.floor(time / 3600000)
  //   // time -= int_hour * 3600000;
  //   int_minute = Math.floor(time / 60000)
  //   if (time < 60000) {
  //     int_minute = Math.floor(0);
  //   } else {
  //     time -= int_minute * 60000;
  //   }
  //   int_second = Math.floor(time / 1000)
  // }
  // // returnArr.push(formatNumber(int_day));
  // // returnArr.push(formatNumber(int_hour));
  // returnArr.push(formatNumber(int_minute));
  // returnArr.push(formatNumber(int_second));

  for (var i in returnArr) {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}

const getGlobalData = () => {
  const app = getApp();
  let globalData;
  if (app && app.globalData) {
    // 原生小程序的 globalData 获取方式
    globalData = app && app.globalData;
  } else {
    // Taro 下 globalData 获取方式
    globalData = app && app.props && app.props.globalData;
  }
  return globalData;
}

const getYHStorageSync = (key, fromPage) => {
  try {
    let res = wx.getStorageSync(key);
    return res;
  } catch (e) {
    wx.reportAnalytics('ufo_get_storage_error', {
      key: key,
      error: e.message,
      error_code: e.code,
      from_page: fromPage,
    });
    return null;
  }
}

const getStorageUserInfo = () => {
  const globalData = getGlobalData();
  if (globalData.userInfo.length > 0) {
    return globalData.userInfo;
  } else {
    return getYHStorageSync('userInfo');
  }
}

const getUid = () => {
  const userInfo = getStorageUserInfo();
    // 判断 globalData 是否包含 uid
    let uid = userInfo && userInfo.uid ? userInfo.uid : 0;

    return uid
}


 const setUserInfo = (cb) => {
  let globalData = getGlobalData()
  globalData.userInfo = Object.assign(globalData.userInfo, cb);
  wx.setStorage({
    key: "userInfo",
    data: globalData.userInfo
  })
}

const isLogin = ()=> {
  const userInfo = getStorageUserInfo();
  // 判断 globalData 是否包含 uid
  let uid = userInfo && userInfo.uid ? userInfo.uid : 0;

  return uid > 0
}

module.exports = {
  formatTimeByDefined,
  formatTimeByMin,
  getImgUrl,
  getGlobalData,
  getYHStorageSync,
  getStorageUserInfo,
  getUid,
  isLogin,
  setUserInfo,
}