/* * 手太欠 * 愿这世界都如故事里一样 美好而动人~ */ Page({ data: { isFixedTop : 0, barHeight : getApp().globalData.barHeight, // 状态栏高度 goodsId : '', // 产品id mallData : '', // 产品信息 mallContent: '', // 产品简介 shareSee : false, // 分享弹出 inviteText : '', // 自己的邀请码 isParent : false, // 绑定邀请码 nameValue : '', // 上级邀请码 }, onLoad(options) { if(options.invite != undefined) { getApp().globalData.inviteText = options.invite } this.setData({ goodsId: options.id }) // 初始化画布 wx.createSelectorQuery().select('#coverCanvas').fields({node: true, size: true}).exec(canvasNode => { const canvas = canvasNode[0].node canvas.width = 375 canvas.height = 600 this.setData({ canvas }) }) }, onShow() { // 获取产品详情 this.mallInfo(); // 获取登录状态 if(wx.getStorageSync("token") != ''){ // 小程序码 this.ShareInfo(); } }, /** * 产品详情 */ mallInfo (){ wx.$api.mall.mallSee(this.data.goodsId).then(res => { this.setData({ mallData : res.data, mallContent : res.data.content.replace(/\ { }) }, /** * 确认购买 */ buyTap() { // 获取登录状态 if(wx.getStorageSync("token") != ''){ if(this.data.mallData.is_parent == true) { wx.navigateTo({ url: '/pages/mall/confirm/confirm?goodsid=' + this.data.mallData.goods_id + '&skuid=' + this.data.mallData.skus[0].sku_id + '&qty=1', }) return } // 显示绑定邀请码弹窗 this.setData({ isParent: true }) }else{ // 去登录 wx.navigateTo({ url: "/pages/login/index" }) } }, /** * 小程序码 */ ShareInfo() { wx.$api.user.miniShare({ url: '/pages/index/index' }).then(res => { this.setData({ inviteCode: res.data.qrcode }) }).catch(err => {}) }, /** * 分享弹出 */ shareTap() { // 获取登录状态 if(wx.getStorageSync("token") != ''){ this.setData({ shareSee: !this.data.shareSee }) }else{ // 去登录 wx.navigateTo({ url: "/pages/login/index" }) } }, /** * 生成海报 */ onCanvas(){ wx.showLoading({ title: '生成图片中...', mask : true }) const canvas = this.data.canvas const ctx = canvas.getContext('2d') const codeImgEl = canvas.createImage() const backBackEl = canvas.createImage() codeImgEl.src = this.data.inviteCode //二维码 backBackEl.src = this.data.mallData.cover //产品分享图片 const codeImgLoding = new Promise((resolve, reason) => { codeImgEl.onload = () => { resolve() } }) const backBackLoding = new Promise((resolve, reason) => { backBackEl.onload = () => { resolve() } }) Promise.all([codeImgLoding, backBackLoding]).then(() => { // 绘制[二维码-白色背景] ctx.fillStyle = "#ffffff"; ctx.fillRect(0, 0, 375, 540); ctx.drawImage(backBackEl, 0, 0, 375, 375) // 绘制[二维码] ctx.drawImage(codeImgEl, 270, 440, 80, 80) // 产品名称 ctx.font = "24px Arial"; //字体大小 ctx.fillStyle = "#000000"; //字体颜色 ctx.fillText(this.data.mallData.name, 25, 420); // 产品价格 ctx.font = "bold 36px Arial"; //字体大小 ctx.fillStyle = "#3b7cff"; //字体颜色 ctx.fillText(this.data.mallData.price.price, 25, 480); // 海报文字提示 ctx.font = "18px Arial"; //字体大小 ctx.fillStyle = "#b3b3b3"; //字体颜色 ctx.fillText('识别二维码进行查看', 25, 510); wx.hideLoading() wx.canvasToTempFilePath({ canvas: this.data.canvas, success : res => { wx.saveImageToPhotosAlbum({ filePath: res.tempFilePath, success: saveRes => { wx.showToast({ title: '海报已保存至您的相册', icon : 'none' }) this.setData({ shareSee: false }) }, fail: () => { this.setData({ shareSee: false }) wx.hideLoading() wx.showModal({ title: '提示', content: '暂未授权小程序写入您的相册,无法存储海报', confirmColor: '#e50d01', confirmText: '去设置', success: res => { if (res.confirm) { wx.openSetting() } } }) } }) }, }) }).catch(err => { wx.showToast({ title: '图片加载失败', icon : 'none' }) }) }, /* 邀请码截取 */ bindinput(e) { this.setData({ nameValue: e.detail.value }) }, /** * 绑定邀请码 */ nameTrue() { wx.$api.mall.levelBind({ invite: this.data.nameValue }).then(res => { this.setData({ isParent: false }) wx.navigateTo({ url: '/pages/mall/confirm/confirm?goodsid=' + this.data.mallData.goods_id + '&skuid=' + this.data.mallData.skus[0].sku_id + '&qty=1', }) }).catch(err => {}) }, /** * 关闭绑定邀请码弹窗 */ nameCancel() { this.setData({ isParent: !this.data.isParent }) }, /** * 删除邀请码 */ colseTap() { this.setData({ nameValue: '' }) }, /** * 返回上一页 */ returnGo() { wx.navigateBack({ delta: 1, fail: err => { wx.switchTab({ url: '/pages/index/index?invite=' + getApp().globalData.inviteText }) } }) }, /** * 回到首页 */ returnHome() { wx.switchTab({ url: '/pages/index/index?invite=' + getApp().globalData.inviteText }) }, /** * 监听页面滑动事件 */ onPageScroll(e) { this.setData({ isFixedTop: parseInt(e.scrollTop) }); }, /** * 微信分享 */ onShareAppMessage(){ this.setData({ shareSee: false }) return { title : this.data.mallData.name, path : "/pages/mall/details/details?id=" + this.data.goodsId + '&invite=' + wx.getStorageSync("invite"), imageUrl: this.data.mallData.cover } }, /** * 放大轮播相册图片 */ opneBanner(e){ let imgs = [], index = e.currentTarget.dataset.index for (let img of e.currentTarget.dataset.imgs){ imgs.push(img) } wx.previewImage({ urls : imgs, current : imgs[index] }) } })