// pages/find/find.js import util from '../../utils/util.js' import api from '../../utils/api.js' const app = getApp() Page({ /** * 页面的初始数据 */ data: { auth: {}, userInfo: {}, // scrollTop: 0, scrollTime: 0, redStyle: '', params: { page: 1, offset: 10 }, result: [], count: 0, system: {}, sharePath: 'pages/share/share', shareInfo: {}, ShowShareMask: false, ShowshareCirclesMask: false, day: '', mpType: app.globalData.mpType }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { let timer = setInterval(() => { if (app.globalData.PageCallback) { this.setData({ userInfo: app.globalData.userInfo, auth: app.globalData.auth, }) this.getShareInfo() this.getFindPageData() this.getSystem() clearInterval(timer) } }, 200) }, onShow: function () { wx.showShareMenu({ // 允许转发时携带 shareTicket。 withShareTicket: true }) api.getUserInfo().then(res => { this.setData({ userInfo: res.data, auth: res.data.auth }) }, err => { console.log(err) }) }, onPageScroll: function (res) { let { scrollTime } = this.data if (scrollTime) { clearTimeout(scrollTime) } let _t = setTimeout(() => { this.setData({ redStyle: '' }) }, 1000) // 滑动则隐藏红包、收藏 this.setData({ redStyle: 'slide-right', // scrollTop: res.scrollTop, scrollTime: _t }) }, getDay: function () { var date = new Date(); var seperator1 = "-"; var year = date.getFullYear(); var month = date.getMonth() + 1; var strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } var currentdate = year + seperator1 + month + seperator1 + strDate; return currentdate; }, getShareInfo: function () { api.getShareInfo({ data: { path: this.data.sharePath } }).then(res => { this.setData({ shareInfo: res.data }) }).catch(err => { console.log('getShare', err) }) }, getFindPageData () { api.getFindGameList(this.data.params).then(res => { this.setData({ result: this.data.params.page > 1 ? this.data.result.concat(res.data.list) : res.data.list, count: res.data.count }) }) this.setData({ day: this.getDay() }) }, openGame: function (e) { let id = e.currentTarget.dataset.id api.openGame({ game_id: id }).then(res => { console.log(res) }, err => { console.log(err) }) }, // 跳转赚钱技巧页 routeTips: function (e) { if (this.data.mpType === 'gd') { util.routeTo('/pages/lottery/lottery') } else { util.routeTo('/pages/user/purse') } }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { if (this.data.result.length >= this.data.count) { return false } this.data.params.page++ this.setData({ params: this.data.params }) this.getFindPageData() }, // 页面相关事件处理函数--监听用户下拉动作 onPullDownRefresh: function () { this.setData({ params: { page: 1, offset: 10 } }) api.getFindGameList({ ...this.data.params, HideLoading: true}).then(res => { this.setData({ result: res.data.list, count: res.data.count }) }) this.setData({ day: this.getDay() }) wx.stopPullDownRefresh() }, showPop: function (e) { wx.previewImage({ urls: [e.currentTarget.dataset.entrance] }) }, // 显示隐藏分享menu ChangeShare: function (e) { wx.hideTabBar({ animation: true }) if (!this.data.shareInfo.title) { api.getShareInfo({ data: { path: this.data.sharePath } }).then(res => { console.log('getShare', res) this.setData({ shareInfo: res.data, ShowShareMask: e.currentTarget.dataset.show ? true : false }) }).catch(err => { console.log('getShare', err) }) } else { this.setData({ ShowShareMask: e.currentTarget.dataset.show ? true : false }) } this.getShareInfo() }, // 显示隐藏分享弹框 showShare: function (e) { let { show } = e.currentTarget.dataset if (!show) { wx.showTabBar({ animation: true }) } this.setData({ ShowShareMask: show ? true : false }) }, // 关闭分享朋友圈弹框 CloseshareCircles: function () { wx.showTabBar({ aniamtion: true }) this.setData({ ShowshareCirclesMask: false }) }, // 分享朋友圈 shareCircles: function () { console.log(this.data.shareImgSrc) if (this.data.shareImgSrc) { this.setData({ ShowShareMask: false, ShowshareCirclesMask: true }) return false } wx.showLoading({ title: '正在生成', mask: true }) this.setData({ ShowShareMask: false, ShowshareCirclesMask: true }) const _self = this const rpx = this.data.system.windowWidth / 750 const ctx = wx.createCanvasContext('shareCanvas') const canvasW = 466 * rpx const canvasH = 828 * rpx const avatarW = 70 * rpx const avatarH = 70 * rpx const avatarX = 200 * rpx const avatarY = 19 * rpx const avatarBW = 66 * rpx const avatarBH = 66 * rpx const avatarBX = 200 * rpx const avatarBY = 20 * rpx const QRcodeW = 454 * rpx const QRcodeH = 454 * rpx const QRcodeX = 6 * rpx const QRcodeY = 374 * rpx const QRcodeBW = 147 * rpx const QRcodeBH = 147 * rpx const QRcodeBX = 160 * rpx const QRcodeBY = 580 * rpx util.getImageInfo(this.data.shareInfo.pyq_bg).then(res => { ctx.drawImage(res.path, 0, 0, canvasW, canvasH) ctx.save() ctx.beginPath() ctx.arc(avatarBW / 2 + avatarBX, avatarBH / 2 + avatarBY, avatarBW / 2, 0, Math.PI * 2, false) ctx.clip() ctx.setFillStyle('white') ctx.fillRect(avatarBX, avatarBY, avatarBW, avatarBH) ctx.restore() ctx.draw(true) ctx.save() ctx.beginPath() ctx.arc(QRcodeBW / 2 + QRcodeBX, QRcodeBH / 2 + QRcodeBY, QRcodeBW / 2, 0, Math.PI * 2, false) ctx.clip() ctx.setFillStyle('white') ctx.fillRect(QRcodeBX, QRcodeBY, QRcodeBW, QRcodeBH) ctx.restore() ctx.draw(true) }).then(res => { return util.getImageInfo(this.data.shareInfo.mp_qr).then(res => { ctx.save() ctx.beginPath() ctx.arc(QRcodeW / 2 + QRcodeX, QRcodeH / 2 + QRcodeY, QRcodeW / 2, 0, Math.PI * 2, false) ctx.clip() ctx.drawImage(res.path, canvasW / 2 - QRcodeW / 2, QRcodeY, QRcodeW, QRcodeH) ctx.restore() ctx.draw(true) }) }).then(res => { return util.getImageInfo(this.data.userInfo.avatar).then(res => { ctx.beginPath() ctx.arc(avatarW / 2 + avatarX, avatarH / 2 + avatarY, avatarW / 2, 0, Math.PI * 2, false) ctx.clip() ctx.drawImage(res.path, canvasW / 2 - avatarW / 2, avatarY, avatarW, avatarH) ctx.restore() ctx.draw(true) }) }).then(res => { setTimeout(() => { wx.canvasToTempFilePath({ x: 0, y: 0, width: canvasW, height: canvasH, destWidth: canvasW * 4, destHeight: canvasH * 4, canvasId: 'shareCanvas', success: function (res) { wx.hideLoading() _self.setData({ shareImgSrc: res.tempFilePath }) }, fail: function (res) { console.log(res) } }) }, 500) }).catch(err => { wx.hideLoading() console.log(err) }) }, // 保存分享朋友圈图片 saveMemQRcode: function (e) { const _self = this wx.showLoading({ title: '正在保存...' }) wx.saveImageToPhotosAlbum({ filePath: _self.data.shareImgSrc, success: function (res) { console.log('保存图片', res) wx.showToast({ title: '保存成功', icon: 'success', duration: 1000 }) }, fail: function (err) { console.log('保存图片', err) if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied") { console.log("用户一开始拒绝了,我们想再次发起授权") console.log('打开设置窗口') wx.openSetting({ success(settingdata) { console.log(settingdata) if (settingdata.authSetting['scope.writePhotosAlbum']) { console.log('获取权限成功,给出再次点击图片保存到相册的提示。') } else { console.log('获取权限失败,给出不给权限就无法正常使用的提示') } } }) } }, complete: function () { wx.hideLoading() _self.setData({ ShowshareCirclesMask: false }) wx.showTabBar({ aniamtion: true }) } }) }, // 获取设备信息 getSystem: function (e) { const _self = this wx.getSystemInfo({ success: function (res) { _self.setData({ system: res }) } }) } })