formatMoney.js 2.73 KB
let install = function (Vue) {
  /**
   * 分转元1,000,000.01
   *  @param  {Number || String} s 需要转换的数据
   *  @return {String} 返回转换后的数据
   * ***/
  Vue.prototype.$fenFormatYuan = (s) => {
    if (!s) {
      return 0
    }
    s = s.toString()
    if (s.length > 2) {
      s = s.substring(0, s.length - 2) + "." + s.substring(s.length - 2, s.length);
      if (/[^0-9\.]/.test(s)) {
        return "";
      }
      s = s.replace(/^(\d*)$/, "$1.");
      s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
      s = s.replace(".", ",");
      var re = /(\d)(\d{3},)/;
      while (re.test(s)) {
        s = s.replace(re, "$1,$2");
      }
      s = s.replace(/,(\d\d)$/, ".$1");
      return s.replace(/^\./, "0.")
    } else {
      if (s.length == 2) {
        return "0." + s;
      } else if (s.length == 1) {
        return "0.0" + s;
      }
    }
  },
    /**
     * 元转分
     *  @param  {Number || String} s 需要转换的数据
     *  @param  {Number || String} digit 转换倍数 默认100倍
     *  @return {Number} 返回转换后的数据
     * ***/
    Vue.prototype.$yuanFormatFen = (s, digit = 100) => {
      if (!s) {
        return ''
      }
      s = s.replace(",", "");
      if (s.indexOf('.') > 0) {
        if (s.split('.')[1].length == 2) {
          s = s.replace(".", "");
        } else if (s.split('.')[1].length == 1) {
          s = s.replace(".", "") + '0';
        } else if (s.split('.')[1].length == 0) {
          s = s.replace(".", "") + '00';
        }
      } else {
        s = s.replace(".", "") + '00';
      }

      return s
    }
  // 保留两位小数
  Vue.prototype.$formatNum = (x) => {
    if (!x) {
      return '0.00'
    }
    var f = parseFloat(x);
    if (isNaN(f)) {
      return false;
    }
    var f = Math.round(x * 100) / 100;
    var s = f.toString();
    var rs = s.indexOf('.');
    if (rs < 0) {
      rs = s.length;
      s += '.';
    }
    while (s.length <= rs + 2) {
      s += '0';
    }
    return s
  }
  Vue.prototype.$formatDot = (s) => {
    if (!s) {
      return ''
    }
    return s.replace(new RegExp(",", "gm"), "").replace(".", "");
  }
  // 数字转为千分位
  Vue.prototype.$numMoney = (oldNum, isFixed) => {
    if (oldNum) {
      let n = Number(oldNum)
      if (oldNum === "") return {};
      let newNum = n.toLocaleString("en-US"); 
      const numArr = newNum.split("."); 
      if (!isFixed) { 
        if (!numArr[1]) { 
          newNum = newNum + ".00";
        } else if (numArr[1].length === 1) { 
          newNum = newNum + "0";
        } else if (numArr[1].length >= 2) { 
          newNum = numArr[0] + "." + numArr[1].substr(0, 2);
        }
      }
      return newNum
    } else {
      return '0.00'
    }
  }
}
export default { install };