初始化
This commit is contained in:
+164
@@ -0,0 +1,164 @@
|
||||
/*
|
||||
表单验证
|
||||
form为表单
|
||||
rules为需要验证的表单
|
||||
rules:{ name: '请输入名称' } name为需要验证的字段
|
||||
*/
|
||||
export function rulesFun(form, rules) {
|
||||
console.log('-------------------------------')
|
||||
let flage = true
|
||||
let JSONrules = JSON.stringify(rules)
|
||||
if (JSONrules !== JSON.stringify({})) {
|
||||
for (let key in rules) {
|
||||
if (Array.isArray(form[key]) && form[key].length == 0) {
|
||||
uni.showToast({
|
||||
title: rules[key],
|
||||
})
|
||||
flage = false
|
||||
break;
|
||||
} else if (!form[key] && form[key] !== 0) {
|
||||
uni.showToast({
|
||||
title: rules[key],
|
||||
})
|
||||
flage = false
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return flage
|
||||
}
|
||||
|
||||
/* 手机号验证 */
|
||||
export function rulesPhone(phoneVal) {
|
||||
let phoneReg = /(^1\d{10}$)|(^[0-9]\d{7}$)/;
|
||||
if (!phoneReg.test(phoneVal)) {
|
||||
uni.showToast({
|
||||
title: '请输入正确的手机号',
|
||||
})
|
||||
return false;
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
/* 身份证验证 */
|
||||
export function rulesIdCard(IdcardVal) {
|
||||
var idCardReg = /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/;
|
||||
if (!idCardReg.test(IdcardVal)) {
|
||||
uni.showToast({
|
||||
title: '身份证号码格式错误!',
|
||||
})
|
||||
return false;
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// 计算
|
||||
export function calculator(startNum, endNum, operator = '+') {
|
||||
if (operator == '+') {
|
||||
return (Number(startNum * 1000) + Number(endNum * 1000)) / 1000
|
||||
} else if (operator == '-') {
|
||||
return (Number(startNum * 1000) - Number(endNum * 1000)) / 1000
|
||||
} else if (operator == '/') {
|
||||
return (Number(startNum * 1000) / Number(endNum * 1000)) / 1000
|
||||
} else if (operator == '*') {
|
||||
return (Number(startNum * 1000) * Number(endNum * 1000)) / 1000
|
||||
}
|
||||
}
|
||||
// timeStr表示时间 separator表示分隔符 type == yaer表示只返回年月日
|
||||
export function formatDate(timeStr = (new Date()), separator = '-', type) {
|
||||
const date = new Date(timeStr)
|
||||
let yaer = date.getFullYear()
|
||||
let month = date.getMonth() + 1
|
||||
let day = date.getDate()
|
||||
let hour = date.getHours()
|
||||
let minute = date.getMinutes()
|
||||
let second = date.getSeconds()
|
||||
if (type == 'year') {
|
||||
return yaer + separator + month + separator + day
|
||||
} else {
|
||||
return yaer + separator + month + separator + day + ' ' + hour + ':' + minute + ':' + second
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 从解析jwt token里面的信息
|
||||
|
||||
function base64Decode(input) {
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
let str = input.replace(/=+$/, '');
|
||||
let output = '';
|
||||
|
||||
if (str.length % 4 === 1) {
|
||||
throw new Error("'atob' failed: The string to be decoded is not correctly encoded.");
|
||||
}
|
||||
|
||||
for (let bc = 0, bs, buffer, i = 0; (buffer = str.charAt(i++)); ~buffer &&
|
||||
(bs = bc % 4 ? bs * 64 + buffer : buffer,
|
||||
bc++ % 4) ?
|
||||
output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {
|
||||
buffer = chars.indexOf(buffer);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
export function parseJWT(token) {
|
||||
const parts = token.split('.');
|
||||
if (parts.length !== 3) {
|
||||
throw new Error('Invalid JWT token');
|
||||
}
|
||||
const payload = parts[1];
|
||||
const decoded = JSON.parse(
|
||||
decodeURIComponent(
|
||||
base64Decode(payload.replace(/-/g, '+').replace(/_/g, '/').replace(/\s/g, ''))
|
||||
.split('')
|
||||
.map(c =>
|
||||
`%${('00' + c.charCodeAt(0).toString(16)).slice(-2)}`
|
||||
)
|
||||
.join('')
|
||||
)
|
||||
);
|
||||
return decoded;
|
||||
}
|
||||
|
||||
// 防抖函数确保在一定时间内只触发一次点击事件
|
||||
// fn: 要执行的函数
|
||||
// delay: 防抖的时间间隔(单位为毫秒,默认为500ms)
|
||||
export function debounce(fn, delay = 500, immediate = false) {
|
||||
let timer = null;
|
||||
return function (...args) {
|
||||
const context = this;
|
||||
if (timer) clearTimeout(timer);
|
||||
if (immediate) {
|
||||
// 如果立即执行,那么只在第一次触发时执行
|
||||
const callNow = !timer;
|
||||
if (callNow) fn.apply(context, args);
|
||||
// 设置一个延迟的定时器,后续的触发将被防抖处理
|
||||
timer = setTimeout(() => {
|
||||
timer = null;
|
||||
}, delay);
|
||||
} else {
|
||||
// 非立即执行模式,按普通防抖逻辑
|
||||
timer = setTimeout(() => {
|
||||
fn.apply(context, args);
|
||||
}, delay);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// 节流函数限制按钮在一段时间内只触发一次(而不是点击结束后再延时执行)
|
||||
// 节流函数
|
||||
export function throttle(fn, delay = 1000) {
|
||||
let last = 0;
|
||||
return function (...args) {
|
||||
const now = Date.now();
|
||||
if (now - last > delay) {
|
||||
last = now;
|
||||
fn.apply(this, args);
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user