天天看点

【全部干货】vue中封装的常用方法(持续更新)

【推荐文章】​​Topology可视化绘图引擎​​

1.获取时间(一般时间选择器默认时间用到)

//获取当前时间,day为number,getDay(-1):昨天的日期;getDay(0):今天的日期;getDay(1):明天的日期;
getDay(day) {
      let today = new Date(),
        targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
      today.setTime(targetday_milliseconds);
      let tYear = today.getFullYear(),
        tMonth = today.getMonth(),
        tDate = today.getDate(),
        tHour = today.getHours(),
        tMinute = today.getMinutes(),
        tSeconds = today.getSeconds();
      tMonth = this.doHandleMonth(tMonth + 1);
      tDate = this.doHandleMonth(tDate);
      tHour = this.doHandleMonth(tHour);
      tMinute = this.doHandleMonth(tMinute);
      tSeconds = this.doHandleMonth(tSeconds);
      return tYear + '-' + tMonth + '-' + tDate + ' ' + tHour + ':' + tMinute + ':' + tSeconds;
 },      

2.判断数据是否是json

//判断数据源是不是json数据
    isJsonString(str) {
      try {
        if (typeof JSON.parse(str) == 'object') {
          return true;
        }
      } catch (e) {
        console.log('e', e);
      }
      return false;
    },      

3.获取指定位置的天气信息:

//获取天气信息
    getWeather() {
      axios
        .get('https://geoapi.qweather.com/v2/city/lookup', {
          params: {
            location: '杭州市',
            key: '',
            _t: new Date().getTime()
          },
        })
        .then(({ data: res }) => {
          // console.log(res);
          if (res.code != 200) {
            return this.$message.error('获取地理位置定位ID(locationID)失败');
          }
          if (res.location.length > 0) {
            axios
              .get('https://devapi.qweather.com/v7/weather/now', {
                params: {
                  location: res.location[0].id,
                  key: '',
                  _t: new Date().getTime()
                },
              })
              .then(({ data: res1 }) => {
                // console.log('res1', res1);
                if (res1.status != 0) {
                  return this.$message.error('获取天气信息失败');
                }
                this.$set(this.weatherInfo, 'wea', res1.now.text);
                this.$set(this.weatherInfo, 'tem', res1.now.temp);
                this.$set(this.weatherInfo, 'wea_img', res1.fxLink);
              })
              .catch((error) => {
                console.log(error);
                return false;
              });
          } else {
            return this.$message.error('无法获取地理位置定位ID(locationID)');
          }
        })
        .catch((e) => {
          console.log(e);
          return false;
        });
    },      

4.判断浏览器类型

/**
 * 判断浏览器的类型
 */
export function browserType() {
    var userAgent = navigator.userAgent.toLowerCase();
    var testCenter = {
        ie: function isIE() { //ie?
            if (!!window.ActiveXObject || "ActiveXObject" in window)
                return true;
            else
                return false;
        },
        edge: () => {
            return /dge/.test(userAgent)
        },
        chrome: () => {
            return /chrome/.test(userAgent)
        },
        safari: () => {
            return /safari/.test(userAgent) && !(/chrome/.test(userAgent))
        },
        opera: () => {
            return /opera/.test(userAgent)
        },
        msie: () => {
            return /msie/.test(userAgent) && !/opera/.test(userAgent)
        },
        mozilla: () => {
            return /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
        }
    };
    var browserObj = {};
    for (var k in testCenter) {
        var result = testCenter[k]();
        var version = (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1];
        if (result) {
            browserObj.browser = k;
            browserObj.version = version;
            return browserObj;
        }
    }
}      

5.判断object类型

//判断Object数据类型
export function isType(obj) {
    var type = Object.prototype.toString.call(obj);
    if (type == '[object Array]') {
        return 'Array';
    } else if (type == '[object Object]') {
        return "Object"
    } else {
        return 'param is no object type';
    }
}      

6.全局时间格式封装

