1.单提示函数(应用场景只想用户点击确认执行的时候)
function showModal(cont,flag,fn){ wx.showModal({ title: '提示', content: cont, showCancel:flag, success(res) { if (res.confirm) { } else if (res.cancel) { } }, complete(){ fn() wx.hideLoading() } }) };
fn.showModal('单确定执行',false,()=>{})
2.post请求方式
function _post(url, data, success, fail) { wx.request({ url: http + url, header: { 'content-type': 'application/x-www-form-urlencoded', }, method: 'POST', data: data, success (res) { wx.hideLoading(); wx.stopPullDownRefresh(); console.log(res.data) if(!res.data.status && res.data.status!=0){ //后台没有数据返回执行 return; }else if(res.data.status == 600){ //后台状态返回执行 return }else if(res.data.status == 12){ return } success(res); }, fail (res) { fail(res); } }); }
fn._post('xxx/xx/xx',{data:data},res=>{},res=>{})
3.基础用户信息的获取
function baseLogin(fn){ wx.login({ success (res) { var code = res.code; wx.getUserInfo({ success(res) { var encryptedData = res.encryptedData; var iv = res.iv; fn(encryptedData,code,iv)//这里获取到的数据可以去和后台换用户的资料 unionid/用户基本信息之类的 }, fail (res) { wx.reLaunch({ url: '/pages/index/NearbyMerchants/nearShopList/wsq/wsq' }) }, }) } }) }
4.获取自定义data-值
// 获取data-index 属性 function dataIndex(e){ var a = e.currentTarget.dataset.index; var b = e.currentTarget.dataset.id; var d = e.currentTarget.dataset.type; var e = e.currentTarget.dataset.name; var c= [a,b,d,e]; return c }
let index = fn.dataIndex(e)[0]
5.图片上传的封装处理
function upImgAllSuccssAll(res,formData,success,url){ var upImgBoxArr=res.tempFilePaths; var imgarr = []; for(var j in upImgBoxArr){ if(res.tempFiles[j].size>2097152){ http.showModal('有图片已超过2MB,您可以选择压缩图片以后重新上传',false,()=>{}) continue; } var turnsImgUrl = wx.uploadFile({ url: http+url, filePath: upImgBoxArr[j], name: 'fileData',//这里根据自己的实际情况改 herder:{'content-type':'multipart/form-data;'}, formData:formData, success: (resp) => { success(resp) }, }); } }
fn.upImgAllSuccssAll(图片选择完成后的res,需要往后台传递的参数,成功后执行的方法,上传图片的路径)
6.检测左右滑动的封装方法
function moveFn(e,touchDotY,touchDot,time,fn,fn1,flag){ let touchMove = e.touches[0].pageX; let touchMoveY = e.touches[0].pageY; // 检测是否点击以后上下滑动//清空时间数据 if(Number(touchDotY)-Number(touchMoveY)>15 || Number(touchDotY)-Number(touchMoveY)<-15){ time=0; return; } //向左滑动 if(touchMove - touchDot <= -60 && !flag && time>=2) { fn() } //向右滑动 if (touchMove - touchDot >= 60 && !flag && time>=2) { fn1() } }
滑动一般都是三个事件的,下面是使用方法
// 初始点击 touchstartFoot(e){ var that = this; this.data.touchDot = e.touches[0].pageX; this.data.touchDotY = e.touches[0].pageY; this.data.interval = setInterval(function(){ that.data.time+=1; },40); }, // 结束点击 touchendFoot(e){ clearInterval(this.data.interval); this.data.time = 0; this.data.done = false; }, // 移动删除 delMove(e){ var that = this; let touchDotY = this.data.touchDotY; let touchDot = this.data.touchDot; let time = this.data.time; let delstyle = that.data.delstyle; var index = http.dataIndex(e)[0]; http.moveFn(e,touchDotY,touchDot,time,()=>{console.log('左滑动')},()=>{console.log('右滑动')},this.data.done) },
7.input内容获取
// 获取input框里面所有的数据 function inputArr(arr,e){ var index = dataIndex(e)[0]; var a = arr; var b = e.detail.value; a[index] = b; return a }
fn.inputArr(存放input内容的数组,输入input的时候的e值{里面需包含当前输入的index用于定位})
8.支付的封装
// 支付的封装 function payFn(data,fn,fn2){ var payT = data.jsApiParameters; wx.requestPayment({ 'timeStamp': payT.timeStamp, 'nonceStr': payT.nonceStr, 'package': payT.package, 'signType': 'MD5', 'paySign': payT.paySign, 'success'(res){ fn(res) }, 'fail'(res){ fn2(res) } }) }
9.数字隐私处理
// 数字隐私处理 const passStrat = num => { var newTel = [] for(let i = 0;i<num.length;i++){ let aa = num.substring(i,i+1); if(i>=3 && i<=7){ aa = '*' } newTel.push(aa); } var newTelS = newTel.join(""); return newTelS }
10.倒计时
// 直接输出倒计时封装 const dayTime = bb => { var bb = bb var day = parseInt(bb/86400); var time = parseInt((bb-(day*86400))/3600); var min = parseInt((bb-(time*3600+day*86400))/60) var sinTime = time*3600+min*60+day*86400 var sinTimeb; var sin1 = parseInt((bb-sinTime)) var thisTime = addEge(day)+"天"+addEge(time)+":"+addEge(min)+":"+addEge(sin1); bb<=0?thisTime = "0天00:00:00":thisTime return thisTime } const addEge = a => { return a<10?a = "0"+a:a = a } // 输出数组倒计时封装 const dayTimeArr = bb => { var bb = bb var day = parseInt(bb/86400); var time = parseInt((bb-(day*86400))/3600); var min = parseInt((bb-(time*3600+day*86400))/60) var sinTime = time*3600+min*60+day*86400 var sinTimeb; var sin1 = parseInt((bb-sinTime)) var timeArr = [addEge(day),addEge(time),addEge(min),addEge(sin1)]; if(bb<=0){ timeArr = ["00","00","00","00"]; } return timeArr }
11.检测当前机型的长宽(部分安卓机匹配不准确,还是推荐使用节点匹配)
// 检测当前机型的长宽 const nowPhoneWH =()=>{ var a = [] var res = wx.getSystemInfoSync() a[0] = res.windowWidth; a[1] = res.windowHeight; return a }
12.至少十八岁的事件选择输出
const formatTime18 = date => { const year = Number(date.getFullYear())-18 const month = date.getMonth() + 1 const day = date.getDate() return [year, month, day].map(formatNumber).join('-') }