UNPKG

nsn-util

Version:

NSN工具辅助组件

223 lines (169 loc) 6.97 kB
"use strict"; 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;