表单验证
// 密码校验
export const validatePass = (rule, value) => {
if (value === '') {
return Promise.resolve();
} else {
if (!/^(?:\d+|[a-zA-Z]+|[.!@#$%^&*]+){6,12}$/.test(value)) {
return Promise.reject("请输入6-12位密码");
} else {
return Promise.resolve();
}
}
}
// 纯数字
export const validateNumber = (rule, value) => {
if (value != '') {
if (!/^[1-9]\d*$/.test(value)) {
return Promise.reject("只能输入纯数字");
} else {
return Promise.resolve();
}
} else {
return Promise.resolve();
}
}
// 金额
export const validatePrice = (rule, value) => {
if (value != '' && value != undefined && value != null) {
let num = parseFloat(value)
if (isNaN(num)) {
return Promise.reject("请输入有效金额");
} else {
return Promise.resolve();
}
} else {
return Promise.resolve();
}
}
// 不为空规则
export const validateEmpty = (rule, value) => {
if (value === '' || value == null || value == undefined) {
return Promise.reject("不能为空");
} else {
return Promise.resolve();
}
}
// 不作为
export const validateNone = (rule, value) => {
return Promise.resolve();
}
// 真实姓名
export const validateName = (rule, value) => {
if (value === '' || !value) {
return Promise.resolve();
} else {
if (!/^([\u4e00-\u9fa5]{1,20}|[a-zA-Z\.\s]{2,5})$/.test(value)) {
return Promise.reject("请输入真实姓名");
} else {
return Promise.resolve();
}
}
}
// 身份证
export const validateIdCard = (rule, value) => {
if (value != '' && value != undefined) {
if (
!/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(
value
)
) {
return Promise.reject("请输入有效身份证");
} else {
return Promise.resolve();
}
} else {
return Promise.resolve();
}
}
//手机号
export const validatePhone = (rule, value) => {
if (value != '' && value != undefined) {
if (!/^((\+|00)86)?((134\d{4})|((13[0-3|5-9]|14[1|5-9]|15[0-9]|16[2|5|6|7]|17[0-8]|18[0-9]|19[0-2|5-9])\d{8}))$/.test(value)) {
return Promise.reject("请输入有效手机号");
} else {
return Promise.resolve();
}
} else {
return Promise.resolve();
}
}
数据处理
//几分钟 几小时 几天 前
export function formatMsgTime(timespan) {
var dateTime = new Date(timespan);
var year = dateTime.getFullYear();
var month = dateTime.getMonth() + 1;
var day = dateTime.getDate();
var hour = dateTime.getHours();
var minute = dateTime.getMinutes();
var second = dateTime.getSeconds();
var now = new Date();
var now_new = Date.parse(now.toDateString()); //typescript转换写法
var milliseconds = 0;
var timeSpanStr;
milliseconds = now_new - timespan;
if (milliseconds <= 1000 * 60 * 1) {
timeSpanStr = '刚刚';
} else if (1000 * 60 * 1 < milliseconds && milliseconds <= 1000 * 60 * 60) {
timeSpanStr = Math.round((milliseconds / (1000 * 60))) + '分钟前';
} else if (1000 * 60 * 60 * 1 < milliseconds && milliseconds <= 1000 * 60 * 60 * 24) {
timeSpanStr = Math.round(milliseconds / (1000 * 60 * 60)) + '小时前';
} else if (1000 * 60 * 60 * 24 < milliseconds && milliseconds <= 1000 * 60 * 60 * 24 * 15) {
timeSpanStr = Math.round(milliseconds / (1000 * 60 * 60 * 24)) + '天前';
} else if (milliseconds > 1000 * 60 * 60 * 24 * 15 && year == now.getFullYear()) {
timeSpanStr = month + '-' + day + ' ' + hour + ':' + minute;
} else {
timeSpanStr = year + '-' + month + '-' + day + ' ' + hour + ':' + minute;
}
return timeSpanStr;
}
// 数据转化为百分比格式
export function toPercentage(val1, val2) {
let pre = (val1 / val2) * 100
if (pre > 1) {
pre = parseInt(pre)
} else {
pre = pre.toFixed(1)
}
return pre
}
/**
* 时间戳转换时间
* @param {val} val - 时间戳.
* @param {type} type-
* 1 (2019-1-12 15:21:22)
* 2 (2019-1-12)
* 3 (2-16 15:21)
* 4 (2月6号 16:12:22)
* 5 (2019-1-12 15:12)
*/
export function timeStamp(val, type = 1) {
let now = new Date(val)
let year = now.getFullYear()
let month = now.getMonth() + 1
let date = now.getDate()
let hour = now.getHours()
let minute = now.getMinutes()
let second = now.getSeconds()
// 补0显示判定
month = month > 9 ? month : "0" + month
date = date > 9 ? date : "0" + date
hour = hour > 9 ? hour : "0" + hour
minute = minute > 9 ? minute : "0" + minute
second = second > 9 ? second : "0" + second
// 显示格式类型
let result1 =
year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second
let result2 = year + '-' + month + '-' + date
let result3 = month + '-' + date + ' ' + hour + ':' + minute
let result4 =
month + '月' + date + '日 ' + hour + ':' + minute
let result5 = year + '-' + month + '-' + date + ' ' + hour + ':' + minute
let result6 = hour + ':' + minute
switch (type) {
case 1:
return result1
case 2:
return result2
case 3:
return result3
case 4:
return result4
case 5:
return result5
case 6 :
return result6
}
}
// 时间戳转换倒计时
export function overTime(val) {
let date = parseInt((val / 1000 / 60 / 60 / 24) % 30)
let hour = parseInt((val / 1000 / 60 / 60) % 24)
let minute = parseInt((val / 1000 / 60) % 60)
let second = parseInt((val / 1000) % 60)
hour = hour > 9 ? hour : "0" + hour
minute = minute > 9 ? minute : "0" + minute
second = second > 9 ? second : "0" + second
let result1 = date + '天' + hour + ':' + minute + ':' + second
let result2 = hour + ':' + minute + ':' + second
if (date > 1) {
return result1
} else {
return result2
}
}
//随机颜色
export function randomHexColor() { //随机生成十六进制颜色
let hex = Math.floor(Math.random() * 16777216).toString(16); //生成ffffff以内16进制数
while (hex.length < 6) { //while循环判断hex位数,少于6位前面加0凑够6位
hex = '0' + hex;
}
return '#' + hex; //返回‘#'开头16进制颜色
}
// 提取纯文本
export function getSimpleText(html) {
// if(arr!='[]'){
// for(let i in arr){
// var reImg = new RegExp("<img.+?>");//图片
// var msg = html.replace(reImg,arr[i]);//替换图片为表情编码
// }
// }
var re1 = new RegExp("<.+?>", "g"); //匹配html标签的正则表达式,"g"是搜索匹配多个符合的内容
// var reImg = new RegExp("<img.+?>","g");//图片
var msg = html.replace(re1, ''); //执行替换成空字符
return msg;
}
// 解析search链接参数
export function getSearchObj(val) {
let str = val.substr(1, val.length).replace(/&/g, "=");
let arr = str.split("=");
let obj = {}
for (let i = 0; i < (arr.length / 2); i++) {
obj[arr[2 * i]] = arr[2 * i + 1]
}
return obj
}