// pages/integral/integral.js import Integralinfo from '../../api/integralinfo' import {getMobileCache, getPhoneNumberNew as getPhoneNumberSync} from '../../utils/user' Page({ /** * 页面的初始数据 */ data: { lock: false, noResult: false, noMore: false, bannerList: [], couponList: [], channelid: '', shopid: '', storeid: '', bodyHidden: true, bgStatus: false, scorePhone: false, animationData: {}, integralIngo:{}, loading: false, setPhone: '', current: '', integralNum: 0, phone: '********', // phone: '15888282621', mobile: '********', paymentStatus: false, paymentBgStatus: false, activeNum: 0, listTrue: [], listStatus: false, total: 0, row: {}, codeName: '60s后重新获取', codeTime: '', active1obj: { orderId: '', order_no: '', step: '' }, active1code: '', active2code: '', tgid: '', scene: '', noClick: true, showToastObj: { icon: '', title: '', status: false }, stepList:[ { name:"下单时间", status:"0" }, { name:"支付时间", status:"0" }, { name:"降锁时间", status:"1"//status步骤条状态。=1表示最后一条渲染不同样式 } ] }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var reg = /^(\d{3})\d{4}(\d{4})$/; this.setData({ isLogin: getMobileCache() != '', phone: getMobileCache() == ''?'********':getMobileCache().replace(reg, "$1****$2"), setPhone: getMobileCache(), mobile: getMobileCache(), }) this.step = this.selectComponent("#step"); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { this.getBannerList() this.getCouponList() if(getMobileCache() != ''){ this.getphoneClick() } }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { }, getBannerList: function() { Integralinfo.getBannerList({ channelid: this.data.channelid, shopid: this.data.shopid, storeid: this.data.storeid }).then(res => { console.log(res.data) this.setData({ bannerList: res.data }) }).catch(err => { console.log(err) }) }, getCouponList: function() { Integralinfo.getList({ channelid: this.data.channelid, shopid: this.data.shopid, storeid: this.data.storeid }).then(res => { this.couponListView(res.data) this.data.lock = false }).catch(_ => { console.log(_) this.data.lock = false }) }, couponListView: function(data) { if (!Array.isArray(data) || data.length == 0) { console.log("优惠券列表数据为空"); } data.forEach((v) => { v.quantity = 0 v.integral = v.price * v.ratio }) let num = this.data.integralNum > 20000 ? 19999 : this.data.integralNum const arr = [] for (let i = 0; i < data.length; i++) { data[i].quantity = parseInt(num / data[i].integral) if (data[i].quantity > 0) { num -= (data[i].quantity * data[i].price) * data[i].ratio this.data.total += (data[i].quantity * data[i].price) * data[i].ratio this.setData({ total:this.data.total }) arr.push(data[i]) data.splice(i, 1) i-- } } this.setData({ couponList: [...arr, ...data] }) console.log(this.data.couponList) }, // 点击标识点触发 detailsClick(row) { this.hideModal(); this.row = row.currentTarget.dataset.info console.log(this.row) if (this.row.detail_type === 0) { this.row.detailArr = this.row.detail.split('\n') } else { this.row.detailArr = row.detail } this.setData({ integralIngo: this.row, }) console.log(this.data.integralIngo) setTimeout(() => { this.showDodal(); }, 100) }, showDodal() { var that = this; // 显示遮罩层 var animation = wx.createAnimation({ duration: 150, timingFunction: "linear", delay: 0 }) this.setData({ bgStatus: true, bodyHidden: false }) that.animation = animation animation.translateY(-500).step() that.setData({ animationData: animation.export() }) }, //隐藏对话框 hideModal() { var that = this; console.log(that.data) // 隐藏遮罩层 var animation = wx.createAnimation({ duration: 150, timingFunction: "linear", delay: 0 }) this.setData({ bodyHidden: true, bgStatus: false, scorePhone: false, }) that.animation = animation animation.translateY(0).step() that.setData({ animationData: animation.export() }) }, /**授权手机号 */ getPhoneNumber(e) { getPhoneNumberSync(e, async () => { console.log(e) if (getMobileCache() == '') { wx.showToast({ icon:'error', title:'先查询移动积分' }) setTimeout(()=>{ that.data.setPhone = '' that.scoreClick() wx.hideLoading() },500) } else { var reg = /^(\d{3})\d{4}(\d{4})$/; this.setData({ isLogin: true, setPhone: '13816922995', mobile: '13816922995', phone: '13816922995'.replace(reg, "$1****$2") }) // console.log(this.data.setPhone) // console.log(this.data.mobile) // console.log(this.data.phone) this.getphoneClick() } }) }, // 查询积分 scoreClick() { this.setData({ bgStatus: true, scorePhone: true, }) }, // 查询积分 getphoneClick() { console.log(this.data.setPhone) if (!(/^1[3456789]\d{9}$/.test(this.data.setPhone))) { wx.showToast({ title: '填写正确手机号', icon: 'error', duration: 2000 }); } else if (this.data.setPhone != '') { // wx.showLoading({ // title: '加载中' // }); Integralinfo.getBalance({ mobile: '13816922995', callbackUrl: '../integral/integral.wxml', fingerprint: '', sessionid: '', shopid: 2, type: 'wx', }).then(arr => { console.log(arr) wx.hideLoading(); if (arr.code === '0000') { var reg = /^(\d{3})\d{4}(\d{4})$/; this.setData({ integralNum: arr.data, setPhone: '13816922995', phone: this.data.setPhone.replace(reg, "$1****$2"), }) // this.data.integralNum = arr.data // var reg = /^(\d{3})\d{4}(\d{4})$/; // this.data.mobile = this.data.setPhone // this.data.setPhone = this.data.setPhone.replace(reg, "$1****$2"); let response = { points: arr.data, outTokenId: this.data.setPhone + '_out' } // App.globalData.AppShow = response this.hideModal() this.getCouponList() wx.pageScrollTo({ scrollTop: 0 }); let dateNum = Math.round(new Date().getTime() / 1000).toString() if (wx.getStorageSync('orderDetails') != '' && this.data.mobile === JSON.parse(wx .getStorageSync('orderDetails')).mobile) { if (dateNum - JSON.parse(wx.getStorageSync('orderDetails')).date <= 120) { const data = JSON.parse(wx.getStorageSync('orderDetails')) if (dateNum - data.date < 60) { let time = dateNum - data.date this.data.codeName = 60 - time + 's后重新获取' this.codeSetInterval(60 - time) } else { this.data.codeName = '重新获取验证码' } this.setData({ paymentStatus: true, paymentBgStatus: true, active1code: '', active2code: '', active1obj: data, }) if (data.step === 1) { this.data.activeNum = 1 } else if (data.step === 2) { this.data.activeNum = 0 } } } } else { this.setData({ loading: true, bgStatus: true }) setTimeout(() => { // #ifdef H5 window.location.href = arr.message; // #endif // #ifdef MP-WEIXIN const version = wx.getSystemInfoSync().SDKVersion if (this.compareVersion(version, '2.20.1') >= 0) { wx.openEmbeddedMiniProgram({ appId: arr.data.appId, path: arr.data.path, extraData: arr.data.extraData, success(res) { // 打开成功 }, fail() {} }) } else { // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示 wx.navigateToMiniProgram({ appId: arr.data.appId, path: arr.data.path, extraData: arr.data.extraData, success(res) { // 打开成功 }, fail() { } }) } // #endif this.hideModal() this.loading = false }, 4000) } }) } }, // 商品数量减少按钮 reduceClick(e) { console.log(e.currentTarget.dataset.index) let index = e.currentTarget.dataset.index this.data.couponList[index].quantity-- this.data.total -= parseInt(this.data.couponList[index].integral) this.setData({ total: this.data.total, couponList: this.data.couponList }) }, // 商品数量添加按钮 addClick(e) { let index = e.currentTarget.dataset.index if (this.data.phone !== '********') { if (this.data.total + parseInt(this.data.couponList[index].integral) > 20000) { wx.showToast({ title: '单笔限额两万分', icon: 'error', duration: 2000 }); } else if ((this.data.integralNum - this.data.total) >= this.data.couponList[index].integral) { this.data.couponList[index].quantity++ this.data.total += parseInt(this.data.couponList[index].integral) this.setData({ total: this.data.total, couponList:this.data.couponList }) } else { wx.showToast({ title: '积分不足', icon: 'error', duration: 2000 }); } } else { wx.showToast({ title: '先查询移动积分', icon: 'error', duration: 1000 }); setTimeout(() => { this.scoreClick() }, 1000) } }, /** 刷新 */ shuaxinClick() { Integralinfo.getBalance({ mobile: '13816922995', callbackUrl: '../integral/integral.wxml', fingerprint: '', sessionid: '', shopid: 2, type: 'wx', }).then(arr => { if (arr.code === '0000') { wx.hideLoading(); wx.showToast({ title: '查询成功!', icon: 'success', duration: 1000 }); var reg = /^(\d{3})\d{4}(\d{4})$/; this.setData({ integralNum: arr.data, setPhone: '13816922995', phone: this.data.setPhone.replace(reg, "$1****$2"), }) } }) }, // 支付按钮 paymentClick() { console.log(this.data.mobile) if (this.data.mobile === '********') { setTimeout(() => { this.scoreClick() }, 1000) wx.showToast({ title: '先查询移动积分', icon: 'error', duration: 1000 }); } else if (this.data.total === 0) { wx.showToast({ title: '请选择商品数量', icon: 'error', duration: 2000 }); } else { const data = [] this.data.couponList.forEach(v => { if (v.quantity > 0) { data.push({ couponid: v.id, num: v.quantity, }) } }) // let fingerprint = '' // let sessionid = '' // // #ifndef MP-WEIXIN // fingerprint = window.fmOpt // sessionid = window.sessionId // // #endif Integralinfo.getOrder({ fingerprint:'', list: data, mobile: this.data.setPhone, tgid: this.data.tgid, sessionid:'', shopid: this.data.shopid }).then(res => { if (res.code === '0000') { this.setData({ codeName: '60s后重新获取', paymentStatus: true, paymentBgStatus: true, active1code: '', active2code: '', active1obj:{ orderId: res.data.orderId, order_no: res.data.order_no, step: res.data.step, date: Math.round(new Date().getTime() / 1000).toString(), mobile: this.data.mobile }, }) wx.setStorageSync('orderDetails', JSON.stringify(this.data.active1obj)) if (res.data.step === 1) { this.setData({ activeNum: 1, }) } else if (res.data.step === 2) { this.setData({ activeNum: 0, }) } this.getPaySend() this.codeSetInterval(60) } else { console.log(res.data.message) console.log(this.data.integralNum,this.data.mobile,JSON.stringify(data)) // log.error(`${res.data.message}`) // log.error(`${this.data.integralNum},${this.data.mobile},${JSON.stringify(data)}`) this.setData({ showToastObj: { icon: 'iconSueecss', title: res.data.message, status: true } }) setTimeout(() => { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.data.message, status: false } }) }, 2500) } }) } }, // 步骤按钮 nextCodeClick() { console.log(this.data.activeNum,this.data.active2code) if (this.data.activeNum === 1 && this.data.active2code !== '') { // wx.showLoading({ // title: '兑换中' // }); // let fingerprint = '' // let sessionid = '' // // #ifndef MP-WEIXIN // fingerprint = window.fmOpt // sessionid = window.sessionId // #endif Integralinfo.getPayOnce({ fingerprint: '', mobile: this.data.mobile, optCode: this.data.active2code, order_no: this.data.active1obj.order_no, orderId: this.data.active1obj.orderId, sessionid: '', shopid: this.data.shopid }).then(res => { if (res.code === '0000') { const obj = { mobile: this.data.mobile, channelid: this.data.channelid, shopid: this.data.shopid, storeid: this.data.storeid } this.data.integralNum -= this.data.total this.setData({ integralNum: this.data.integralNum, total: 0, listStatus: false, listTrue: [], }) this.data.couponList.forEach((v)=>{ v.quantity = 0 }) this.setData({ paymentStatus: false, paymentBgStatus: false, }) wx.setStorageSync('orderDetails', null) wx.hideLoading(); wx.navigateTo({ url: '../success/success?row=' + JSON.stringify(obj) }) } else { wx.hideLoading(); this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: true } }) setTimeout(() => { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: false } }) }, 2500) } }); } else if (this.data.activeNum === 0 && this.data.active1code !== '') { Integralinfo.getPayOnce({ fingerprint: '', mobile: this.data.mobile, optCode: this.data.active1code, orderId: this.data.active1obj.orderId, order_no: this.data.active1obj.order_no, sessionid: '', shopid: this.data.shopid }).then(res => { if (res.code === '0000') { clearInterval(this.data.codeTime) this.setData({ active2code: '', activeNum: this.activeNum++, codeName: '60s后重新获取', }) this.codeSetInterval(60) } else { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: true } }) setTimeout(() => { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: false } }) }, 2500) } }) } else { wx.showToast({ icon: 'error', title: '请填写验证码' }) } }, // 短信定时器 codeSetInterval(num) { console.log(num) let time = num this.data.codeTime = setInterval(() => { if (time <= 1) { this.setData({ codeName: '重新获取验证码', }) clearInterval(this.data.codeTime) } else { time-- this.setData({ codeName:`${time}s后重新获取` }) } }, 1000) }, getPaySend(){ if (this.data.activeNum === 1) { console.log('发送短信') Integralinfo.getPaySend({ order_no: this.data.active1obj.order_no, mobile: this.data.mobile, shopid: this.data.shopid, }).then(res => { if (res.code === '0000') { this.setData({ codeName: '60s后重新获取', }) this.codeSetInterval(60) } else { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: true } }) setTimeout(() => { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: false } }) }, 2500) } }) } }, // 重新获取短信 getCodeClick() { console.log(this.data.activeNum,this.data.codeName,this.data.active1obj.step) if ((this.data.activeNum === 1 && this.data.codeName === '重新获取验证码') && this.data.active1obj.step === 1) { Integralinfo.getSendCmccSms({ orderId: this.data.active1obj.orderId, mobile: this.data.mobile, shopid: this.data.shopid }).then(res => { if (res.code === '0000') { this.setData({ codeName: '60s后重新获取', }) this.codeSetInterval(60) const obj = this.data.active1obj obj.date = Math.round(new Date().getTime() / 1000).toString() wx.setStorageSync('orderDetails', JSON.stringify(obj)) } else { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: true } }) setTimeout(() => { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: false } }) }, 2500) } }); } else { if (this.data.activeNum === 0 && this.data.codeName === '重新获取验证码') { Integralinfo.getSendCmccSms({ orderId: this.data.active1obj.orderId, mobile: this.data.mobile, shopid: this.data.shopid }).then(res => { if (res.code === '0000') { this.codeName = '60s后重新获取' this.codeSetInterval(60) } else { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: true } }) setTimeout(() => { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: false } }) }, 2500) } }); } else if (this.data.activeNum === 1 && this.data.codeName === '重新获取验证码') { console.log('短信') Integralinfo.getPaySend({ order_no: this.data.active1obj.order_no, mobile: this.data.mobile, shopid: this.data.shopid, }).then(res => { if (res.code === '0000') { this.setData({ codeName: '60s后重新获取', }) this.codeSetInterval(60) } else { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: true } }) setTimeout(() => { this.setData({ showToastObj: { icon: 'iconSueecss', title: res.message, status: false } }) }, 2500) } }); } } }, })