工具方法二

/**
 * 读取 URL 参数
 */
export function getQuery(key) {
  var search = decodeURI(location.search)
  if (!search) return
  var strSearch = search.split('?')[1]
  if (!strSearch) return
  var params = strSearch.split('&')
  var paramMap = {}
  for (var i = 0; i < params.length; i++) {
    var arr = params[i].split('=')
    paramMap[arr[0]] = arr[1]
  }
  return paramMap[key]
}

/**
 * 获取Hash
 * @returns 
 */
function getHash(){
  var hash = location.hash
  return hash && hash.split('#')
}

/**
 * 写入URL参数
 * @param {*} params 
 */
export function setQuery(params) {
  var search = location.search
  var pathname = location.pathname
  var arrParams = []
  if (search) {
    var strSearch = search.split('?')[1]
    arrParams = strSearch.split('&')
  }
  var paramMap = {}
  for (var i = 0; i < arrParams.length; i++) {
    var arr = arrParams[i].split('=')
    paramMap[arr[0]] = arr[1]
  }
  var newParams = Object.assign(paramMap, params)
  var keys = Object.keys(newParams)
  var arrSearch = []
  for (var i = 0; i < keys.length; i++) {
    if (newParams[keys[i]]) {
      arrSearch.push(keys[i] + '=' + newParams[keys[i]])
    }
  }
  history.pushState('', '', pathname + '?' + arrSearch.join('&'))
}


/**
 * 接口鉴权校验
 */
 var APP_ID = "2021*****LAY"
 var APP_KEY = "swbleq****vn3"
 // sign 值加密
export function sign(params) {
  var urlParamsStr = ''
  try {
    var tempArr = ['app_id=' + APP_ID]
    for (var i in params) {
      var key = encodeURIComponent(i)
      var value = encodeURIComponent(params[i])
      tempArr.push(key + '=' + value)
    }
    urlParamsStr = tempArr.sort().join('&')
  } catch (err) { }
  var unencrypted = urlParamsStr + APP_KEY
  return md5(unencrypted)
 }
 
 // token 生成
export function getToken(params, callback) {
  if (window.token && new Date().getTime() - window.global_expire_time < 1000 * 0.8 * 60) {
    callback(window.token, APP_ID)
    return
  }
  axios.post('https:/xxx/index/auth/token',{
    'app_id': APP_ID,
    'sign': sign(params)
  }).then(function(res){
    window.global_expire_time = new Date().getTime()
    window.token = res.data.Data.token
    callback(window.token, APP_ID)
  })
}

/**
 * 是否为Iphone
 * @returns 
 */
export function isIphone() {
  return /iphone/gi.test(window.navigator.userAgent)
}

export function isPC() {
  var userAgentInfo = navigator.userAgent;
  var Agents = ["Android", "iPhone",
     "SymbianOS", "Windows Phone",
     "iPad", "iPod"];
  var flag = true;
  for (var v = 0; v < Agents.length; v++) {
     if (userAgentInfo.indexOf(Agents[v]) > 0) {
        flag = false;
        break;
     }
  }
  return flag;
}

/**
 * 是否为IphoneX 
 * @returns 
 */
export function isIphonX() {
  if (window !== 'undefined' && window && !this.isIphone()) return false;
  var xSeriesConfig = [
    {  //iPhone Xs(Max,Pro Max)
      devicePixelRatio: 3,
      width: 414,
      height: 896,
    },
    {  // iPhone XR(11)
      devicePixelRatio: 2,
      width: 414,
      height: 896,
    },
    {  // iPhone X(Xs,Pro)
      devicePixelRatio: 3,
      width: 375,
      height: 812,
    },
    {  // iPhone 12 Pro(Xs,Pro)
      devicePixelRatio: 3,
      width: 390,
      height: 844,
    },
  ] 
  var devicePixelRatio = window.devicePixelRatio
  var width = window.screen.width
  var height = window.screen.height
  return xSeriesConfig.some(item => item.devicePixelRatio === devicePixelRatio && item.width === width && item.height === height);
}


