// pages/report/share/share.js Page({ /** * 页面的初始数据 */ data: { barHeight : getApp().globalData.statusBarHeight, // 状态栏高度 userData : '', // 用户信息 inviteCode : '', // 二维码 //海报 canvas : '' }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { // 初始化画布 wx.createSelectorQuery().select('#coverCanvas').fields({node: true, size: true}).exec(canvasNode => { const canvas = canvasNode[0].node canvas.width = 375 canvas.height = 800 this.setData({ canvas }) }) }, /** * 生命周期函数--监听页面显示 */ onShow() { // 小程序码 this.ShareInfo(); // 获取用户信息 this.userInfo(); }, /** * 小程序码 */ ShareInfo() { wx.$api.user.miniShare({ url: '/pages/index/index' }).then(res => { this.setData({ inviteCode: res.data.qrcode }) }).catch(err => {}) }, /** * 用户信息 */ userInfo() { wx.$api.user.home().then(res => { this.setData({ userData : res.data }) }).catch(err => {}) }, /** * 生成海报 */ 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 = 'https://api.siyuankunlun.com/storage/images/2023/11/17/1d57a567ca458f3cc162655cf9201bda.png' //背景素材 const codeImgLoding = new Promise((resolve, reason) => { codeImgEl.onload = () => { resolve() } }) const backBackLoding = new Promise((resolve, reason) => { backBackEl.onload = () => { resolve() } }) Promise.all([codeImgLoding, backBackLoding]).then(() => { // 绘制[背景] ctx.drawImage(backBackEl, 0, 0, 375, 800) // 绘制[二维码] ctx.drawImage(codeImgEl, 260, 650, 80, 80) // 文字 ctx.font = "bold 20px Arial"; //字体大小 ctx.fillStyle = "#3b7cff"; //字体颜色 ctx.textAlign = "center" ctx.fillText('AI智能舌诊', 190, 530); // 文字 ctx.font = "15px Arial"; //字体大小 ctx.fillStyle = "#000000"; //字体颜色 ctx.textAlign = "center" ctx.fillText('上传舌照 快速检测 专业分析', 190, 573); // 文字 ctx.font = "14px Arial"; //字体大小 ctx.fillStyle = "#666666"; //字体颜色 ctx.textAlign = "center" ctx.fillText('舌形、舌色、苔质、苔色、微量元素等~', 188, 605); // 文字 ctx.font = "15px Arial"; //字体大小 ctx.fillStyle = "#000000"; //字体颜色 ctx.fillText('锶源昆仑,舌诊评估检测', 145, 682); // 文字 ctx.font = "15px Arial"; //字体大小 ctx.fillStyle = "#000000"; //字体颜色 ctx.fillText('为您推荐饮水建议', 120, 713); 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: () => { wx.hideLoading() wx.showModal({ title: '提示', content: '暂未授权小程序写入您的相册,无法存储海报', confirmColor: '#e50d01', confirmText: '去设置', success: res => { if (res.confirm) { wx.openSetting() } } }) } }) }, }) }).catch(err => { wx.showToast({ title: '图片加载失败', icon : 'none' }) }) }, /** * 返回上一页 */ returnGo() { wx.navigateBack({ delta: 1 }) }, /** * 微信分享 */ onShareAppMessage(){ return { title : this.data.userData.nickname + ':' + '邀请您一起AI测肤', path : "/pages/index/index?invite=" + this.data.userData.invite, imageUrl: "https://api.siyuankunlun.com/storage/images/2023/11/13/e6c4ba347287a6234864adcb88e04e1e.png" } } })