/**
* @Author: 红尘痴子
* @description: 节流
* @param {*} fn 方法
* @param {*} delay 延迟时间
*/
function onThro(fn, delay = 300) {
let valid = true
return function () {
if (!valid) {
//休息时间 暂不接客
return false
}
// 工作时间,执行函数并且在间隔期内把状态位设为无效
valid = false
setTimeout(() => {
fn()
valid = true
}, delay)
}
}
/**
* @Author: 红尘痴子
* @description: 防抖
* @param {*} fn 方法
* @param {*} delay 延迟时间
*/
function onDeb(fn, delay = 300) {
let timer = null //借助闭包
return function () {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(fn, delay) // 简化写法
}
}
/**
* @Author: 红尘痴子
* @description: 判断是否为空
* @param {String|Number} val 内容 空返回 true
*/
function isEmpty(val) {
if (typeof val === 'undefined' || val == null || val == '') {
return true
} else {
return false
}
}
/**
* @Author: 红尘痴子
* @description: 验证手机号码格式
* @param {String|Number} val 手机号
*/
function mobileReg(val) {
return /^1[3-9]\d{9}$/.test(val)
}
/**
* @Author: 红尘痴子
* @description: 电子邮件格式验证
* @param {String|Number} val 邮件地址
*/
function emailReg(val) {
return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(val)
}
/**
* @Author: 红尘痴子
* @description: 身份证件验证
* @param {String|Number} val 身份证号码
*/
function idReg(val) {
return /^[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(val)
}
/**
* @Author: 红尘痴子
* @description: URL格式验证
* @param {String} val URL格式验证
*/
function urlReg(val) {
return /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/.test(val)
}
/**
* @Author: 红尘痴子
* @description: 字符中是否包含某值验证
* @param {String} val 字符串
* @param {String} param 字符串
*/
function containReg(val, param) {
return val.indexOf(param) >= 0
}
/**
* @Author: 红尘痴子
* @description: 字符串长度是否在某个范围内验证
* @param {String} val 字符串
* @param {Number} param 字符串长度是否在某个范围内验证 例:" [ 2 , 5 ] "
*/
function strLengthReg(val, param) {
return val.length >= param[0] && val.length <= param[1]
}
/**
* @Author: 红尘痴子
* @description: 数字是否在某个区域内验证
* @param {Number} val 数字
* @param {Number} param 数字是否在某个区域内验证 例:" [ 50 , 100 ] "
*/
function rangeReg(val, param) {
return val >= param[0] && val <= param[1]
}
/**
* @Author: 红尘痴子
* @description: 只有数字和字母验证
* @param {String} val 字符串
*/
function enAndNumReg(val) {
return /^[0-9a-zA-Z]*$/g.test(val)
}
/**
* @Author: 红尘痴子
* @description: 无按钮提示框显示
* @param {String} title 提示标题
* @param {String} icon 提示icon
*/
function showToast(title, icon = 'none') {
return new Promise(function (resolve, reject) {
wx.showToast({
title: title,
icon: icon,
mask: true,
success(res) {
if (res.confirm) {
resolve()
} else if (res.cancel) {
reject()
}
}
})
})
}
/**
* @Author: 红尘痴子
* @description: 有按钮提示框显示
* @param {string} title 提示的标题
* @param {string} content 提示的内容
* @param {string} confirmText 确认按钮的文字,最多 4 个字符
* @param {boolean} showCancel 是否显示取消按钮
* @param {string} cancelText 取消按钮的文字,最多 4 个字符
* @param {string} confirmColor 确认按钮的文字颜色,必须是 16 进制格式的颜色字符串
* @param {string} cancelColor 取消按钮的文字颜色,必须是 16 进制格式的颜色字符串
*/
function showModal(title = '提示', content, confirmText = '确定', showCancel = true, cancelText = '取消', confirmColor = '#576B95', cancelColor = '#000000') {
return new Promise(function (resolve, reject) {
wx.showModal({
title: title,
content: content,
confirmText: confirmText,
showCancel: showCancel,
confirmColor: confirmColor,
cancelText: cancelText,
cancelColor: cancelColor,
success(res) {
if (res.confirm) {
resolve()
} else if (res.cancel) {
reject()
}
}
})
})
}
/**
* @Author: 红尘痴子
* @description: 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
* @param {string} url url必须为tabbar页面的路径,否则没有效果
*/
function switchTab(url) {
wx.switchTab({
url: url
})
}
/**
* @Author: 红尘痴子
* @description: 跳转新页面页面,保留当前页面。
* @param {string} url url必须为页面路径,否则没有效果
*/
function navigateTo(url) {
wx.navigateTo({
url: url
})
}
/**
* @Author: 红尘痴子
* @description: 返回页面
* @param {*} delta 返回的页面数,如果 delta 大于现有页面数,则返回到首页。
*/
function navigateBack(delta) {
wx.navigateBack({
delta: delta
})
}
/**
* @Author: 红尘痴子
* @description: 跳转新页面页面,关闭当前页面
* @param {string} url url必须为页面路径,否则没有效果
*/
function redirectTo(url) {
wx.redirectTo({
url: url
})
}
/**
* @Author: 红尘痴子
* @description: 关闭所有页面,打开到应用某个页面
* @param {string} url url必须为页面路径,否则没有效果
*/
function reLaunch(url) {
wx.reLaunch({
url: url
})
}
/**
* @Author: 红尘痴子
* @description: 获取当前页url
*/
function getCurrentPageUrl() {
var pages = getCurrentPages() //获取加载的页面
var currentPage = pages[pages.length - 1] //获取当前页面的对象
var url = currentPage.route //当前页面url
return url
}
/**
* @Author: 红尘痴子
* @description: 加载等待提示,title提示,mask是否透明层bool
* @param {*} title 提示的内容
* @param {*} mask 提示的内容
*/
function showLoading(title, mask) {
wx.showLoading({
title: title,
mask: mask
})
}
/**
* @Author: 红尘痴子
* @description: 隐藏loading提示框
*/
function hideLoading() {
wx.hideLoading()
}
/**
* @Author: 红尘痴子
* @description: 将页面滚动到目标位置
* @param {*} scrollTop 滚动到页面的目标位置,单位 px
* @param {*} duration 滚动动画的时长,单位 ms
*/
function pageScrollTo(scrollTop, duration) {
wx.pageScrollTo({
scrollTop: scrollTop,
duration: duration
})
}
/**
* @Author: 红尘痴子
* @description: 全屏预览图片
* @param {*} current 当前显示图片的http链接
* @param {*} urls 需要预览的图片http链接列表
*/
function previewImage(current, urls) {
wx.previewImage({
current: current,
urls: urls
})
}
/**
* @Author: 红尘痴子
* @description: 打开另一个小程序
* @param {*} appId 要打开的小程序appId
* @param {*} path 打开的页面路径,如果为空则打开首页
* @param {*} extraData 需要传递给目标小程序的数据
* @param {*} envVersion 要打开的小程序版本 develop 开发版 trial 体验版 release 正式版 正式版小程序一定会跳正式版
*/
function navigateToMiniProgram(appId, path, extraData, envVersion) {
wx.navigateToMiniProgram({
appId: appId,
path: path,
extraData: extraData,
envVersion: envVersion
})
}
/** 使用例子:newArray.sort(sortBy('number',false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序
* @Author: 红尘痴子
* @description: 数组根据数组对象中的某个属性值进行排序的方法
* @param attr 排序的属性 如number属性
* @param rev true表示升序排列,false降序排序
*/
function compare(attr, rev) {
//第二个参数没有传递 默认升序排列
if (rev == undefined) {
rev = 1
} else {
rev = rev ? 1 : -1
}
return function (a, b) {
a = a[attr]
b = b[attr]
if (a < b) {
return rev * -1
}
if (a > b) {
return rev * 1
}
return 0
}
}
/**
* @Author: 红尘痴子
* @description: 判断小程序是否为正式版
* @param {*}
* @return {*} true为正式版
*/
function envVersion() {
const accountInfo = wx.getAccountInfoSync()
if (accountInfo.miniProgram.envVersion == 'release') {
return true
} else {
return false
}
}
/**
* @Author: 红尘痴子
* @description: 将数据存储在本地缓存中指定的 key 中。
* @param {*} key 本地缓存中指定的 key
* @param {*} value 需要存储的内容。只支持原生类型、Date、及能够通过JSON.stringify序列化的对象。
*/
function stg(key, value) {
wx.setStorageSync(key, value)
}
/**
* @Author: 红尘痴子
* @description: 从本地缓存中移除指定 key。
* @param {*} key 本地缓存中指定的 key
*/
function delStg(key) {
wx.removeStorageSync(key)
}
module.exports = {
onThro,
onDeb,
isEmpty,
mobileReg,
emailReg,
idReg,
urlReg,
containReg,
strLengthReg,
rangeReg,
enAndNumReg,
showToast,
showModal,
switchTab,
navigateTo,
navigateBack,
redirectTo,
reLaunch,
showLoading,
hideLoading,
pageScrollTo,
previewImage,
navigateToMiniProgram,
getCurrentPageUrl,
compare,
envVersion,
stg,
delStg
}
版权归属:
一米八的小胖子
许可协议:
本文使用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》协议授权
评论区