UNPKG

zcloud-ui

Version:

A Component Library for Vue.js.

620 lines (559 loc) 18.4 kB
'use strict'; 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+$/ // 正整数 };