美文网首页Vue
vue 一些常用方法封装

vue 一些常用方法封装

作者: 七號7777 | 来源:发表于2020-07-06 10:28 被阅读0次

使用方式:
在使用的页面引入:例:import { tools_downLoad} from '@/libs/date'
使用: tools_downLoad(路径)

菜单:
1、下载压缩包文件
2、数字金额转文字
3、时间增加或减少几天
4、传入时间戳,展示正常的时间格式
5、YYYY月MM月DD日转换为YYYY-MM-DD
6、秒转化成时分秒
7、身份证算出出生年月和性别

1、下载文件:

/**
 * @description 下载文件
 *
 * @param [string] path 路径
 */

export function tools_downLoad(path) {
  let str1 = path.substr(0, 1);
  let pathN = '';
  if (str1 === '/') {
    pathN = path;
  } else {
    pathN = '/' + path;
  }
  var eleLink = document.createElement("a");
  eleLink.setAttribute('target', '_blank')
  var strs = pathN.split("/");
  for (var i = 0; i < strs.length; i++) {
    if (i === strs.length - 1) {
      var filename = strs[i];
    }
  }
  eleLink.download = filename;
  eleLink.style.display = "none";
  eleLink.href = path;
  document.body.appendChild(eleLink);
  eleLink.click();
  document.body.removeChild(eleLink);
}

2、数字金额转文字 函数

/**
 *数字金额转文字  函数
 *
 * @export
 * @param {*} money
 * @returns
 */
export function convertCurrency(money) {
  //汉字的数字
  var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
  //基本单位
  var cnIntRadice = new Array('', '拾', '佰', '仟');
  //对应整数部分扩展单位
  var cnIntUnits = new Array('', '万', '亿', '兆');
  //对应小数部分单位
  var cnDecUnits = new Array('角', '分', '毫', '厘');
  //整数金额时后面跟的字符
  var cnInteger = '整';
  //整型完以后的单位
  var cnIntLast = '元';
  //最大处理的数字
  var maxNum = 999999999999999.9999;
  //金额整数部分
  var integerNum;
  //金额小数部分
  var decimalNum;
  //输出的中文金额字符串
  var chineseStr = '';
  //分离金额后用的数组,预定义
  var parts;
  if (money == '') {
    return '';
  }
  money = parseFloat(money);
  if (money >= maxNum) {
    //超出最大处理数字
    return '';
  }
  if (money == 0) {
    chineseStr = cnNums[0] + cnIntLast + cnInteger;
    return chineseStr;
  }
  //转换为字符串
  money = money.toString();
  if (money.indexOf('.') == -1) {
    integerNum = money;
    decimalNum = '';
  } else {
    parts = money.split('.');
    integerNum = parts[0];
    decimalNum = parts[1].substr(0, 4);
  }
  //获取整型部分转换
  if (parseInt(integerNum, 10) > 0) {
    var zeroCount = 0;
    var IntLen = integerNum.length;
    for (var i = 0; i < IntLen; i++) {
      var n = integerNum.substr(i, 1);
      var p = IntLen - i - 1;
      var q = p / 4;
      var m = p % 4;
      if (n == '0') {
        zeroCount++;
      } else {
        if (zeroCount > 0) {
          chineseStr += cnNums[0];
        }
        //归零
        zeroCount = 0;
        chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
      }
      if (m == 0 && zeroCount < 4) {
        chineseStr += cnIntUnits[q];
      }
    }
    chineseStr += cnIntLast;
  }
  //小数部分
  if (decimalNum != '') {
    var decLen = decimalNum.length;
    for (var i = 0; i < decLen; i++) {
      var n = decimalNum.substr(i, 1);
      if (n != '0') {
        chineseStr += cnNums[Number(n)] + cnDecUnits[i];
      }
    }
  }
  if (chineseStr == '') {
    chineseStr += cnNums[0] + cnIntLast + cnInteger;
  } else if (decimalNum == '') {
    chineseStr += cnInteger;
  }
  return chineseStr;
}

3、时间增加或减少几天

/*
 *时间增加或减少几天
 * date  当前日期 例: 2020-06-10
 * days  增加的天数 例: 30
 * return 增加后的天数
 */
export function addDate(date, days) {
  var d = new Date(date);
  d.setDate(d.getDate() + days);
  var month = d.getMonth() + 1;
  var day = d.getDate();
  if (month < 10) {
    month = "0" + month;
  }
  if (day < 10) {
    day = "0" + day;
  }
  var val = d.getFullYear() + "-" + month + "-" + day;
  return val;
}

4、传入时间戳,展示正常的时间格式 例: formatDate(new Date(时间戳), 'yyyy-MM-dd')

export function formatDate (date, fmt) {
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
  }
  let o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  };
  for (let k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      let str = o[k] + '';
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
    }
  }
  return fmt;
};

function padLeftZero (str) {
  return ('00' + str).substr(str.length);
}

5、YYYY月MM月DD日转换为YYYY-MM-DD

/**
 *@description YYYY月MM月DD日转换为YYYY-MM-DD
 * @param {string}
 * @returns {string}
 */
export function tools_transDate(str) {
  return str.replace('年', '-').replace('月', '-').replace('日', '');
}

6、秒转化成时分秒

/**
 *@description 秒转化成时分秒
 * @param {string}
 * @returns {string}
 */
export function formatSeconds(value) {
  var secondTime = parseInt(value); // 秒
  var minuteTime = 0; // 分
  var hourTime = 0; // 小时
  if (secondTime > 60) { // 如果秒数大于60,将秒数转换成整数
    // 获取分钟,除以60取整数,得到整数分钟
    minuteTime = parseInt(secondTime / 60);
    // 获取秒数,秒数取佘,得到整数秒数
    secondTime = parseInt(secondTime % 60);
    // 如果分钟大于60,将分钟转换成小时
    if (minuteTime > 60) {
      // 获取小时,获取分钟除以60,得到整数小时
      hourTime = parseInt(minuteTime / 60);
      // 获取小时后取佘的分,获取分钟除以60取佘的分
      minuteTime = parseInt(minuteTime % 60);
    }
  }
  var result = "" + parseInt(secondTime) + "秒";

  if (minuteTime > 0) {
    result = "" + parseInt(minuteTime) + "分" + result;
  }
  if (hourTime > 0) {
    result = "" + parseInt(hourTime) + "小时" + result;
  }
  return result;
}

7、身份证算出出生年月和性别

/**
 * @description 身份证算出出生年月和性别
 * @param [string] 身份证号码
 */

export function tools_calcIdentiyInfo(IDCard) {
  // 获取性别
  let sex = parseInt(IDCard.substr(16, 1)) % 2 == 1 ? '男' : '女';
  let brith = IDCard.substring(6, 10) + "-" + IDCard.substring(10, 12) + "-" + IDCard.substring(12, 14);
  //获取出生年月日
  //IDCard.substring(6,10) + "-" + IDCard.substring(10,12) + "-" + IDCard.substring(12,14);
  var yearBirth = IDCard.substring(6, 10);
  var monthBirth = IDCard.substring(10, 12);
  var dayBirth = IDCard.substring(12, 14);
  //获取当前年月日并计算年龄
  var myDate = new Date();
  var monthNow = myDate.getMonth() + 1;
  var dayNow = myDate.getDay();
  var age = myDate.getFullYear() - yearBirth;
  if (monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) {
    age--;
  }
  let obj = {
    sex,
    birth: brith,
    age
  }
  return obj;
}

相关文章

网友评论

    本文标题:vue 一些常用方法封装

    本文链接:https://www.haomeiwen.com/subject/gotwqktx.html