vue常用的公共方法

1、纯数字校验

export const checkIsNumber = value => {
  const numberReg = /^[0-9]*$/;
  return numberReg.test(value);
}

2、手机号校验正则

	export const isPhoneNum = num => {
	  const reg = /^1[345678]\d{9}$/;
	  return reg.test(num);
	}

3、验证身份证号(15位或18位数字):

	export const isUserId = value => {
	  const numberReg = /^\d{15}|\d{}18$/;
	  return numberReg.test(value);
	}

4、密码安全登记校验

export const pswIsAllow = psw =>{
  const pswLeve = [{
      reg: /\d+/
    },
    {
      reg: /[a-z]+/
    },
    {
      reg: /[A-Z]+/
    },
    {
      reg: /[~!@#\$%^&*\(\)\{\};,.\?\/'"]/
    }
  ];
  if(psw.indexOf(' ')!=-1){
    return false;
  }
  let level = 0;
  for (var j = pswLeve.length - 1; j >= 0; j--) {
      if (pswLeve[j].reg.test(psw)) {
          level += 1;
      }
  }
  return level;
}

5、检测设备

export const IsPC = () => {
  let userAgentInfo = navigator.userAgent;
  let Agents = [
    "Android",
    "iPhone",
    "SymbianOS",
    "Windows Phone",
    "iPad",
    "iPod"
  ];
  let flag = true; //true 代表PC false代表移动端
  for (var v = 0; v < Agents.length; v++) {
    if (userAgentInfo.indexOf(Agents[v]) != -1) {
      flag = false;
      break;
    }
  }
  return flag;
};

6、获取url后的参数

export const urlParams = () => {
  const fullUrl = location.href;
  const url = fullUrl.substr(fullUrl.indexOf("?")); //获取url中"?"符后的字串
  const theRequest = new Object();
  if (url.indexOf("?") != -1) {
    const str = url.substr(1);
    const strs = str.split("&");
    for (var i = 0; i < strs.length; i++) {
      theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
    }
  }
  return theRequest;
};

7、* 时间戳格式化

 * @param time 需要转化的时间戳
 * @param split 以特定符号分割
 */
 export const formatTime = (time, split) => {
  let date = new Date(time - 0);
  let s = split;
  if (!s) {
    s = '-'
  }
  let year = date.getFullYear(),
    month = date.getMonth() + 1, //月份是从0开始的
    day = date.getDate(),
    hour = date.getHours(),
    min = date.getMinutes(),
    sec = date.getSeconds();
  let newTime =
    year +
    s +
    (month < 10 ? "0" + month : month) +
    s +
    (day < 10 ? "0" + day : day) +
    " " +
    (hour < 10 ? "0" + hour : hour) +
    ":" +
    (min < 10 ? "0" + min : min) +
    ":" +
    (sec < 10 ? "0" + sec : sec);

  return newTime;
}

8、倒计时(默认开始时间为当前时间)

 * 倒计时(默认开始时间为当前时间)
 * @param endTime 结束时间
 * @returns 时间对象
 */
const getEndTime = (startTime, endTime) => {
  const startDate = startTime || new Date(); //开始时间,当前时间
  const endDate = new Date(endTime); //结束时间,需传入时间参数
  const t = endDate.getTime() - startDate.getTime(); //时间差的毫秒数
  let d = 0,
    h = 0,
    m = 0,
    s = 0;
  if (t >= 0) {
    d = Math.floor(t / 1000 / 3600 / 24) > 10 ? Math.floor(t / 1000 / 3600 / 24) : '0' + Math.floor(t / 1000 / 3600 / 24);
    h = Math.floor(t / 1000 / 60 / 60 % 24) > 10 ? Math.floor(t / 1000 / 60 / 60 % 24) > 10 : '0' + Math.floor(t / 1000 / 60 / 60 % 24) > 10;
    m = Math.floor(t / 1000 / 60 % 60) > 10 ? Math.floor(t / 1000 / 60 % 60) : '0' + Math.floor(t / 1000 / 60 % 60);
    s = Math.floor(t / 1000 % 60) > 10 ? Math.floor(t / 1000 % 60) : '0' + Math.floor(t / 1000 % 60);
  }
  return {
    day: d,
    hour: h,
    minute: m,
    second: s
  }
}

8、支付密码不能为2位以上连续数字

	export const payPassword = password => {
	  let reg1 = /^[0-9A-Za-z]{6,}$/g
	  let reg2 = /(.)*(.)\2{2}(.)*/g;
	  if (reg1.test(password) && !reg2.test(password)) {
	    console.log('密码符合规则');
	    return true;
	  } else {
	    console.log('密码不符合规则');
	    return false;
	  }
	
	}

9、银行卡号4位一空格格式化

	let formatBankCode = (value) => {
	  return value.replace(/(.{4})/g, "$1 ");
	}

10、差的毫秒数转换为天数

 */
/**
 *相差的毫秒数转换为天数
 */
export const DateDiff=(sDate1,  sDate2)=>{    
  console.log(sDate1,  sDate2,'sDate1,  sDate2');
  
  var  aDate,  oDate1,  oDate2,  iDays  
  aDate  =  sDate1.split("-")  
  oDate1  =  new  Date(aDate[1]  +  '-'  +  aDate[2]  +  '-'  +  aDate[0])    //转换为12-18-2002格式  
  aDate  =  sDate2.split("-")  
  oDate2  =  new  Date(aDate[1]  +  '-'  +  aDate[2]  +  '-'  +  aDate[0])  
  iDays  =  parseInt(Math.abs(oDate1  -  oDate2)  /  1000  /  60  /  60  /24)    //把相差的毫秒数转换为天数  
  return  iDays  
}

11、验证对象属性值都不能为空

/**
 * 请求参数验证
 * params 的所有属性值都不能为空
 * 参数验证
 * if(!this.paramsValidate(params)) return;
 */
export const paramsValidate = (params) => {
  let flag = true;
  for (var key in params) {
    if (params[key] != '0' && !params[key]) {
      console.log(key, '为空的属性');
      return false; // 终止程序
    }
  }
  return flag;
}

12、支付密码不能为2位以上连续数字

export function passwordReg(testStr) {
  // const regIsNumber = /(?=.*[0-9])/g; //是否是数字
  const regIsNumber = /^[0-9]+$/g; //是否是数字
  const regCfNumber = /(\w)*(\w)\2{2}(\w)*/g; //是否重复3次
  let isNumber = regIsNumber.test(testStr);
  let isCfNumber = regCfNumber.test(JSON.stringify(testStr));
  let isLxNumber = lxStr(JSON.stringify(testStr));

  if (isNumber && !isCfNumber && !isLxNumber) {
    return true
  } else {
    return false
  }
}

// 输入连续字符(123,abc)检测
function lxStr(str) {
  let arr = str.split("");
  let flag = false;
  for (let i = 1; i < arr.length - 1; i++) {
    let firstIndex = arr[i - 1].charCodeAt();
    let secondIndex = arr[i].charCodeAt();
    let thirdIndex = arr[i + 1].charCodeAt();
    thirdIndex - secondIndex == 1;
    secondIndex - firstIndex == 1;
    if (thirdIndex - secondIndex == 1 && secondIndex - firstIndex == 1) {
      flag = true;
    }
  }
  if (!flag) {
    return flag;
  }
  return flag;
}

13、验证商户注册号码(社会信用代码)格式(15位或15位数字)

/**
 * 验证商户注册号码(社会信用代码)格式(15位或15位数字)
 * @param value 校验参数
 * @return boolean
 */
export const isLegalRegisterNo = value => {
  const legalPattern = /^[A-Za-z0-9]{15}$|^[A-Za-z0-9]{18}$/;
  return legalPattern.test(value);
}

14、键盘输入2位小数

 //键盘输入
      onInput(key) {
      if(this.params.totalAmount.indexOf(".")!=-1){    //不能输入2个小数点
         if(key== "."){
            return
         }
      }
      const reg = /^(\-)*(\d+)\.(\d\d).*$/;
      const reg2=/\.{2,}/g;
      if (reg.test(this.params.totalAmount)) {     //2位小数
        return false;
      }else if(this.params.totalAmount.length == 7){    //小数点前7位,后2位
        if (key == ".") {
             this.params.totalAmount = (this.params.totalAmount + key) + '';    //赋值
          } else {
            return;
          }
      }else if(this.params.totalAmount.length > 7){
         const reg = /^(\-)*(\d+)\.(\d\d).*$/;//2位小数
            if (reg.test(this.params.totalAmount)) {
                return false;
              }
            this.params.totalAmount = this.params.totalAmount + key + ""; //赋值
      }
      else  {
        this.params.totalAmount = (this.params.totalAmount + key) + '';    //赋值
        this.params.totalAmount=this.params.totalAmount.replace(/\.{2,}/g,".")//只保留第一个. 清除多余的
        if ( this.params.totalAmount.length == 1 &&this.params.totalAmount == ".") {    //如果首位输入。  默认为0.
          this.params.totalAmount = "0.";
        }else if( this.params.totalAmount.indexOf(".")< 0 &&  this.params.totalAmount !="00"){    //处理01  02  09  这种 默认为1 2 9
          this.params.totalAmount=parseFloat( this.params.totalAmount)  
        }else {
        }
      }
    },

15、 校验手机号码

isPhone (val) {
        var patrn = /^(((1[3456789][0-9]{1})|(15[0-9]{1}))+\d{8})$/
        if (!patrn.test(val) || val === '') {
          return false
        } else {
          return true
        }
      },

16、检验车牌号

// 检验车牌号
      isCarNum (val) {
        var patrn = /^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1})$/
        var patrn2 = /^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))$/
        if (!patrn.test(val) && !patrn2.test(val)) {
          return false
        } else {
          return true
        }
      },

