例如: 检查是否为空数组 、是否是空 不为空false 为空true、校验密码、校验手机号格式、校验邮箱格式、校验身份证号格式、校验值长度 不少于6位数、 电话号码加密 15288889999 转化为 152****9999、身份证号码加密、验证输入重量、金额等类型 例如 0.11 2.23 100.123等等 、验证输入的钱 单纯验证金额类型 、验证是否是纯数值 、处理数据 :可把制定相同的key值得对象存储到下级得children中、生成唯一ID、数字转中文 运行结果 : 1 转为 一、图片转为base64、获取随机字符串、授权微信小程序消息推送。
新建utils.js文件
/*** 通用的数据处理和验证类 1、在main.js中配置下列代码import Utils from '@/utils/utils.js';Vue.prototype.$Utils = Utils;2、使用方式let str = "0";if(this.$Utils.isNull(str)){console.log("str 是空")}*/
export default class Utils {/*** 检查是否为空数组 空数组返回 true* @param {Array} arr 数组* @return Boolean*/static isEmptyArr(arr) {if (!Array.isArray(arr)) throw new Error('isEmptyArr 参数不是一个数组');if (!arr.length) return true;return false;}/*** 是否是空 不为空false 为空true* @param {any} opt 验证参数* @return Boolean*/static isNull(opt) {if (opt == '' || opt == null || opt == 'null' || opt == undefined) return true;return false;}/*** 校验密码* @param phone* @returns {boolean}*/static checkPassword(phone) {let reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/;return reg.test(phone);}/*** 校验手机号格式* @param phone* @returns {boolean}*/static checkPhone(phone) {let reg = /^1[3456789]\d{9}$/;return reg.test(phone);}/*** 校验邮箱格式* @param email* @returns {boolean}*/static checkEmail(email) {let reg = /^\w+@[a-z0-9]+\.[a-z]{2,4}$/;return reg.test(email);}/*** 校验身份证号格式* @param email* @returns {boolean}*/static checkCardNo(email) {let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;return reg.test(email);}/*** 校验值长度 不少于6位数* @param email* @returns {boolean}*/static checkValueLength(password, min = 6, max = 0) {let regExp = new RegExp(`^[\\s\\S]{${min || ''},${max || ''}}$`);return regExp.test(password);}/*** 电话号码加密 15288889999 转化为 152****9999*/static phoneEncryption(phone = "") {return phone.replace(/^(\d{3})\d{4}(\d+)/, '$1****$2')}/*** 身份证号码加密*/static idCardEncryption(idCard) {if (!idCard) return ""let reg = /^(.{6})(?:\d+)(.{4})$/let result = idCard.replace(reg, '\$1******\$2') // 身份证号脱敏,将中间8位替换为“*”return result}/**验证输入重量、金额等类型 例如 0.11 2.23 100.123等等 * @param {Object} value*/static checkMoney(value, len = 6) {let reg = /\d{1,}\.{0,1}\d{0,2}/;if (value.replace(reg, '')) {value = (value.match(reg) == null ? '' : value.match(reg));}if ((value >= 1) && (`${value}`.indexOf(0) == 0)) {value = parseFloat(value);}if (`${value}`.indexOf('00') == 0) {value = 0;}let str = parseInt(value).toString();if (str.length >= len && (value.toString().indexOf('.') < 0)) {value = parseFloat(str.slice(0, len));}return value;}/**验证输入的钱 单纯验证金额类型 * @param {Object} value*/static isMoney(value) {var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;if (reg.test(value)) {return true;} else {return false;};}// 验证是否是纯数值 static isNumber(value) {var reg = /^[0-9]*[1-9][0-9]*$/;if (reg.test(value)) {return true;} else {return false;};}/*** 处理数据 :可把制定相同的key值得对象存储到下级得children中*/static mergeData(list = [], key, name = 'children') {const data = [];list.forEach((item, index) => {const parent = data.find((i) => i[key] === item[key]);if (parent) {parent[name].push({...item});} else {let obj = {...item};if (!obj[name]) {obj[name] = [];}obj[name].push({...item});data.push(obj);}});return data;}// 表单验证 static validateForm(key, rules) {var check = truerules[key].forEach((v) => {// 验证失败if (!(v.rule).test(this[key])) {uni.showToast({title: v.msg,icon: 'none'});check = falsereturn false}})return check};// uniapp 获取到上一页的信息, 适用:添加、编辑数据的时候,刷新上一页列表的数据 static beforePage(num = 1) {// 当前页的数据,let pages = getCurrentPages();// 上一页的数据let prevPage = pages[pages.length - (num + 1)];return prevPage.$vm;};//生成唯一ID : 根据当前系统时间随机生成一个长字符串static getID() {const now = new Date()const year = now.getFullYear();let month = now.getMonth() + 1;let day = now.getDate();let hour = now.getHours();let minutes = now.getMinutes();let seconds = now.getSeconds();month = month < 10 ? '0' + month : month;day = day < 10 ? '0' + day : day;hour = hour < 10 ? '0' + hour : hour;minutes = minutes < 10 ? '0' + minutes : minutes;seconds = seconds < 10 ? '0' + seconds : seconds;const yyyyMMddHHmmss = `${year}${month}${day}${hour}${minutes}${seconds}`;const rand = Math.random().toString(10).substr(2, 10);return `${yyyyMMddHHmmss}${rand}`;};//数字转中文 运行结果 : 1 转为 一static toChinesNum(num) {let changeNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']let unit = ['', '十', '百', '千', '万']num = parseInt(num)let getWan = (temp) => {let strArr = temp.toString().split('').reverse()let newNum = ''let newArr = []strArr.forEach((item, index) => {newArr.unshift(item === '0' ? changeNum[item] : changeNum[item] + unit[index])})let numArr = []newArr.forEach((m, n) => {if (m !== '零') numArr.push(n)})if (newArr.length > 1) {newArr.forEach((m, n) => {if (newArr[newArr.length - 1] === '零') {if (n <= numArr[numArr.length - 1]) {newNum += m}} else {newNum += m}})} else {newNum = newArr[0]}return newNum}let overWan = Math.floor(num / 10000)let noWan = num % 10000if (noWan.toString().length < 4) {noWan = '0' + noWan}return overWan ? getWan(overWan) + '万' + getWan(noWan) : getWan(num)};// 图片转为base64static getBase64Image = (url, callback) => {// #ifdef MP-WEIXINuni.getFileSystemManager().readFile({filePath: url, //选择图片返回的相对路径encoding: 'base64', //编码格式success: res => { //成功的回调console.log(res, '返回结果');let base64 = 'data:image/jpeg;base64,' + res.data //不加上这串字符,在页面无法显示的哦callback && callback(base64)},fail: (e) => {console.log("图片转换失败");}})// #endif// #ifdef H5uni.request({url: url,method: 'GET',responseType: 'arraybuffer',success: res => {let base64 = uni.arrayBufferToBase64(res.data); //把arraybuffer转成base64base64 = 'data:image/jpeg;base64,' + base64;callback && callback(base64)},fail: (e) => {console.log("图片转换失败");}})// #endif// #ifdef APP-PLUSplus.io.resolveLocalFileSystemURL(url, (entry) => {entry.file((file) => {let fileReader = new plus.io.FileReader();fileReader.onloadend = (e) => {callback && callback(e.target.result)};fileReader.readAsDataURL(file);})})// #endif};// 获取随机字符串static generateRandomString(length = 32) {const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';let result = '';for (let i = 0; i < length; i++) {result += characters.charAt(Math.floor(Math.random() * characters.length));}return result;};// 授权微信小程序消息推送static authAppletInfoPush(tmplIdsArr = [], callback) {uni.requestSubscribeMessage({provider: 'weixin',tmplIds: tmplIdsArr,success: function(res) {console.log('success', res)},fail: function() {console.log('fail', res)},complete: function(res) {console.log('complete', res)if (callback) callback(res)}})}
}
直接使用方法:
1、在main.js中配置下列代码import Utils from '@/utils/utils.js';Vue.prototype.$Utils = Utils;2、使用方式let str = "0";if(this.$Utils.isNull(str)){console.log("str 是空")}