tongtong-utils
Version:
String类
378 lines (331 loc) • 11.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.validateDiscount = exports.validateUnit = exports.validateMaxInt = exports.setWebPageLabel = exports.getIconNameByNodeType = exports.recursiveTreeNode = exports.getChromeVersion = exports.reFixUrl = exports.importCDN = undefined;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.fixedZero = fixedZero;
exports.getTimeDistance = getTimeDistance;
exports.getPlainNode = getPlainNode;
exports.getRoutes = getRoutes;
exports.getPageQuery = getPageQuery;
exports.getQueryPath = getQueryPath;
exports.isUrl = isUrl;
exports.formatWan = formatWan;
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
var _qs = require('qs');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
// 左边补零
function fixedZero(val) {
var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
if (isNaN(val)) {
return val;
}
val = val.toString();
while (val.length < length) {
val = '0' + val;
}
return val;
}
function getTimeDistance(type) {
var now = new Date();
var oneDay = 1000 * 60 * 60 * 24;
if (type === 'today') {
now.setHours(0);
now.setMinutes(0);
now.setSeconds(0);
return [(0, _moment2.default)(now), (0, _moment2.default)(now.getTime() + (oneDay - 1000))];
}
if (type === 'week') {
var day = now.getDay();
now.setHours(0);
now.setMinutes(0);
now.setSeconds(0);
if (day === 0) {
day = 6;
} else {
day -= 1;
}
var beginTime = now.getTime() - day * oneDay;
return [(0, _moment2.default)(beginTime), (0, _moment2.default)(beginTime + (7 * oneDay - 1000))];
}
if (type === 'month') {
var _year = now.getFullYear();
var month = now.getMonth();
var nextDate = (0, _moment2.default)(now).add(1, 'months');
var nextYear = nextDate.year();
var nextMonth = nextDate.month();
return [(0, _moment2.default)(_year + '-' + fixedZero(month + 1) + '-01 00:00:00'), (0, _moment2.default)((0, _moment2.default)(nextYear + '-' + fixedZero(nextMonth + 1) + '-01 00:00:00').valueOf() - 1000)];
}
var year = now.getFullYear();
return [(0, _moment2.default)(year + '-01-01 00:00:00'), (0, _moment2.default)(year + '-12-31 23:59:59')];
}
function getPlainNode(nodeList) {
var parentPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
var arr = [];
nodeList.forEach(function (node) {
var item = node;
item.path = (parentPath + '/' + (item.path || '')).replace(/\/+/g, '/');
item.exact = true;
if (item.children && !item.component) {
arr.push.apply(arr, _toConsumableArray(getPlainNode(item.children, item.path)));
} else {
if (item.children && item.component) {
item.exact = false;
}
arr.push(item);
}
});
return arr;
}
// export function digitUppercase(n) {
// return nzh.toMoney(n);
// }
function getRelation(str1, str2) {
if (str1 === str2) {
console.warn('Two path are equal!'); // eslint-disable-line
}
var arr1 = str1.split('/');
var arr2 = str2.split('/');
if (arr2.every(function (item, index) {
return item === arr1[index];
})) {
return 1;
}
if (arr1.every(function (item, index) {
return item === arr2[index];
})) {
return 2;
}
return 3;
}
function getRenderArr(routes) {
var renderArr = [];
renderArr.push(routes[0]);
var _loop = function _loop(i) {
// 去重
renderArr = renderArr.filter(function (item) {
return getRelation(item, routes[i]) !== 1;
});
// 是否包含
var isAdd = renderArr.every(function (item) {
return getRelation(item, routes[i]) === 3;
});
if (isAdd) {
renderArr.push(routes[i]);
}
};
for (var i = 1; i < routes.length; i += 1) {
_loop(i);
}
return renderArr;
}
// /**
// * Get router routing configuration
// * { path:{name,...param}}=>Array<{name,path ...param}>
// * @param {string} path
// * @param {routerData} routerData
// */
function getRoutes(path, routerData) {
var routes = Object.keys(routerData).filter(function (routePath) {
return routePath.indexOf(path) === 0 && routePath !== path;
});
// Replace path to '' eg. path='user' /user/name => name
routes = routes.map(function (item) {
return item.replace(path, '');
});
// Get the route to be rendered to remove the deep rendering
var renderArr = getRenderArr(routes);
// Conversion and stitching parameters
var renderRoutes = renderArr.map(function (item) {
var exact = !routes.some(function (route) {
return route !== item && getRelation(route, item) === 1;
});
return _extends({
exact: exact
}, routerData['' + path + item], {
key: '' + path + item,
path: '' + path + item
});
});
return renderRoutes;
}
function getPageQuery() {
return (0, _qs.parse)(window.location.href.split('?')[1]);
}
function getQueryPath() {
var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var search = (0, _qs.stringify)(query);
if (search.length) {
return path + '?' + search;
}
return path;
}
/* eslint no-useless-escape:0 */
var reg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;
function isUrl(path) {
return reg.test(path);
}
function formatWan(val) {
var v = val * 1;
if (!v || Number.isNaN(v)) {
return '';
}
var result = val;
if (val > 10000) {
result = Math.floor(val / 10000);
result = result + '\u4E07';
}
return result;
}
var importCDN = exports.importCDN = function importCDN(url, name) {
return new Promise(function (resolve) {
var dom = document.createElement('script');
dom.src = url;
dom.type = 'text/javascript';
dom.onload = function () {
resolve(window[name]);
};
document.head.appendChild(dom);
});
};
var reFixUrl = exports.reFixUrl = function reFixUrl(url, obj) {
var queryString = [];
if (obj) {
for (var i in obj) {
if (obj[i] instanceof Array) {
var list = obj[i];
for (var j in list) {
var item = list[j];
if ((typeof item === 'undefined' ? 'undefined' : _typeof(item)) == "object") {
for (var key in item) {
queryString.push(i + '[' + key + ']=' + item[key]);
}
} else {
queryString.push(i + "=" + item);
}
}
} else {
if (obj[i] == null) {
queryString.push(i + "=");
} else {
queryString.push(i + "=" + obj[i]);
}
}
}
queryString = queryString.join("&");
if (url.indexOf("?") > -1) {
return url + "&" + queryString;
} else {
return url + "?" + queryString;
}
}
};
var getChromeVersion = exports.getChromeVersion = function getChromeVersion() {
var arr = navigator.userAgent.split(' ');
var chromeVersion = '';
for (var i = 0; i < arr.length; i++) {
if (/chrome/i.test(arr[i])) {
chromeVersion = arr[i];
}
}
if (chromeVersion) {
return Number(chromeVersion.split('/')[1].split('.')[0]);
} else {
return false;
}
};
var recursiveTreeNode = exports.recursiveTreeNode = function recursiveTreeNode(treeNode, getLeafValue, getParentValue) {
if (treeNode.children.length === 0) {
return getLeafValue(treeNode);
}
var childrenValue = treeNode.children.map(function (treeNodeChild) {
return recursiveTreeNode(treeNodeChild, getLeafValue, getParentValue);
});
return getParentValue(treeNode, childrenValue);
};
var getIconNameByNodeType = exports.getIconNameByNodeType = function getIconNameByNodeType(type) {
switch (type) {
case 'org':
return 'icon-org';
case 'icon-org':
return 'icon-org';
case 'park':
return 'icon-park';
case 'icon-park':
return 'icon-park';
case 'role':
return 'icon-gangwei';
case 'user':
return 'user';
case 'icon-user':
return 'user';
case 'passageway':
return 'icon-tongdao';
case 'device':
return 'icon-chedao';
case 'unit':
return 'icon-bumen';
case 'icon-unit':
return 'icon-bumen';
case 'icon-root':
return 'icon-quanxian';
case 'icon-none':
return 'icon-quanxian';
case 'icon-project':
return 'icon-xiangmu';
case 'groupbusiness':
return 'icon-org';
case 'allbusiness':
return 'icon-org';
case 'business':
return 'icon-org';
default:
return type;
}
};
// 设置网页标签
var setWebPageLabel = exports.setWebPageLabel = function setWebPageLabel(title, favIcon) {
if (favIcon) {
var link = document.querySelector("link[rel*='icon']") || document.createElement('link');
link.type = 'image/x-icon';
link.rel = 'shortcut icon';
link.href = favIcon;
document.getElementsByTagName('head')[0].appendChild(link);
}
if (title) {
document.title = title;
}
};
/** 表单验证 */
// 后台要求的int型,最大值不能超过2147483647
var validateMaxInt = exports.validateMaxInt = function validateMaxInt(rule, value, callback) {
if (value > 2147483647) {
callback("数值不能超过2147483647,请输入有效数值");
} else {
callback();
return;
}
};
// 只能填写小数点后2位的正实数 0.01
var validateUnit = exports.validateUnit = function validateUnit(rule, value, callback) {
if (value !== "" && !/(^(([1-9]{1}\d*)|(0{1}))(\.\d{0,2})?$)/.test(value)) {
callback("只能填写小数点后2位的正实数");
} else {
callback();
return;
}
};
// 小于1并且小数点后一位或者两位的数字 0.1
var validateDiscount = exports.validateDiscount = function validateDiscount(rule, value, callback) {
if (value !== "" && !/([0]+(.[0-9]{1,2})?$)/.test(value) || value < 0) {
callback("请输入小于1并且小数点后一位或者两位的数字");
} else {
callback();
return;
}
};