17、校验车架号

	// 校验车架号
	      isVehicle (val) {
	        var patrn = /^[A-HJ-NP-Za-hj-np-z0-9]+$/
	        if (!patrn.test(val) || val === '') {
	          return false
	        } else {
	          return true
	        }
	      },

18、强检验身份证号码


```javascript
 // 检验身份证号码
      isSfz (idcard) {
        var Errors = [1, '身份证号码位数不对', '出生日期错误', '身份证号码错误', '身份证地区非法']
        var area = { 11: '北京', 12: '天津', 13: '河北', 14: '山西', 15: '内蒙古', 21: '辽宁', 22: '吉林', 23: '黑龙江', 31: '上海', 32: '江苏', 33: '浙江', 34: '安徽', 35: '福建', 36: '江西', 37: '山东', 41: '河南', 42: '湖北', 43: '湖南', 44: '广东', 45: '广西', 46: '海南', 50: '重庆', 51: '四川', 52: '贵州', 53: '云南', 54: '西藏', 61: '陕西', 62: '甘肃', 63: '青海', 64: '宁夏', 65: 'xinjiang', 71: '台湾', 81: '香港', 82: '澳门', 91: '国外' }
        var Y, JYM
        var S, M, ereg, Err
        var arr = []
        arr = idcard.split('')
        if (area[parseInt(idcard.substr(0, 2))] == null) {
          Err = Errors[4]
          return Err
        }
        switch (idcard.length) {
          case 15:
            if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 === 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 === 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 === 0)) {
              ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/ // 测试出生日期的合法性
            } else {
              ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/ // 测试出生日期的合法性
            }
            if (ereg.test(idcard)) {
              Err = Errors[0]
            } else {
              Err = Errors[2]
            }
            return Err
          case 18:
            if (parseInt(idcard.substr(6, 4)) % 4 === 0 || (parseInt(idcard.substr(6, 4)) % 100 === 0 && parseInt(idcard.substr(6, 4)) % 4 === 0)) {
              ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/ // 闰年出生日期的合法性正则表达式
            } else {
              ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/ // 平年出生日期的合法性正则表达式
            }
            if (ereg.test(idcard)) {
              S = (parseInt(arr[0]) + parseInt(arr[10])) * 7 + (parseInt(arr[1]) + parseInt(arr[11])) * 9 + (parseInt(arr[2]) + parseInt(arr[12])) * 10 + (parseInt(arr[3]) + parseInt(arr[13])) * 5 + (parseInt(arr[4]) + parseInt(arr[14])) * 8 + (parseInt(arr[5]) + parseInt(arr[15])) * 4 + (parseInt(arr[6]) + parseInt(arr[16])) * 2 + parseInt(arr[7]) * 1 + parseInt(arr[8]) * 6 + parseInt(arr[9]) * 3
              Y = S % 11
              M = 'F'
              JYM = '10X98765432'
              M = JYM.substr(Y, 1)
              if (M === arr[17]) {
                Err = Errors[0]
              } else {
                Err = Errors[3]
              }
            } else {
              Err = Errors[2]
            }
            return Err
          default:
            Err = Errors[1]
            return Err
        }
      },

19、判断输入框是否有表情

 isEmojiCharacter (substring) {
    for (var i = 0; i < substring.length; i++) {
      const hs = substring.charCodeAt(i)
      if (hs >= 0xd800 && hs <= 0xdbff) {
        if (substring.length > 1) {
          const ls = substring.charCodeAt(i + 1)
          var uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000
          if (uc >= 0x1d000 && uc <= 0x1f77f) {
            return true
          }
        }
      } else if (substring.length > 1) {
        const ls = substring.charCodeAt(i + 1)
        if (ls === 0x20e3) {
          return true
        }
      } else {
        if (hs >= 0x2100 && hs <= 0x27ff) {
          return true
        } else if (hs >= 0x2B05 && hs <= 0x2b07) {
          return true
        } else if (hs >= 0x2934 && hs <= 0x2935) {
          return true
        } else if (hs >= 0x3297 && hs <= 0x3299) {
          return true
        } else if (hs === 0xa9 || hs === 0xae || hs === 0x303d || hs === 0x3030 ||
          hs === 0x2b55 || hs === 0x2b1c || hs === 0x2b1b || hs === 0x2b50) {
          return true
        }
      }
    }
  },

20、压缩图片

 dealImage (path, obj, callback) {
        var img = new Image()
        img.src = path
        img.onload = function () {
          var that = this
          // 默认按比例压缩
          var w = that.width
          var h = that.height
          var scale = w / h
          w = obj.width || w
          h = obj.height || w / scale
          var quality = 0.5 // 默认图片质量为0.7
          // 生成canvas
          var canvas = document.createElement('canvas')
          var ctx = canvas.getContext('2d')
          // 创建属性节点
          var anw = document.createAttribute('width')
          anw.nodeValue = w
          var anh = document.createAttribute('height')
          anh.nodeValue = h
          canvas.setAttributeNode(anw)
          canvas.setAttributeNode(anh)
          ctx.drawImage(that, 0, 0, w, h)
          // 图像质量
          if (obj.quality && obj.quality <= 1 && obj.quality > 0) {
            quality = obj.quality
          }
          // quality值越小,所绘制出的图像越模糊
          var base64 = canvas.toDataURL('image/jpeg', quality)
          // 回调函数返回base64的值
          callback(base64)
        }
      },

21、图片转成base64

   getImgData (img, dir, next) {
        var image = new Image()
        image.onload = function () {
          var degree = 0
          var drawWidth
          var drawHeight
          var width
          var height
          drawWidth = this.naturalWidth
          drawHeight = this.naturalHeight
          // 以下改变一下图片大小
          var canvas = document.createElement('canvas')
          canvas.width = width = drawWidth
          canvas.height = height = drawHeight
          var context = canvas.getContext('2d')
          // 判断图片方向,重置canvas大小,确定旋转角度,iphone默认的是home键在右方的横屏拍摄方式
          switch (dir) {
            // iphone横屏拍摄,此时home键在左侧
            case 3:
              degree = 180
              drawWidth = -width
              drawHeight = -height
              break
            // iphone竖屏拍摄,此时home键在下方(正常拿手机的方向)
            case 6:
              canvas.width = height
              canvas.height = width
              degree = 90
              drawWidth = width
              drawHeight = -height
              break
            // iphone竖屏拍摄,此时home键在上方
            case 8:
              canvas.width = height
              canvas.height = width
              degree = 270
              drawWidth = -width
              drawHeight = height
              break
          }
          // 使用canvas旋转校正
          context.rotate((degree * Math.PI) / 180)
          context.drawImage(this, 0, 0, drawWidth, drawHeight)
          // 返回校正图片
          next(canvas.toDataURL('image/jpeg', 0.8))
        }
        image.src = img
      },

22、根据字符串截取

 getStr(string,str){ 
        var str_before = string.split(str)[0]; 
        var str_after = string.split(str)[1]; 
        return str_before
    },
    
getStr(str,',') 

23、相差的毫秒数转换为天数

/**
 *相差的毫秒数转换为天数
 */
export const DateDiff = (sDate1, sDate2) => {
  console.log(sDate1, sDate2, 'sDate1,  sDate2');

  var aDate, oDate1, oDate2, iDays
  aDate = sDate1.split("-")
  oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])    //转换为12-18-2002格式  
  aDate = sDate2.split("-")
  oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])
  iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24)    //把相差的毫秒数转换为天数  
  return iDays
}

24、检测是否是IE

export const isIE= () =>{
  if (!!window.ActiveXobject || "ActiveXObject" in window) {
    return true;
  } else {
    return false;
  }
}

export const isIE11= () =>{
  if((/Trident\/7\./).test(navigator.userAgent)) {
    return true;
  } else {
    return false;
  }
}

25、params 的所有属性值都不能为空

/**
 * 请求参数验证
 * params 的所有属性值都不能为空
 * 参数验证
 * if(!this.paramsValidate(params)) return;
 */
export const paramsValidate = (params) => {
  let flag = true;
  for (var key in params) {
    if (params[key] != '0' && !params[key]) {
      console.log(params[key], '为空的属性');
      Toast.info('请完善数据')
      return false; // 终止程序
    }
  }
  return flag;
}
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值