tools.js 2.7 KB
/*
 * @Date: 2022-04-18 15:59:42
 * @LastEditors: hookehuyr hookehuyr@gmail.com
 * @LastEditTime: 2022-12-07 22:09:30
 * @FilePath: /swx/src/utils/tools.js
 * @Description: 文件描述
 */
import Taro from '@tarojs/taro'
import moment from '@/utils/moment.min.js'

// 格式化时间
const formatDate = (date) => {
  return moment(date).format('YYYY-MM-DD HH:mm')
};

/**
 * @description 判断浏览器属于平台
 * @returns
 */
const wxInfo = () => {
  let u = navigator.userAgent;
  let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
  let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
  let uAgent = navigator.userAgent.toLowerCase();
  let isTable = (uAgent.match(/MicroMessenger/i) == 'micromessenger') ? true : false;
  let isMobile = window.navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i); // 是否手机端
  let isWx = /micromessenger/i.test(navigator.userAgent); // 是否微信
  let isWxPc = isWx && !isMobile; // PC端微信
  return {
    isAndroid,
    isiOS,
    isTable,
    isWxPc
  };
};

/**
 * @description 判断多行省略文本
 * @param {*} id 目标dom标签
 * @returns
 */
const hasEllipsis = (id) => {
  let oDiv = document.getElementById(id);
  let flag = false;
  if (oDiv.scrollHeight > oDiv.clientHeight) {
    flag = true
  }
  return flag
}

/**
 * @description 解析URL参数
 * @param {*} url
 * @returns
 */
const parseQueryString = url => {
  var json = {};
  var arr = url.indexOf('?') >= 0 ? url.substr(url.indexOf('?') + 1).split('&') : [];
  arr.forEach(item => {
    var tmp = item.split('=');
    json[tmp[0]] = tmp[1];
  });
  return json;
}

/**
 * 字符串包含字符数组中字符的状态
 * @param {*} array 字符数组
 * @param {*} str 字符串
 * @returns 包含状态
 */
const strExist = (array, str) => {
  const exist = array.filter(arr => {
    if (str.indexOf(arr) >= 0) return str;
  })
  return exist.length > 0
}

const randomId = (n) => {
  const charts = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
  var res = '';
  for (var i = 0; i < n; i++) {
    undefined
    var id = Math.ceil(Math.random() * 35);
    res += charts[id];
  }
  return res;
}

/**
 * 获取页面query参数
 */
const pageQuery = () => {
  const instance = Taro.getCurrentInstance();
  let $query = '';
  $query = JSON.stringify(instance.router.params);
  return JSON.parse($query)
}

export { formatDate, wxInfo, hasEllipsis, parseQueryString, strExist, randomId, pageQuery };