zcloud-ui
Version:
A Component Library for Vue.js.
620 lines (559 loc) • 18.4 kB
JavaScript
;
exports.__esModule = true;
exports.regexp = exports.getUaName = exports.getSelectValue = exports.reverseData = exports.sleep = exports.getAnyDay = exports.jumpAddress = exports.ftime = exports.filterToken = exports.downloadFile = exports.delEvent = exports.addEvent = exports.encryption = exports.changeImgSize = exports.copyValue = exports.downloadFileIf = exports.formatFile = exports.getFileType = exports.tirggerEvent = exports.getPreMonth = exports.getDaySpace = exports.format = exports.getNowFormatDate = exports.parseNum = exports.getType = exports.parseMoneyPM = exports.parseMoney = undefined;
var _pdf = require('./img/pdf.png');
var _pdf2 = _interopRequireDefault(_pdf);
var _package = require('./img/package.png');
var _package2 = _interopRequireDefault(_package);
var _noimage = require('./img/noimage.png');
var _noimage2 = _interopRequireDefault(_noimage);
var _doc = require('./img/doc.png');
var _doc2 = _interopRequireDefault(_doc);
var _txt = require('./img/txt.png');
var _txt2 = _interopRequireDefault(_txt);
var _excel = require('./img/excel.png');
var _excel2 = _interopRequireDefault(_excel);
var _aesMinMin = require('zcloud-ui/lib/utils/aes/aes-min.min.js');
var _aesMinMin2 = _interopRequireDefault(_aesMinMin);
var _sha256Min = require('zcloud-ui/lib/utils/sha256/sha256.min.js');
var _sha256Min2 = _interopRequireDefault(_sha256Min);
var _index = require('zcloud-ui/lib/config/index');
var _download = require('zcloud-ui/lib/utils/download');
var _download2 = _interopRequireDefault(_download);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* 金额格式化
* @param {*str} n
*/
// 环境配置
/**
* 密码加密处理
*/
// 格式化图片
var parseMoney = exports.parseMoney = function parseMoney(n) {
var _str = '';
if (isNaN(n)) {
return;
}
var re = /^[0-9]*[1-9][0-9]*$/; // 判断是不是整数
if (re.test(n) || n == 0) {
//eslint-disable-line
if (n == 0) {
//eslint-disable-line
_str = n + '.00';
} else {
_str = parseNum(n) + '.00';
}
} else {
var k = '.' + n.toString().split('.')[1]; // 截取小数
if (k.length <= 2) {
k += '0';
}
k = k.substr(0, 3);
var h = JSON.parse(n.toString().split('.')[0]);
_str = parseNum(h) + k;
}
return _str;
};
/**
* 金额格式化,可正负
* @param {*} value
*/
// daf
var parseMoneyPM = exports.parseMoneyPM = function parseMoneyPM(value) {
var show = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '--';
value = Number(value);
if (value === 0) {
return '0.00';
}
if (!value || Number.isNaN(value)) {
return show;
}
var title = value < 0 ? '-' : '';
return title + parseMoney(Math.abs(value));
};
// 获取类型
var getType = exports.getType = function getType(obj) {
return Object.prototype.toString.call(obj).slice(8, -1);
};
/**
* 每3位加个','
* @param {*} num
*/
var parseNum = exports.parseNum = function parseNum(num) {
var list = new String(num).split('').reverse(); // eslint-disable-line no-new-wrappers
for (var i = 0; i < list.length; i++) {
if (i % 4 === 3) {
list.splice(i, 0, ',');
}
}
return list.reverse().join('');
};
/**
* 获取当前时间,格式 yyyy-mm-dd
*/
var getNowFormatDate = exports.getNowFormatDate = function getNowFormatDate() {
var date = new Date();
var seperator1 = '-';
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = '0' + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = '0' + strDate;
}
var currentdate = year + seperator1 + month + seperator1 + strDate;
return currentdate;
};
/**
* 时间格式化
* @param {*Date/String} time new Date()
* @param {*} fmt //yyyy-MM-dd
*/
var format = exports.format = function format(time) {
var fmt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'yyyy-MM-dd';
if (getType(time) === 'String') {
if (!time) return '';
time = new Date(time);
}
var o = {
'M+': time.getMonth() + 1, // 月份
'd+': time.getDate(), // 日
'H+': time.getHours(), // 小时
'h+': time.getHours(), // 小时
'm+': time.getMinutes(), // 分
's+': time.getSeconds(), // 秒
'q+': Math.floor((time.getMonth() + 3) / 3), // 季度
S: time.getMilliseconds() // 毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (time.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
}
}
return fmt;
};
/**
* 获取2个时间的间距
* @param {*Date/String }day1 时间1
* @param {*Date/String }day1 时间2
* @return {* int} day 时间
*/
var getDaySpace = exports.getDaySpace = function getDaySpace(day1, day2) {
if (getType(day1) === 'String') {
if (!day1) return '';
day1 = new Date(day1);
}
if (getType(day2) === 'String') {
if (!day2) return '';
day2 = new Date(day2);
}
return Math.ceil(Math.abs(day1.getTime() - day2.getTime()) / 86400000);
};
/**
* 获取上一个月
* @param {* new Date()} date
*/
var getPreMonth = exports.getPreMonth = function getPreMonth(msg) {
var date = format(msg, 'yyyy-MM');
var arr = date.split('-'),
year = arr[0],
// 获取当前日期的年份
month = arr[1],
// 获取当前日期的月份
day = arr[2]; // 获取当前日期的日
var year2 = year,
month2 = parseInt(month) - 1;
if (month2 === 0) {
year2 = parseInt(year2) - 1;
month2 = 12;
}
var day2 = day,
days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if (day2 > days2) {
day2 = days2;
}
if (month2 < 10) {
month2 = '0' + month2;
}
var t2 = year2 + '-' + month2;
return t2;
};
/**
* 注册自定义事件,并触发
*/
var tirggerEvent = exports.tirggerEvent = function tirggerEvent() {
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'resize';
var myEvent = new Event(name);
window.dispatchEvent(myEvent);
};
/**
*
* @param {*文件上传支持的类型} item
* @param {*定制化上传类型} type
*/
var getFileType = exports.getFileType = function getFileType(item) {
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';
if (!item) {
return null;
}
var supportType = {
// 支持上传的文件类型
img: ['image', 'pdf'],
zto: ['image', 'pdf', 'doc', 'xls', 'rar'],
file: ['doc', 'rar', 'xls', 'txt', 'ppt'],
bids: ['pdf', 'doc', 'rar'], // 为招标准备的格式
wxp: ['doc', 'xls', 'pdf']
};
// 所支持的文件类型
var fileTypes = [['image', 'jpg', 'jpeg', 'png', 'pic', 'bmp', 'gif'], ['pdf'], ['doc', 'docx'], ['rar', 'zip'], ['xls', 'xlsx'], ['ppt', 'pptx'], ['txt'], ['mp3', 'm3u8'], ['mp4', 'rmvb', 'avi', '3gb']],
getFile = null;
if (item.indexOf('.') > -1) {
item = filterToken(item);
var etx = '';
// 如果是签名预览
if (item.indexOf('sign') !== -1) {
etx = item.split('?')[0].split('/').pop().split('.')[1];
} else {
etx = (item.split('.').pop() || '').toLowerCase();
}
if (type !== 'all') {
// 过滤上传的文件类型
fileTypes = fileTypes.filter(function (item) {
return supportType[type].includes(item[0]);
});
}
for (var _iterator = fileTypes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var file = _ref;
if (file.includes(etx)) {
getFile = file[0];
break;
}
}
}
return getFile;
};
var formatFile = exports.formatFile = function formatFile(item, token) {
var sign = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var thumbnail = '';
var fileType = getFileType(item);
switch (fileType) {
case 'image':
if (sign) {
thumbnail = _index.Environment.IMAGE_DOWNLOAD + item + '?' + sign;
} else {
thumbnail = _index.Environment.IMAGE_DOWNLOAD + item + '?token=' + token || _index.Environment.TOKEN;
}
break;
case 'pdf':
thumbnail = _pdf2.default;
break;
case 'rar':
thumbnail = _package2.default;
break;
case 'xls':
thumbnail = _excel2.default;
break;
case 'txt':
thumbnail = _txt2.default;
break;
case 'doc':
thumbnail = _doc2.default;
break;
default:
thumbnail = _noimage2.default;
break;
}
return thumbnail;
};
/**
* 文件下载 针对特殊流文件下载
* @param {*下载链接} data
*/
var downloadFileIf = exports.downloadFileIf = function downloadFileIf(data) {
var iframe = document.createElement('iframe');
iframe.src = data;
iframe.style.display = 'none';
document.body.appendChild(iframe);
setTimeout(function () {
$('iframe').remove();
}, 1000);
};
/**
* copy 功能
* @param {*} text
*/
var copyValue = exports.copyValue = function copyValue(text) {
var oInput = document.createElement('input');
oInput.value = text;
document.body.appendChild(oInput);
oInput.select();
document.execCommand('Copy');
oInput.className = 'oInput';
oInput.style.display = 'none';
};
/**
*
* @param {*改变图片大小} src
* @param {*} size
*/
var changeImgSize = exports.changeImgSize = function changeImgSize(src) {
var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '100x100';
var i = src.lastIndexOf('.');
return src = src.substring(0, i) + '_' + size + src.substring(i);
};
var encryption = exports.encryption = function encryption(password, clientid, token) {
var _encrypted = _aesMinMin2.default.AES.encrypt(_aesMinMin2.default.enc.Utf8.parse((0, _sha256Min2.default)(password)), _aesMinMin2.default.enc.Utf8.parse(clientid), {
iv: _aesMinMin2.default.enc.Utf8.parse(token),
mode: _aesMinMin2.default.mode.CBC,
padding: _aesMinMin2.default.pad.Iso10126
});
return _aesMinMin2.default.enc.Base64.stringify(_encrypted.ciphertext);
};
/**
* 监听事件
* @param {*对象名} obj
* @param {*绑定类型} evtype
* @param {*函数} fn
* @param {*} useCapture
*/
var addEvent = exports.addEvent = function addEvent(obj, evtype, fn, useCapture) {
if (obj.addEventListener) {
obj.addEventListener(evtype, fn, useCapture);
} else if (obj.attachEvent) {
obj.attachEvent('on' + evtype, fn); // IE不支持事件捕获
} else {
obj['on' + evtype] = fn; // 事实上这种情况不会存在
}
};
/**
* 解绑监听事件
* @param {*对象名} obj
* @param {*解绑类型} evtype
* @param {*函数} fn
* @param {*} useCapture
*/
var delEvent = exports.delEvent = function delEvent(obj, evtype, fn, useCapture) {
if (obj.removeEventListener) {
obj.removeEventListener(evtype, fn, useCapture);
} else if (obj.detachEvent) {
obj.detachEvent('on' + evtype, fn);
} else {
obj['on' + evtype] = null;
}
};
/**
* 文件下载
* @param {*下载链接} data
* @param {*下载文件名} strFileName
*/
var downloadFile = exports.downloadFile = function downloadFile(data, strFileName) {
// 判断是否支持download
var isSupportDownload = 'download' in document.createElement('a');
var fileName = filterToken(data).split('/').reverse()[0] || strFileName;
var fileType = getFileType(data);
if (fileType === 'image' || fileType === 'pdf') {
var x = new XMLHttpRequest();
x.open('GET', data, true);
x.responseType = 'blob';
x.onload = function (e) {
(0, _download2.default)(data, fileName);
};
x.send();
} else {
if (isSupportDownload) {
var aLink = document.createElement('a');
var evt = document.createEvent('MouseEvents');
evt.initEvent('click', false, false); // initEvent 不加后两个参数在FF下会报错
aLink.href = data + '?action=download';
aLink.download = fileName;
aLink.dispatchEvent(evt);
} else {
var iframe = document.createElement('iframe');
iframe.src = data + '?action=download';
iframe.style.display = 'none';
document.body.appendChild(iframe);
setTimeout(function () {
$('iframe').remove();
}, 1000);
}
}
};
// 为Token图做处理
var filterToken = exports.filterToken = function filterToken(item) {
if (item.includes('?token=')) {
// 对待token的特殊处理
item = item.split('?token=')[0];
}
return item;
};
/**
*时间戳转时间
*get getByteLen
* @param {timestamp} time 时间戳
* @param {hand} Boolean 是否自定义格式化
* @param {ftm} 'yyyy-MM-dd hh:mm:ss' 格式化
* @returns yy-mm-dd hh:mm:ss
*/
var ftime = exports.ftime = function ftime(timestamp, hand) {
var ftm = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'yyyy-MM-dd';
if (!timestamp) return '';
var date = new Date(timestamp);
if (hand) {
return format(date, ftm);
} else {
var Y = date.getFullYear() + '-';
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return Y + M + D + h + m + s;
}
};
/**
* 跳转地址
* @param
*/
var jumpAddress = exports.jumpAddress = function jumpAddress() {
if (_index.Environment.LOGIN_UN && _index.Environment.LOGIN_UN !== '/login') {
return _index.Environment.LOGIN_UN + '#/login?redirect=dashboard&appcode=' + (_index.Environment.APPCODE || 'OMP') + '&returnURL=' + window.location.href;
} else {
return '/login';
}
};
/**
* 获取前后天数
* @param {* }ff 格式化
* @param {* int} day 前后天数
*/
var getAnyDay = exports.getAnyDay = function getAnyDay() {
var day = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var ff = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'yyyy-MM-dd';
var time = new Date().getTime();
return format(new Date(time + 86400000 * day), ff);
};
/**
* 演时器
* @param {Number} interval
*/
var sleep = exports.sleep = function sleep(interval) {
return new Promise(function (resolve) {
setTimeout(resolve, interval);
});
};
// 去掉多余空的children
var reverseData = exports.reverseData = function reverseData(list, map) {
list.forEach(function (item) {
if (map) {
item.id = item[map.id];
item.label = item[map.label];
} else {
item.id = item.id || item.no;
item.label = item.label || item.name;
}
if (item.children && item.children.length) {
reverseData(item.children, map);
} else {
delete item.children;
}
});
return list;
};
/**
* 匹配下拉名称
* @param {} id
* @param {*} source
*/
var getSelectValue = exports.getSelectValue = function getSelectValue(id) {
var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var result = '';
source.forEach(function (item) {
var value = item.id || item.value || item.val;
if (id === value) {
result = item.text || item.label || item.name;
}
});
return result;
};
// 获取浏览器名称
var getUaName = exports.getUaName = function getUaName() {
var u = window.navigator.userAgent;
var O = {
isOpera: u.indexOf('OPR') > -1,
isFF: u.indexOf('Firefox') > -1,
isQQBrowser: u.indexOf('QQBrowser') > -1,
isEdge: u.indexOf('Edge') > -1,
isChrome: u.indexOf('Chrome') > -1,
isSafari: u.indexOf('Safari') > -1,
isIE: u.indexOf('Trident') > -1, // ie
ie11lt: u.indexOf('compatible') > -1 && u.indexOf('MSIE') > -1, // ie11-
ie11gt: u.indexOf('rv:11.0') > -1, // ie11
isMobile: u.indexOf('Mobile') > -1,
isAndroid: u.indexOf('Android') > -1,
isPad: u.indexOf('iPad') > -1,
isIphone: u.indexOf('iPhone') > -1,
weiXin: u.indexOf('MicroMessenger') !== -1 // 是否为微信浏览器
}; // 校验浏览器类型
var b = ''; // 版本
if (O.isOpera) {
b = 'Opera';
} else if (O.isFF) {
b = 'Firefox';
} else if (O.isQQBrowser) {
b = 'QQBrowser';
} else if (O.isEdge) {
b = 'Edge';
} else if (O.isMobile && O.isAndroid) {
b = 'Android';
} else if (O.isMobile && O.isPad) {
b = 'iPad';
} else if (O.isMobile && O.isIphone) {
b = 'iPhone';
} else if (O.isChrome) {
b = 'Chrome';
} else if (O.isSafari) {
b = 'Safari';
} else if (O.isEdge) {
b = 'Edge';
} else if (O.isIE && O.ie11gt) {
b = 11;
} else if (O.isIE && O.ie11lt) {
new RegExp('MSIE (\\d+\\.\\d+);').test(u);
b = parseFloat(RegExp.$1);
}
return b;
};
// 正则
var regexp = exports.regexp = {
phone: /^1\d{10}$/, // 手机电话
email: /^(?=\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$).{5,50}$/, // 电子邮箱
ip: /^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))$/,
idcard: /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/, // 身份证
digit: /^[0-9]*$/, // 数字
bankcard: /^\d{6,50}$/,
tel: /^((1\d{10})|(0\d{2,3}-\d{7,8})|(0\d{2,3}\d{7,8}))$/,
chinese: /^[\u4e00-\u9fa5]*$/, // 匹配中文
internationalTel: /\d{3}-\d{8}|\d{4}-\d{7}/, // 国际电话
password1: /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/, // 最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
password2: /^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$/, // 中等强度密码(密码为7位及以上,大小字母、数字三项中有两项,特殊字符可有可无)
num: /^\d{1,}$/, // 纯数字正则
en: /^\d{1,}$/, // 纯英文字母正则
decimals: /^\d+\.\d+$/, // 是否小数
integer: /^\d+$/ // 正整数
};