nsn-util
Version:
NSN工具辅助组件
223 lines (169 loc) • 6.97 kB
JavaScript
;
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "isNumber", {
enumerable: true,
get: function get() {
return _lodash.isNumber;
}
});
Object.defineProperty(exports, "isInteger", {
enumerable: true,
get: function get() {
return _lodash.isInteger;
}
});
Object.defineProperty(exports, "isNaN", {
enumerable: true,
get: function get() {
return _lodash.isNaN;
}
});
exports.YI_NUM = exports.YI = exports.WANG_NUM = exports.WANG = exports.QIAN_NUM = exports.QIAN = exports.getValue = exports.getPercent = exports.convertQIAN = exports.convertWANG = exports.convertYI = exports.splitUnit = exports.translateNumUnit = exports.translate = void 0;
var _nsnConst = require("nsn-const");
var NType = _interopRequireWildcard(require("./NType"));
var _lodash = require("lodash");
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var QIAN = '千';
exports.QIAN = QIAN;
var WANG = '万';
exports.WANG = WANG;
var YI = '亿';
/** 千 */
exports.YI = YI;
var QIAN_NUM = 1000;
/** 万 */
exports.QIAN_NUM = QIAN_NUM;
var WANG_NUM = 10000;
/** 亿 */
exports.WANG_NUM = WANG_NUM;
var YI_NUM = 100000000;
/**
* 6位数字以下直接以千分符分割
* 大于6位,小于8位,数字后面加单位 “万”
* 大于8位,数字后面加单位 “亿”
*
* @param num 需要被转换的数值
* @param point 保留小数位
*/
exports.YI_NUM = YI_NUM;
var translate = function translate(num) {
var point = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
var tnum = translateNumUnit(num, point);
return "".concat(tnum[0].toLocaleString()).concat(tnum[1]);
};
/**
* 6位数字以下直接以千分符分割
* 大于6位,小于8位,数字后面加单位 “万”
* 大于8位,数字后面加单位 “亿”
*
* @param num 需要被转换的数值
* @param point 保留小数位
*/
exports.translate = translate;
var translateNumUnit = function translateNumUnit(num) {
var point = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
if (num) {
// 将数字转换为字符串,然后通过split方法用.分隔,取到第0个
var numStr = num.toString().split(_nsnConst.NConst.DOT)[0];
if (numStr.length >= 6 && numStr.length <= 8) {
// 数字大于6位,小于8位,数字后面加单位万
var decimal = numStr.substring(numStr.length - 4, numStr.length - 4 + point); // 由千位,百位组成的一个数字
if (NType.isString(num)) {
return [parseFloat(parseInt("".concat(parseFloat(num) / WANG_NUM)) + _nsnConst.NConst.DOT + decimal), WANG];
}
return [parseFloat(parseInt("".concat(num / WANG_NUM)) + _nsnConst.NConst.DOT + decimal), WANG];
} else if (numStr.length > 8) {
// 数字大于8位,数字后面加单位亿
var _decimal = numStr.substring(numStr.length - 8, numStr.length - 8 + point);
if (NType.isString(num)) {
return [parseFloat(parseInt("".concat(parseFloat(num) / YI_NUM)) + _nsnConst.NConst.DOT + _decimal), YI];
}
return [parseFloat(parseInt("".concat(num / YI_NUM)) + _nsnConst.NConst.DOT + _decimal), YI];
} // 判断数字有多长,如果小于6,,表示10万以内的数字,直接显示
if (NType.isString(num)) {
return [parseFloat(num), _nsnConst.NConst.EMPTY];
}
return [num, _nsnConst.NConst.EMPTY];
}
return [0, _nsnConst.NConst.EMPTY];
};
/**
* 将带有转换单位的数字拆分为数字+单位
*/
exports.translateNumUnit = translateNumUnit;
var splitUnit = function splitUnit(translateNum) {
if (translateNum) {
if (translateNum.endsWith(QIAN)) {
return [translateNum.split(QIAN)[0], QIAN];
} else if (translateNum.endsWith(WANG)) {
return [translateNum.split(WANG)[0], WANG];
} else if (translateNum.endsWith(YI)) {
return [translateNum.split(YI)[0], YI];
}
}
return [translateNum || _nsnConst.NConst.DASHED, _nsnConst.NConst.EMPTY];
};
exports.splitUnit = splitUnit;
var convertWQ = function convertWQ(unit, num) {
var point = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;
if (num) {
if (NType.isString(num)) {
var numt = parseFloat("".concat(num).replaceAll(',', ''));
return parseFloat((numt / unit).toFixed(point));
}
var numw = num / unit;
return parseFloat(numw.toFixed(point));
}
return 0;
};
/**
* 以 亿 为单位转换数字,保留指定小数位
*/
var convertYI = function convertYI(num, point) {
return convertWQ(YI_NUM, num, point);
};
/**
* 以 万 为单位转换数字,保留指定小数位
*/
exports.convertYI = convertYI;
var convertWANG = function convertWANG(num, point) {
return convertWQ(WANG_NUM, num, point);
};
/**
* 以 千 为单位转换数字,保留指定小数位
*/
exports.convertWANG = convertWANG;
var convertQIAN = function convertQIAN(num, point) {
return convertWQ(QIAN_NUM, num, point);
};
/**
* 将小数转换为带有百分号的字符,保留指定小数位。
* @returns 数字未定义时,返回短横线
*/
exports.convertQIAN = convertQIAN;
var getPercent = function getPercent(v) {
var point = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
if (v) {
return (v * 100).toFixed(point) + '%';
}
return _nsnConst.NConst.DASHED;
};
/**
* 安全方式返回数字
* @returns 数字未定义时,返回 0
*/
exports.getPercent = getPercent;
var getValue = function getValue(num) {
if (num) {
if (NType.isString(num)) {
return parseFloat(num);
}
return num;
}
return 0;
};
exports.getValue = getValue;