/**
  版本比较
  versionLeft:
  versionRight
**/
export function versionCompare (versionLeft, versionRight) {
  const arr1 = versionLeft.split('.')
  const arr2 = versionRight.split('.')
  const minLength = Math.min(arr1.length, arr2.length)
  let position = 0
  let diff = 0
  while (position < minLength && ((diff = parseInt(arr1[position]) - parseInt(arr2[position])) === 0)) {
    position++
  }
  diff = (diff !== 0) ? diff : (arr1.length - arr2.length)
  return diff > 0
}


/**
 * h5 响应式适配
 */
export function reactive(){
  const baseWidth = 428
  const documentWidth = $(document).width()>775?775:$(document).width()
  const zoom = baseWidth/documentWidth
  $('html').css({
    'font-size': 10/zoom+'px'
  })
}

// 获取cookie信息
export function getCookie(name) {
  var prefix = name + "="
  var start = document.cookie.indexOf(prefix)
  if (start == -1) {
      return '';
  }
  var end = document.cookie.indexOf(";", start + prefix.length)
  if (end == -1) {
    end = document.cookie.length;
  }
  var value = document.cookie.substring(start + prefix.length, end)
  return unescape(value);
}

// 用户是否已登陆
export function isLogin()
{
  let loginName = getCookie('_currentUserName');
  return loginName == ''? 0:1;
}

// 特殊请求地址,需要区分是否登录,来获取不同地址
export function getUserBathPath(isLogin)
{
  return isLogin== 1? 'memberuserapi/':'memberuserapinoauth/'
}

/**
 * 是否在微信/微博中打开
 * @returns 
 */
export function isWxWeibo() {
  var ua = navigator.userAgent.toLowerCase();
  if (ua.match(/MicroMessenger/i) == "micromessenger" || ua.match(/WeiBo/i) == "weibo") {
    if ($(".mask_openApp")) $(".mask_openApp").show();
    if (!location.href.match(/from=wx_weibo/)) {
      history.pushState('', '', location.href + '?from=wx_weibo')
    }
    return true;
  }
  return false;
}

/**
 * 判定是不是IOS QQ浏览器
 */
export function isQQBrowser(){
  return navigator.userAgent.indexOf('MQQBrowser')>-1
}

/**
 * 倒计时计算
 * @param {*} timestamp 
 * @param {*} type 
 * @returns 
 */
export function filterTimestamp (timestamp, type) {
  if (!timestamp) return ''
  let time
  if (typeof timestamp === 'number') {
    time = dayjs(timestamp.toString().length === 10 ? timestamp * 1000 : timestamp).locale('zh-cn')
  } else {
    time = dayjs(timestamp).locale('zh-cn')
  }
  switch (type) {
    case 1: {
      const diffTime = dayjs().diff(time)
      if (diffTime < 60 * 1000) return '刚刚'
      if (diffTime < 60 * 60 * 1000) return dayjs().diff(time, 'minute') + '分钟前'
      if (diffTime < 60 * 60 * 24 * 1000) return dayjs().diff(time, 'hour') + '小时前'
      return time.format('YYYY-MM-DD HH:mm')
    }
    case 2:
      return time.format('YYYY-MM-DD HH:mm:ss')
    case 3:
      return time.format('YYYY-MM-DD HH:mm')
    case 4:
      return time.format('YYYY-MM-DD')
    case 5:
      if (dayjs().diff(time, 'year') === 0) {
        return time.format('MM-DD HH:mm:ss')
      } else {
        return time.format('YYYY-MM-DD HH:mm:ss')
      }
    case 6:
      if (dayjs().diff(time, 'year') === 0) {
        return time.format('MM-DD HH:mm')
      } else {
        return time.format('YYYY-MM-DD HH:mm')
      }
    case 7:
      if (dayjs().diff(time, 'year') === 0) {
        return time.format('MM-DD')
      } else {
        return time.format('YYYY-MM-DD')
      }
    default:
      return ''
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容