var t = getApp(), a = t.request, o = t.globalData.setting, os = o, i = require("../../../utils/util.js"), ut = i, s = require("../../../utils/common.js"),t_pay = require("../../../utils/pay2.js"), w = require("../../../utils/wxParse/wxParse.js"); var regeneratorRuntime = require('../../../utils/runtime.js'); //wx.downloadFile把线上地址设为本地地址 Page({ /** * 页面的初始数据 */ data: { images: [o.imghost + "/miniapp/images/plus/card_one.jpg", o.imghost + "/miniapp/images/plus/card_two.jpg", o.imghost + "/miniapp/images/plus/card_three.jpg"], url: o.imghost, screenWidth: 0, screenheight: 0, canvasHidden:1, shareImgPath: null, is_plusCard: "",//卡的列表 imagePath: "", user: null,//会员的数据 is_card: 0,//用于判断是否是续费页和购买页面 0不是puls会员 content: "",//等级卡规则 is_card_rule: "",//等级卡规则判断用 big_card: null,//最大的卡 divide_into:"",//分佣 is_loading:"",//判断分享只执行一次 bas_ming:"",//分享的卡的图片 head_pic:"",//会员头像 img_money:"",//缓存VIP的图片 img_Ancrown:"",//会员权益 img_Identification:"",//缓存标识的图片 img_square:"",//缓存方块的图片 privilege_o:"",//卡的勋章图 cardid: "",//会员卡的id user_card: null,//会员买的卡 free:null,//分佣的数据 expiryDate:"",//卡到期时间 is_guoqi:0, //卡是不是过期 IsStopBuy:0, //卡是否停用 yu_e_show:0,//装入余额的弹窗 is_show_change_pop:0, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { //--先判断会员状态-- var user_info = getApp().globalData.userInfo; if (user_info == null || user_info.mobile == undefined || user_info.mobile == "" || user_info.mobile == null) { wx.navigateTo({ url: '/pages/getphone/getphone' }) return false; } var that = this,ee=this; var th=this; //-----------等级卡说明------------------- getApp().request.promiseGet("/api/weshop/storeconfig/get/" + os.stoid, { }).then(res => { var is_cardrule = res.data.data.cardrules; w.wxParse("content", "html", is_cardrule, ee, 6); ee.setData({ is_card_rule: is_cardrule }); }) //----------------------------获取最大的卡类----------------------- getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/list?" + "storeId=" + o.stoid, { }).then(res => { var plusCard = res.data.data; var big_cards = null,big_card=null; if(!plusCard) return false; var new_card_arr=[]; for (var i = 0; i < plusCard.length; i++) { if (plusCard[i].CardImg == "") plusCard[i].CardImg = th.data.url + "/miniapp/images/plus/bg" + (i + 1) + ".jpg?v=1"; //big_cards = Math.max(plusCard[i].CardFee) //if (plusCard[i].CardFee == big_cards) { // big_card = plusCard[i] //} if(!plusCard[i].IsStopBuy) { new_card_arr.push(plusCard[i]); } } //对比函数 var compare = function (obj1, obj2) { var val1 = obj1.CardFee;var val2 = obj2.CardFee; if (val1 > val2) { return -1; }else if (val1 < val2) { return 1; }else{ return 0; } } new_card_arr.sort(compare); big_card= new_card_arr[0]; ee.setData({ is_plusCard: new_card_arr, big_card: big_card, }) //缓存分享卡的图片 wx.getImageInfo({ src: big_card.CardImg, success: function (res) { //回调写法 var bas_ming = res.path; ee.setData({ bas_ming: bas_ming }); } }) }) //获取用户设备信息,屏幕宽度 wx.getSystemInfo({ success: res => { that.setData({ screenWidth: res.screenWidth }) } }) }, //------------程序初始化入口 同步------------- async init() { var ee = this, th = ee; //-------------会员卡的获取------------- await getApp().request.promiseGet("/api/weshop/plus/vip/mem/list", { data: { storeId: os.stoid, userId: getApp().globalData.user_id, }, }).then(res => { var GradeCardID = res.data.data[0].GradeCardID; var expiryDate = res.data.data[0].ExpiryDate console.log(GradeCardID, "卡的id", res.data.data[0]); var now=ut.gettimestamp(); var str = expiryDate.replace(/-/g, '/'); var end = new Date(str); end = Date.parse(end) / 1000; var is_guoqi=0; if(endparseFloat(cur_card.CardFee)){ new_buy_list.push(item); } } } } if(new_buy_list.length>0){ th.setData({buy_list:new_buy_list}); } } },1800) }) //-----------会员分佣------------------- await getApp().request.promiseGet("/api/weshop/plus/vip/mem/freeze/money?userId=" + getApp().globalData.user_id + "&storeId=" + os.stoid, { }).then(res => { console.log("分佣的数据", res.data.data); if (res.data.code==0){ ee.setData({ free:res.data.data}); }else{ ee.setData({ free: 0 }); } }) //-----------会员的卡类------------------- await getApp().request.promiseGet("/api/weshop/plus/vip/mem/bership/get?storeId=" + os.stoid + "&CardId=" + ee.data.cardid, { }).then(res => { var user_card= res.data.data; if (user_card.CardImg==""){ var index =parseInt(user_card.CorrPrice.replace("Price","")); user_card.CardImg = th.data.url + "/miniapp/images/plus/bg" + index + ".jpg?v=1"; } if (user_card.IsStopBuy==true){ this.setData({IsStopBuy:1}) } console.log(user_card,"会员的卡类"); ee.setData({user_card: user_card}); }) //-----------------获取会员信息------------------------------- await getApp().request.promiseGet("/api/weshop/users/get/" + os.stoid + "/" + getApp().globalData.user_id,{ }).then(res => { var user = res.data.data; var url = ee.data.url; console.log("是什么东西", url); var img_money = url + "/miniapp/images/plus/share/money.png"; var img_Ancrown = url + "/miniapp/images/plus/share/Ancrown.png"; var img_Identification = url + "/miniapp/images/plus/share/Identification.png"; var img_square = url + "/miniapp/images/plus/share/square.png"; var privilege_o = url + "/miniapp/images/plus/share/privilege_o.png"; console.log("图片转换",img_money); var big_card = ee.data.big_card; ee.setData({ user: user, img_money: img_money, img_Ancrown: img_Ancrown , img_Identification: img_Identification, img_square, img_square , privilege_o, privilege_o }); //缓存会员头像的图片 wx.getImageInfo({ src: user.head_pic, success: function (res) { //回调写法 var user_head= res.path; ee.setData({ head_pic: user_head }); } }) }) //--------------------缓存vip价格的图片--------------- wx.getImageInfo({ src:ee.data.img_money, success: function (res) { //回调写法 var img_money = res.path; ee.setData({ img_money: img_money}); } }) //--------------------缓存权益的图片--------------- wx.getImageInfo({ src: ee.data.img_Ancrown, success: function (res) { //回调写法 var img_Ancrown = res.path; ee.setData({ img_Ancrown: img_Ancrown }); } }) //--------------------缓存标识的图片--------------- wx.getImageInfo({ src: ee.data.img_Identification, success: function (res) { //回调写法 var img_Identification = res.path; ee.setData({ img_Identification: img_Identification }); } }) //--------------------卡的勋章--------------- wx.getImageInfo({ src: ee.data.privilege_o, success: function (res) { //回调写法 var privilege_o = res.path; ee.setData({ privilege_o: privilege_o }); } }) //--------------------方块图--------------- wx.getImageInfo({ src: ee.data.img_square, success: function (res) { //回调写法 var img_square = res.path; ee.setData({ img_square: img_square}); } }) }, //-----打开分享图片---- Share_pictures: function () { this.setData({ canvasHidden: false }) this.saveImageToPhotosAlbum(); }, /** * 生命周期函数--监听页面初次渲染完成 */ saveImageToPhotosAlbum: function () { if (this.data.imagePath != "") { wx.previewImage({ urls: [this.data.imagePath], }) return; } // if(this.data.is_loading) return false ; this.data.is_loading=1; wx.showLoading({ title: '生成中...', }) this.setData({ canvasHidden: false }) var th = this; //设置画板显示,才能开始绘图 var card_ming=th.data.bas_ming;//卡的图片 var user = th.data.user;//会员资料; var big_card= th.data.big_card;//获取最大的卡 var user_head = th.data.head_pic;//会员头像 var img_money = th.data.img_money;//缓存vip的价格 var img_Ancrown = th.data.img_Ancrown;//会员权益的图片 var img_Identification = th.data.img_Identification;//会员标识 var privilege_o = th.data.privilege_o;//勋章图片 var img_square=th.data.img_square; var nickname = user.nickname; var app = getApp(); var unit = th.data.screenWidth / 750 * 1.35; var scene = getApp().globalData.user_id; console.log("用户头像", th.data.head_pic); ///二微码 var path3 = os.url + "/api/wx/open/app/user/getWeAppEwm/" + os.stoid + "?sceneValue=" + scene + "&pageValue=pages/user/plus/plus"; wx.getImageInfo({ src: path3, success: function (res) { //回调写法 th.get_head_temp(th.get_goods_temp, function () { var vpath=res.path; console.log("生成二维码", path3); //开启画布 const ctx = wx.createCanvasContext('myCanvas'); //先画背景 930 ctx.drawImage("../../../images/share/mackground.png", 0, 0, 554 * unit, 899 * unit); ctx.setFontSize(24 * unit); ctx.setFillStyle("rgb(0,0,0)"); // ctx.fillText(nickname, 152 * unit, 75 * unit, 200 * unit); ctx.fillText(nickname, 152 * unit, 76 * unit); // var width = 24 * nickname.length * unit + 2 * unit; var width = 24 * nickname.length * unit + 2 * unit; console.log("强烈推荐的距离:", "nickname.length", nickname.length, "unit", unit, "width", width); var tj_path = "../../../images/share/q_tj.png"; // ctx.drawImage(tj_path, 255 * unit + width, 50 * unit, 90 * unit, 30 * unit); ctx.drawImage(tj_path, 152 * unit + width, 54 * unit, 95 * unit, 30 * unit); ctx.setFontSize(18 * unit); ctx.setLineJoin('round'); //交点设置成圆角 ctx.setFillStyle("white"); ctx.fillText('强烈推荐', 149 * unit + width + 15 * unit, 76 * unit); // ctx.fillText("强烈推荐", 265 * unit + width, 72 * unit); ctx.setStrokeStyle("rgb(255,255,255)"); ctx.setLineDash([5 * unit, 5 * unit], 5 * unit); ctx.beginPath(); ctx.moveTo(0, 125 * unit); ctx.lineTo(554 * unit, 125 * unit); ctx.stroke(); var x = 55 * unit, y = 165 * unit, w = 444 * unit, h = 220 * unit, r = 14 * unit; ctx.save(); // 开始绘制 ctx.beginPath(); // 因为边缘描边存在锯齿,最好指定使用 transparent 填充 // 这里是使用 fill 还是 stroke都可以,二选一即可 ctx.setFillStyle('rgb(237,188,150)') // ctx.setStrokeStyle('transparent') // 左上角 ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5) // border-top ctx.moveTo(x + r, y) ctx.lineTo(x + w - r, y) ctx.lineTo(x + w, y + r) // 右上角 ctx.arc(x + w - r, y + r, r, Math.PI * 1.5, Math.PI * 2) // border-right ctx.lineTo(x + w, y + h - r) ctx.lineTo(x + w - r, y + h) // 右下角 ctx.arc(x + w - r, y + h - r, r, 0, Math.PI * 0.5) // border-bottom ctx.lineTo(x + r, y + h) ctx.lineTo(x, y + h - r) // 左下角 ctx.arc(x + r, y + h - r, r, Math.PI * 0.5, Math.PI) // border-left ctx.lineTo(x, y + r) ctx.lineTo(x + r, y) // 这里是使用 fill 还是 stroke都可以,二选一即可,但是需要与上面对应 ctx.fill() ctx.clip(); //画了圆 再剪切 原始画布中剪切任意形状和尺寸。一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内 ctx.drawImage(card_ming, x, y, 444 * unit, 220 * unit); // 推进去图片 ctx.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图上下午即状态 可以继续绘制 ctx.beginPath(); // 卡图片 // ctx.drawImage("../../../images/plus/share/one.jpg", 55 * unit, 165 * unit, 444 * unit, 220 * unit,); ctx.setFontSize(26 * unit); ctx.setFillStyle('rgb(218,194,169)'); ctx.fillText(big_card.CardName, 80 * unit, 215 * unit); ctx.setFontSize(18 * unit); ctx.setFillStyle('rgb(218,194,169)'); ctx.fillText("开通plus会员仅" + big_card.CardFee+"元", 80 * unit, 240 * unit); // zzctx.drawImage(privilege_o, 80 * unit, 343 * unit, 20 * unit, 20 * unit); ctx.setFontSize(14 * unit); ctx.setFillStyle('rgb(218,194,169)'); ctx.fillText("按去年用户消费计算,开卡后一年预计省¥3031",85 * unit, 360 * unit); ctx.rect(70 * unit, 425 * unit, 182 * unit, 1 * unit); ctx.setFillStyle('rgb(218,194,169)'); ctx.fill(); ctx.drawImage(img_square, 267 * unit, 420 * unit, 13 * unit, 13 * unit); ctx.beginPath(); ctx.rect(295 * unit, 425 * unit, 182 * unit, 1 * unit); ctx.setFillStyle('rgb(218,194,169)'); ctx.fill(); ctx.drawImage(img_square, 80 * unit, 470 * unit, 10 * unit, 10 * unit); ctx.setFontSize(24 * unit); ctx.setFillStyle("rgb(198,165,126)"); ctx.fillText("PULS会员权益", 100 * unit, 475 * unit); ctx.setFontSize(20 * unit); ctx.setFillStyle("rgb(198,165,126)"); ctx.fillText("PULS会员专属权益", 100 * unit, 505 * unit); ctx.drawImage(img_Ancrown, 355 * unit, 440 * unit, 65 * unit, 65 * unit); ctx.rect(85 * unit, 530 * unit, 375 * unit, 1 * unit) ctx.setFillStyle('rgb(218,194,169)') ctx.fill(); ctx.drawImage(img_square, 80 * unit, 575 * unit, 10 * unit, 10 * unit); ctx.setFontSize(24 * unit); ctx.setFillStyle("rgb(198,165,126)"); ctx.fillText("PULS会员标识", 100 * unit, 580 * unit); ctx.setFontSize(20 * unit); ctx.setFillStyle("rgb(198,165,126)"); ctx.fillText("彰显尊贵身份的象征", 100 * unit, 610 * unit); ctx.drawImage(img_Identification, 355 * unit, 548 * unit, 65 * unit, 65 * unit); ctx.rect(85 * unit, 635 * unit, 375 * unit, 1 * unit); ctx.setFillStyle('rgb(218,194,169)'); ctx.fill(); ctx.drawImage(img_square, 80 * unit, 695 * unit, 10 * unit, 10 * unit); ctx.setFontSize(24 * unit); ctx.setFillStyle("rgb(198,165,126)"); ctx.fillText("PULS会员价格", 100 * unit, 695 * unit); ctx.setFontSize(20 * unit); ctx.setFillStyle("rgb(198,165,126)"); ctx.fillText("享受专属会员超低价", 100 * unit, 725 * unit); ctx.drawImage(img_money, 355 * unit, 660 * unit, 65 * unit, 65 * unit); ctx.rect(85 * unit, 750 * unit, 375 * unit, 1 * unit) ctx.setFillStyle('rgb(218,194,169)') ctx.fill(); ctx.drawImage(vpath, 100 * unit, 780 * unit, 110 * unit, 110 * unit); ctx.setFontSize(20 * unit); ctx.setFillStyle("#000"); ctx.fillText("解锁新权益 精彩享不停", 230 * unit, 825 * unit); ctx.setFontSize(20 * unit); ctx.setFillStyle("#000"); ctx.fillText("长按识别二维码,立即开通!", 230 * unit, 865 * unit); //---绘制圆形要放在最后---- ctx.save(); ctx.beginPath(); var h_x = 60 * unit; var h_y = 24 * unit; var h_r = 40 * unit; var cx = h_x + h_r; var cy = h_y + h_r; ctx.arc(cx, cy, h_r, 0, Math.PI * 2, false); ctx.closePath(); ctx.fill(); ctx.clip(); ctx.drawImage(th.data.head_pic, h_x, h_y, h_r * 2, h_r * 2); ctx.restore(); var x = 345 * unit, y = 190 * unit, w = 105 * unit, h = 30 * unit, r = 14 * unit; ctx.save(); // 开始绘制 ctx.beginPath(); // 因为边缘描边存在锯齿,最好指定使用 transparent 填充 // 这里是使用 fill 还是 stroke都可以,二选一即可 ctx.setFillStyle('rgb(237,188,150)') // ctx.setStrokeStyle('transparent') // 左上角 ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5) // border-top ctx.moveTo(x + r, y) ctx.lineTo(x + w - r, y) ctx.lineTo(x + w, y + r) // 右上角 ctx.arc(x + w - r, y + r, r, Math.PI * 1.5, Math.PI * 2) // border-right ctx.lineTo(x + w, y + h - r) ctx.lineTo(x + w - r, y + h) // 右下角 ctx.arc(x + w - r, y + h - r, r, 0, Math.PI * 0.5) // border-bottom ctx.lineTo(x + r, y + h) ctx.lineTo(x, y + h - r) // 左下角 ctx.arc(x + r, y + h - r, r, Math.PI * 0.5, Math.PI) // border-left ctx.lineTo(x, y + r) ctx.lineTo(x + r, y) // 这里是使用 fill 还是 stroke都可以,二选一即可,但是需要与上面对应 ctx.fill() ctx.setFontSize(18 * unit); ctx.setFillStyle("#000"); ctx.fillText("立即开通", 362 * unit, 212 * unit); //绘制图片 ctx.draw(false, function(){ setTimeout(function(){ wx.canvasToTempFilePath({ x: 0, y: 0, width: 750, height: 930, destWidth: 1.2 * 750 * 750 / th.data.screenWidth, destHeight: 1.2 * 1217 * 750 / th.data.screenWidth, canvasId: 'myCanvas', success: function (res) { wx.hideLoading();//关闭生成中的方法 th.data.is_loading = 0; console.log("生成的海报"); console.log(res.tempFilePath); var tempFilePath = res.tempFilePath; th.setData({ imagePath: tempFilePath, maskHidden: false, canvasHidden: true }); wx.previewImage({ urls: [res.tempFilePath], }) if (!res.tempFilePath) { wx.showModal({ title: '提示', content: '图片绘制中,请稍后重试', showCancel: false }) } } }) },500) }) }) } }) }, //--获取头像的本地缓存,回调写法-- get_head_temp: function (tt, func) { var ee = this; console.log("获取头像", ee.data.head_pic); if (ee.data.head_pic) { tt(func); return false; } //---获取分享图片的本地地址,头像和商品图片---- var path2 = getApp().globalData.userInfo.head_pic; if (path2 == "") { ee.data.head_pic = "../../../images/share/hui_hear_pic.png"; tt(func); } else { path2 = path2.replace("http://thirdwx.qlogo.cn", "https://wx.qlogo.cn"); wx.getImageInfo({ src: path2, success: function (res) { //res.path是网络图片的本地地址 ee.data.head_pic= res.path; tt(func);; }, fail: function (res) { ee.data.head_pic= "../../../images/share/hui_hear_pic.png"; //分享的图片不能用网络的 tt(func); } }); } }, //--获取商品图片的本地缓存,回调写法-- get_goods_temp: function (tt) { var ee = this; if (ee.data.head_pic) { tt(); return false; } //获取商品是分享图信息 wx.getImageInfo({ src: ee.data.head_pic, success: function (res) { //res.path是网络图片的本地地址 ee.data.head_pic = res.path; tt(); }, fail: function (res) { ee.data.head_pic = "../../../images/share/default_g_img.gif"; //分享的图片不能用网络的 tt(); } }); }, /** * 生命周期函数--监听页面显示 */ onShow: function () { //同步初始化 this.init(); var goods_list = this.selectComponent("#goods_list"); //组件的id goods_list.init(); goods_list.get_list(); }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { var goods_list = this.selectComponent("#goods_list"); //组件的id goods_list.get_list(); }, //--转到用户余额-- to_user_money:function(){ this.setData({yu_e_show:1}) }, close_yu_e:function(){ this.setData({yu_e_show:0}) }, go_yu_e:function(){ var th=this,free=th.data.free; if(!th.data.free.VIPRebate){ getApp().my_warnning("您目前没有可提现的金额",0,th); return false; } wx.showModal({ title: '提示', content: '您确定要转入余额吗?', success(res) { if (res.confirm) { getApp().request.post("/api/weshop/plus/withdrawal/referee/money",{ data:{storeId:os.stoid,userId:getApp().globalData.user_id}, success:function(res){ if(res.data.code==0){ getApp().my_warnning("转入成功",0,th); free.VIPRebate=0; th.setData({free:free}); }else{ getApp().my_warnning(res.data.msg ,0,th); } } }) } } }) }, //-----立即续费的功能------ xufei:async function(){ var th = this,is_card = 0,end_time=0; await getApp().request.promiseGet("/store/storemoduleendtime/page?store_id="+os.stoid+"&type=3", {1:1}).then(res => { if (res.data.code == 0) { end_time=res.data.data.pageData[0].end_time; } }) var now=ut.gettimestamp(); if(end_time { if (res.data.code == 0) is_card = 1; else errmsg=res.data.msg; }) if (is_card == 0){ getApp().my_warnning(errmsg?errmsg:"请联系商家升级plus功能", 0, th); return false; } var item = th.data.user_card; var req = {}; req.cardId = item.CardId; req.rechargeType = 4; //如果不是你导购,也不是等级会员分享 req.storeId = os.stoid; req.userId = getApp().globalData.user_id; t_pay.pay(req, th.success, function () { getApp().my_warnning("支付失败", 0, th); }); }, //--支付成功,跳转到等级卡续费页面-- success:function (ind) { if(ind==1){ getApp().my_warnning("升级成功",0,this); }else{ getApp().my_warnning("支付成功",0,this); } this.init(); }, //------计算俩种卡的------ change_card:async function (e) { var th = this,card_id =e.currentTarget.dataset.cid ,end_time=0; await getApp().request.promiseGet("/store/storemoduleendtime/page?store_id="+os.stoid+"&type=3", {1:1}).then(res => { if (res.data.code == 0) { end_time=res.data.data.pageData[0].end_time; } }) var now=ut.gettimestamp(); if(end_time { if (res.data.code == 0) { my_con.open("\n 温馨提示,高于当前等级,是否立即升级!\n\n 升级价格:¥"+ res.data.data.payMoney.toFixed(2)+" \n 有效时间:"+time+"\n\n", "是", "否", th.sure_pay, null) } }) } }, sure_pay:function () { var th=this; var req = {}; req.cardId = th.data.s_card_id; req.rechargeType = 5; //如果不是你导购,也不是等级会员分享 req.storeId = os.stoid; req.oldCardId=th.data.user_card.CardId; req.userId = getApp().globalData.user_id; t_pay.pay(req, th.success, function () { getApp().my_warnning("支付失败", 0, th); }); }, //显示弹出框 show_change:function () { this.setData({is_show_change_pop:1}); } })