/** * Utils 工具类 * */ import StorageUtil from './storageUtils.js' const Utils = { /** * 只能输入正整数 */ checkInteger: (value) => { if (!value) { return ''; } if (/^[0-9]*[1-9][0-9]*$/.test(value)) { return value; } value = value.replace(/^(0+)|[^\d]+/g, ''); return Number(value); }, /** * 正整数和小数,最大只能输入4位小数 */ checkNum: (value) => { if (!value) { return ''; } if (typeof value === 'number') { value = value.toString(); } let newText = value !== '' && value.substr(0, 1) === '.' ? '' : value; newText = newText.replace(/^0+[0-9]+/g, '0'); //不能以0开头输入 newText = newText.replace(/[^\d.]/g, ''); //清除"数字"和"."以外的字符 newText = newText.replace(/\.{2,}/g, '.'); //只保留第一个, 清除多余的 newText = newText .replace('.', '$#$') .replace(/\./g, '') .replace('$#$', '.'); newText = newText.replace(/^(\-)*(\d+)\.(\d{4}).*$/, '$1$2.$3'); //只能输入4位小数 return newText; }, /** * 校验手机号 */ checkPhone: (value) => { let reg = /^1[3456789]\d{9}$/; return reg.test(value) }, /** * 校验密码 */ checkPwd: (value) => { let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,32}$/; return reg.test(value) }, /** * 只能输入非中文 */ checkNotChinese: (value) => { return value.replace(/[\u4E00-\u9FA5]/g, ''); }, compare: (curV,reqV) => { if(curV && reqV){ //将两个版本号拆成数字 var arr1 = curV.split('.'), arr2 = reqV.split('.'); var minLength=Math.min(arr1.length,arr2.length), position=0, diff=0; //依次比较版本号每一位大小,当对比得出结果后跳出循环(后文有简单介绍) while(position=0; }else{ //输入为空 console.log("版本号不能为空"); return false; } }, formmatTime(fmt, date) { let ret; if(uni.getSystemInfoSync().platform == 'ios' && date){ return date; } if(!date){ date = new Date() } else { date = new Date(date) } let opt = { 'Y+': date.getFullYear().toString(), // 年 'm+': (date.getMonth() + 1).toString(), // 月 'd+': date.getDate().toString(), // 日 'H+': date.getHours().toString(), // 时 'M+': date.getMinutes().toString(), // 分 'S+': date.getSeconds().toString() // 秒 }; for (let k in opt) { ret = new RegExp('(' + k + ')').exec(fmt); if (ret) { fmt = fmt.replace( ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0') ); } } return fmt; }, addData(date, days){ var date = new Date(date); date.setDate(date.getDate() + days); var month = date.getMonth() + 1; var day = date.getDate(); var mm = "'" + month + "'"; var dd = "'" + day + "'"; //单位数前面加0 if(mm.length == 3) { month = "0" + month; } if(dd.length == 3) { day = "0" + day; } var time = date.getFullYear() + "-" + month + "-" + day return time; }, // 比较两个日期大小, 若第一个日期大于第二个日期,返回true compareData(prev, next){ let oDate1 = new Date(prev); let oDate2 = next ? new Date(next):new Date(); if(oDate1.getTime() > oDate2.getTime()){ return true } return false }, // 加密账号 encryptAccount(val) { if (/^1[3456789]\d{9}$/.test(val)) { return String(val).substr(0, 3) + '****' + String(val).substr(7); } else { return val; } }, /** * code 1.无符号分隔表示单个功能,2.逗号分隔表示多个功能 3. 点分隔表示上下级关系,只支持2级 * */ hasPermission(code){ let rolesInfo = StorageUtil.getStorage('userInfo','userFunction'); let arr = []; if(!rolesInfo){ return false } if(code.indexOf(',')>-1){ arr = code.split(',').filter((item) => { item = item.trim(); return rolesInfo[item] }) return arr.length; }else if(code.indexOf('.')>-1){ arr = code.split('.'); let children = rolesInfo[arr[0]]['sysFnBtnRel'].filter((item) => { return item.btnValue == arr[1] }); return rolesInfo[arr[0]] && children.length }else{ return rolesInfo[code]; } } } export default Utils;