// pages/basketballGym/index.js // import QRCode from './qrcode'; // import drawQrcode from './weapp.qrcode.js'; import { getTimeoutStorage, getDistance } from "../../utils/util"; const app = getApp(); import { getCurrentPageUrl } from './../../utils/util.js' let id = '' // let qrcode = new QRCode('canvas', { // text: "123456", // width: 120, // height: 120, // colorDark: '#000000', // colorLight: '#ffffff', // correctLevel: QRCode.correctLevel.H // }); Page({ /** * 页面的初始数据 */ data: { venues: {}, showUnclickMask: false, orderSn: '000', payMoney: 0, flg: 100, msg: '', isWxLogin: false, isGoHome: false, welcomeMsg: '', isRequesting: false, isPaying: false, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { if (options.id) { id = options.id; } if (options.scene) { id = options.scene; } this.initPage() }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { let pages = getCurrentPages(); this.setData({ isGoHome: pages.length == 1 }) }, /** * 生命周期函数--监听页面显示 */ onShow: function () { this.setData({ showUnclickMask: false // flg: 100 }) this.initPage() }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { this.initPage() }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { return { title: this.data.venues.name, imageUrl: this.data.venues.images[0].url } }, initPage() { wx.showLoading({ title: '加载中...', mask: true, }) app.$api.venueDetail({ venueId: id }).then(res => { console.log(res); this.setData({ venues: res.venues }) }, err => { }); }, // 原 checkIsPayed 轮询废弃,已由 venueJoin / venueOut 接口主动状态校验代替 // 打开导航, opnGPS() { wx.openLocation({ latitude: Number(this.data.venues.latitude), longitude: Number(this.data.venues.longitude), name: this.data.venues.name, address: this.data.venues.address, }) }, // 充值 // recharge() { // if (!wx.getStorageSync('accessToken')) { // wx.setStorageSync('history', getCurrentPageUrl()); // wx.redirectTo({ // url: '/pages/login/index', // }) // return // } // wx.navigateTo({ // url: '/pages/myAccount/index', // }) // }, // 打电话 callPhone() { wx.makePhoneCall({ phoneNumber: this.data.venues.phone, }) }, // 购买套餐 // nowBuy(e) { // let index = e.currentTarget.dataset.index; // if (!wx.getStorageSync('accessToken')) { // wx.setStorageSync('history', getCurrentPageUrl()); // wx.redirectTo({ // url: '/pages/login/index', // }) // return // } // this.setData({ // isShowBuyVip: true, // buyVipObj: this.data.venues.cards[index] // }) // }, // 我要进场 enter() { if (this.data.isRequesting) return; let info = wx.getStorageSync('information') || {}; if (!info.mobile) { wx.showModal({ title: '提示', content: '根据场馆实名制要求,需绑定手机号后才能进场或支付。', confirmText: '去绑定', success(modRes) { if (modRes.confirm) { wx.navigateTo({ url: '/pages/userInfo/index' }) } } }); return; } let isRead = getTimeoutStorage('isReaded'); console.log('isRead======' + isRead) if (isRead == 'ojbk') { this.setData({ isRequesting: true }); wx.getFuzzyLocation({ type: 'wgs84', success: (locRes) => { let distance = getDistance(locRes.latitude, locRes.longitude, Number(this.data.venues.latitude), Number(this.data.venues.longitude)); if (distance > 40000) { this.setData({ isRequesting: false }); wx.showModal({ title: '提示', content: `距离场馆过远,请靠近后再试!`, showCancel: false }); return; } app.$api.venueJoin({ venueId: id }).then(res => { this.setData({ flg: res.join.flg, msg: res.join.msg, payMoney: res.join.money, isRequesting: false }) if (res.join.flg == 0) { if (res.join.order_sn) { this.openDoor(res.join.order_sn, true) } else { console.log('已在场内,无操作') this.setData({ flg: 100 }) wx.showToast({ title: '您已在场内', icon: 'none' }); } } }, err => { this.setData({ isRequesting: false }); }) }, fail: (err) => { this.setData({ isRequesting: false }); wx.showModal({ title: '提示', content: '无法获取您的位置信息,可能会影响进场识别,请确保开启微信和定位权限。', showCancel: false }); } }); } else { wx.navigateTo({ url: '/pages/disclaimers/index' }) } }, // 我要出场 out() { if (this.data.isRequesting) return; this.setData({ isRequesting: true }); app.$api.venueOut({ venueId: id }).then(res => { this.setData({ flg: res.out.flg, msg: res.out.msg, payMoney: res.out.money, isRequesting: false }) if (res.out.flg == 0) { this.openDoor(res.out.order_sn || '000', false) } }, err => { console.log(err); this.setData({ isRequesting: false }); }) }, // 弹框背景禁止滑动 unMove() { return; }, // 关闭进场步骤弹框 closeInStep() { this.setData({ flg: 100, welcomeMsg: '' }) this.initPage() }, // 关闭购买vip弹框 // closeBuyVipPopup() { // this.setData({ // isShowBuyVip: false // }) // }, // 购买Vip // buyVip() { // let that = this; // this.setData({ // showUnclickMask: true // }) // app.$api.memberCardOrderCreate({ // cardType: this.data.buyVipObj.cardType, // num: 1, // type: this.data.venues.type, // venueId: this.data.venues.id // }).then(res => { // app.$pay.wxPay(res.pay).then(res => { // that.setData({ // isShowBuyVip: false, // showUnclickMask: false // }) // }, err => { // that.setData({ // isShowBuyVip: false, // showUnclickMask: false // }) // // }) // }, err => { // // console.log(err); // this.setData({ // isShowBuyVip: false, // showUnclickMask: false // }) // if (err.data.err_code == 30022) { // this.setData({ // isWxLogin: true, // isShowBuyVip: false // }) // } // }) // }, // 关闭 // cancelCardMask() { // this.setData({ // showCardMask: false // }) // }, // 开启会员卡提示 // showCardContent() { // this.setData({ // showCardMask: true // }) // }, // 关闭提示框 cancelDeleteDialog() { if (this.data.isPaying) { wx.showToast({ title: '订单处理中,请稍后', icon: 'none' }); return; } this.setData({ flg: 100 }) }, // 点击提示框确认 confirmDeleteDialog() { if (this.data.isPaying) return; // 防重复点击 this.setData({ isPaying: true }); wx.showLoading({ title: '正在处理订单...', mask: true }); // 物理锁死屏幕 // 去支付 app.$api.basketOrder({ venueId: this.data.venues.id, enterFlag: this.data.venues.enterFlag, payMoney: this.data.payMoney }).then(res => { // 如果后端判定这笔订单已经支付,直接开门 if (res.paid_flag) { wx.hideLoading(); this.setData({ isPaying: false, flg: 0, msg: '' }); this.openDoor(res.order_sn, this.data.venues.enterFlag != '1'); return; } // 未支付,拿到单号拉起微信支付 let orderSn = res.order_sn || (res.pay && res.pay.orderSn); this.setData({ orderSn: orderSn }) wx.hideLoading(); // 隐藏下单的 Loading app.$pay.wxPay(res.pay).then(wxRes => { console.log('支付成功了'); this.setData({ isPaying: false, isRequesting: false }); wx.showLoading({ title: '确认支付结果...', mask: true }); if (this.data.venues.enterFlag == '1') { this.out(); } else { this.enter(); } }, err => { console.log('支付失败'); this.setData({ isPaying: false, isRequesting: false }); if (this.data.venues.enterFlag == '1') { this.out(); } else { this.enter(); } }) }, err => { this.setData({ isPaying: false }); wx.hideLoading(); if (err.data && err.data.err_code == 30022) { this.setData({ isWxLogin: true, }) } else { wx.showToast({ title: '网络异常,请重试', icon: 'none' }); } }) }, // 点击提示框确认 confirmOutDialog() { // 出场 this.openDoor('000', false) }, openDoor(orderSn, isEnter) { wx.showLoading({ title: '正在开门...', mask: true, }) app.$api.generateBarcode({ venueId: this.data.venues.id, enterFlag: this.data.venues.enterFlag, orderSn: orderSn }).then(res => { app.$api.checkBarcode({ code: res.barcode }).then(res2 => { wx.hideLoading(); this.setData({ flg: 0, welcomeMsg: isEnter ? '欢迎光临,请入场' : '再见,请出场' }) }).catch(err2 => { wx.hideLoading(); this.setData({ flg: 999, msg: '开门失败,请联系管理员' }) }) }, err => { console.log(err) wx.hideLoading(); this.setData({ flg: 999, msg: '生成门禁信息失败' }) }); }, // 取消授权登录 cancelWXDialog() { this.setData({ isWxLogin: false }) }, // 授权微信 getUserInfo(e) { wx.getUserProfile({ desc: '用于完善会员资料', success: (res) => { app.$pay.payWxLoing(res).then(res => { wx.showToast({ title: '绑定成功', duration: 2000, }) this.setData({ isWxLogin: false }) }, err => { this.setData({ isWxLogin: false }) }) } }); } })