export function getSystemDate(param, dateVal) {
    let systemDate = dateVal ? new Date(dateVal) : new Date(),
        year = systemDate.getFullYear(),
        month = systemDate.getMonth() + 1,
        date = systemDate.getDate(),
        hours = systemDate.getHours(),
        minutes = systemDate.getMinutes(),
        seconds = systemDate.getDate(),
        milliseconds = systemDate.getMilliseconds();
    month = month < 10 ? '0' + month : month;
    date = date < 10 ? '0' + date : date;
    hours = hours < 10 ? '0' + hours : hours;
    minutes = minutes < 10 ? '0' + minutes : minutes;
    seconds = seconds < 10 ? '0' + seconds : seconds;
    if (param == 0) {
        return year + '-' + month + '-' + date;
    } else if (param == 1) {
        return year + '-' + month + '-' + date + " " + hours + ":" + minutes + ":" + seconds;
    } else if (param == 2) {
        return year + '-' + month + '-' + date + " " + hours + ":" + minutes + ":" + seconds + '.' + milliseconds;
    } else if (param == 3) {
        return year + '-' + month;
    } else if (param == 4) {
        return year
    }
}      

7.判断对象里面是否为空

const isEmpty = (obj) => {
    for(let key in obj){
        return false
    }
    return true
};

isEmpty({}); //true
//这里你记得分两次打印,return false 后面都不走了
isEmpty({csdn: '尔嵘'}); // false      

8.百度地图坐标和腾讯地图坐标互转

/**
* 坐标转换,百度地图坐标转换成腾讯地图坐标
* lng 腾讯经度(pointy)
* lat 腾讯纬度(pointx)
* 经度>纬度
*/
bMapToQQMap(lng, lat) {
    if (lng == null || lng == '' || lat == null || lat == '') return [lng, lat];
        var x_pi = 3.14159265358979324;
        var x = parseFloat(lng) - 0.0065;
        var y = parseFloat(lat) - 0.006;
        var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
        var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
        var lng = (z * Math.cos(theta)).toFixed(7);
        var lat = (z * Math.sin(theta)).toFixed(7);
    return [lng, lat];
},

/**
* 坐标转换,腾讯地图转换成百度地图坐标
* lng 腾讯经度(pointy)
* lat 腾讯纬度(pointx)
* 经度>纬度
*/
qqMapToBMap(lng, lat) {
    if (lng == null || lng == '' || lat == null || lat == '') return [lng, lat];
        var x_pi = 3.14159265358979324;
        var x = parseFloat(lng);
        var y = parseFloat(lat);
        var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
        var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
        var lng = (z * Math.cos(theta) + 0.0065).toFixed(5);
        var lat = (z * Math.sin(theta) + 0.006).toFixed(5);
        return [lng, lat];
},      

9.根据日期(YYYY-MM-DD)获取星期几

export function getWeekByDate(dateString) {
  var date;
  if (!dateString) {
    date = new Date();
  } else {
    var dateArray = dateString.split("-");
    date = new Date(dateArray[0], parseInt(dateArray[1] - 1), dateArray[2]);
  }
  //var weeks = new Array("日", "一", "二", "三", "四", "五", "六");
  //return "星期" + weeks[date.getDay()];
  return "星期" + "日一二三四五六".charAt(date.getDay());
}      
//时间戳转化成时间格式
export function timeFormat(timestamp) {
    //timestamp是整数,否则要parseInt转换,不会出现少个0的情况
    //如果timestamp是10位数的需要 timestamp* 1000
    var time = new Date(timestamp);
    var year = time.getFullYear();
    var month = time.getMonth() + 1;
    var date = time.getDate();
    var hours = time.getHours();
    var minutes = time.getMinutes();
    var seconds = time.getSeconds();
    month = month < 10 ? '0' + month : month;
    date = date < 10 ? '0' + date : date;
    hours = hours < 10 ? '0' + hours : hours;
    minutes = minutes < 10 ? '0' + minutes : minutes;
    seconds = seconds < 10 ? '0' + seconds : seconds;

    return year + '-' + month + '-' + date + ' ' + hours + ':' + minutes + ':' + seconds;
}      
// 数组对象求和
export function countTotal(arr, keyName) {
  let $total = 0;
  $total = arr.reduce(function(total, currentValue, currentIndex, arr) {
    return currentValue[keyName] ? (total + Number(currentValue[keyName])) : total;
  }, 0);
  return $total;
}      
// 数组对象求和
export function countTotal(arr, keyName) {
  let sum = 0;
  sum = arr.reduce(function(total, currentValue, currentIndex, arr) {
    return currentValue[keyName] ? (total + Number(currentValue[keyName])) : total;
  }, 0);
  return sum;
}      

继续阅读