Commit 287ec49aa53c0a86473f0f5f22760cff41e0c2f6

Authored by taiyuan
1 parent e18e6275

普通海报分享改版

Showing 1 changed file with 206 additions and 90 deletions
pages/goods/goodsInfo/goodsInfo.js
@@ -4179,6 +4179,92 @@ Page({ @@ -4179,6 +4179,92 @@ Page({
4179 } 4179 }
4180 }) 4180 })
4181 }, 4181 },
  4182 +
  4183 +
  4184 + drawPoster(context, unit, img, vpath) {
  4185 + // 1.灰色背景
  4186 + context.setFillStyle('#f2f1f6');
  4187 + context.rect(0,0,554*unit,899*unit);
  4188 + context.fill();
  4189 + // 2.商城名称
  4190 + let shopName = this.data.sto_sele_name_1;
  4191 + // let shopNameLen = context.measureText(shopName);
  4192 + // let x_shopNameLen = (554 - shopNameLen.width)/2*unit;
  4193 + // console.log('11111111111111',shopNameLen,x_shopNameLen);
  4194 + context.setTextAlign('center');
  4195 + context.setFontSize(26*unit);
  4196 + context.setFillStyle('black');
  4197 + context.fillText(shopName, 277*unit, 60*unit);
  4198 + // // 3.推荐来源
  4199 + let fromText = `来自${getApp().globalData.userInfo.nickname}的推荐`;
  4200 + // let fromTextLen = context.measureText(fromText);
  4201 + // let x_fromText = (375 - fromTextLen.width)/2;
  4202 + // console.log('222222',fromTextLen,x_fromText);
  4203 + context.setTextAlign('center');
  4204 + context.setFontSize(22*unit);
  4205 + context.setFillStyle('#96959a');
  4206 + context.fillText(fromText, 277*unit, 105*unit);
  4207 + // 4.海报背景
  4208 + // context.beginPath();
  4209 + // context.setStrokeStyle('#f2f1f6');
  4210 + context.setFillStyle('white');
  4211 + context.fillRect(37*unit, 157*unit, 480*unit, 673*unit);
  4212 + // context.stroke();
  4213 + // context.fill();
  4214 + // 5.商品图片
  4215 + // 图片的x坐标
  4216 + let bg_x = 37*unit
  4217 + // 图片的y坐标
  4218 + let bg_y = 157*unit
  4219 + // 图片宽度
  4220 + let bg_w = 480*unit
  4221 + // 图片高度
  4222 + let bg_h = 474*unit
  4223 + // 图片圆角
  4224 + let bg_r = 4
  4225 + // 绘制海报背景图片圆角
  4226 + context.save()
  4227 + context.beginPath()
  4228 + context.arc(bg_x + bg_r, bg_y + bg_r, bg_r, Math.PI, Math.PI*1.5)
  4229 + context.arc(bg_x + bg_w - bg_r, bg_y + bg_r, bg_r, Math.PI * 1.5, Math.PI * 2)
  4230 + context.arc(bg_x + bg_w, bg_y + bg_h, bg_r, 0, Math.PI * 0.5)
  4231 + context.arc(bg_x, bg_y + bg_h, 0, Math.PI * 0.5, Math.PI)
  4232 + context.clip()
  4233 + context.drawImage(img, bg_x, bg_y, bg_w, bg_h);
  4234 + context.restore()
  4235 + // 6.强烈推荐
  4236 + // context.beginPath();
  4237 + let tj_path = "../../../images/share/q_tj.png";
  4238 + context.beginPath()
  4239 + context.drawImage(tj_path, 54*unit, 648*unit, 85*unit, 30*unit);
  4240 + context.setFontSize(16*unit)
  4241 + context.setLineJoin('round'); //交点设置成圆角
  4242 + context.setFillStyle("white")
  4243 + context.setTextAlign('left');
  4244 + context.fillText('强烈推荐', 64*unit, 672*unit);
  4245 + // 7.商品价格
  4246 + context.setFontSize(32*unit);
  4247 + context.setFillStyle('#DE1117');
  4248 + context.fillText('¥59.00', 54*unit, 730*unit);
  4249 + // 8.商品标题
  4250 + context.setFontSize(20*unit);
  4251 + context.setFillStyle('#898989');
  4252 + this.draw_Text(context, this.data.data.goods_name,
  4253 + 54*unit, 770*unit, 240*unit, 240*unit, unit);
  4254 + // 9.小程序码
  4255 + context.drawImage(vpath, 375*unit, 660*unit, 120*unit, 120*unit);
  4256 + context.setFontSize(16*unit);
  4257 + context.setFillStyle('#777');
  4258 + context.fillText('长按识别二维码', 378*unit, 810*unit);
  4259 + // 10.竖线
  4260 + context.beginPath();
  4261 + context.setFillStyle('#eee');
  4262 + context.rect(354*unit, 670*unit, 1*unit, 130*unit);
  4263 + context.fill();
  4264 +
  4265 + },
  4266 +
  4267 +
4182 4268
4183 //--定义的保存图片方法,分享团--- 4269 //--定义的保存图片方法,分享团---
4184 saveImageToPhotosAlbum: function () { 4270 saveImageToPhotosAlbum: function () {
@@ -4229,67 +4315,90 @@ Page({ @@ -4229,67 +4315,90 @@ Page({
4229 os.stoid + "?sceneValue=" + scene + "&pageValue=pages/goods/goodsInfo/goodsInfo"; 4315 os.stoid + "?sceneValue=" + scene + "&pageValue=pages/goods/goodsInfo/goodsInfo";
4230 4316
4231 console.log(path3); 4317 console.log(path3);
  4318 +
4232 4319
4233 - //读取文件成功则OK-- 4320 + // 读取文件成功则OK--
4234 wx.getImageInfo({ 4321 wx.getImageInfo({
4235 src: path3, 4322 src: path3,
4236 success: function (res) { 4323 success: function (res) {
4237 - //回调写法 4324 + // 回调写法
4238 th.get_head_temp(th.get_goods_temp, function () { 4325 th.get_head_temp(th.get_goods_temp, function () {
4239 var vpath = res.path; 4326 var vpath = res.path;
4240 var context = wx.createCanvasContext('share'); 4327 var context = wx.createCanvasContext('share');
4241 - //先画背景 4328 + // 先画背景
4242 var pg_path = "../../../images/share/share_bg.png"; 4329 var pg_path = "../../../images/share/share_bg.png";
4243 4330
4244 // context.fillStyle="#FFFFFF"; 4331 // context.fillStyle="#FFFFFF";
4245 // context.fillRect(0,0,554 * unit, 899 * unit); 4332 // context.fillRect(0,0,554 * unit, 899 * unit);
  4333 +
  4334 + // if(type == 0) {
  4335 + // this.drawPoster(context);
  4336 + // return false;
  4337 + // };
  4338 +
4246 4339
4247 //-- 如果有自定义海报的时候,判断背景的图片 -- 4340 //-- 如果有自定义海报的时候,判断背景的图片 --
4248 if (th.data.share_b_img) { 4341 if (th.data.share_b_img) {
4249 pg_path = th.data.share_b_img; 4342 pg_path = th.data.share_b_img;
4250 } 4343 }
4251 - context.drawImage(pg_path, 0, 0, 554 * unit, 899 * unit); 4344 + // context.drawImage(pg_path, 0, 0, 554 * unit, 899 * unit);
  4345 +
  4346 +
  4347 + if(type == 0) { // 如果是普通商品,绘制新海报
  4348 + th.drawPoster(context, unit, th.data.share_goods_img, vpath);
  4349 + } else {
  4350 + context.drawImage(pg_path, 0, 0, 554 * unit, 899 * unit);
  4351 + };
  4352 +
  4353 + // th.drawPoster(context, unit, th.data.share_goods_img, vpath);
  4354 +
4252 4355
4253 //-- 是自定义海报的情况下 -- 4356 //-- 是自定义海报的情况下 --
4254 - if (th.data.poster && parseInt(th.data.poster.style) == 2) {  
4255 - //在线上分享人的情况下  
4256 - if (parseInt(th.data.poster.show_headpic)) {  
4257 - //获取坐标  
4258 - var x = parseFloat(th.data.poster.head_x) * 2;  
4259 - var y = parseFloat(th.data.poster.head_y) * 2;  
4260 - var x1 = (x + 90) * unit;  
4261 - var y1 = (y + 50) * unit;  
4262 - //--昵称---  
4263 - context.setFontSize(24 * unit)  
4264 - context.setFillStyle("black")  
4265 - context.fillText(app.globalData.userInfo.nickname, x1, y1);  
4266 - var width = 24 * app.globalData.userInfo.nickname.length * unit + 4 * unit;  
4267 - //强烈推荐 改许程  
4268 - var tj_path = "../../../images/share/q_tj.png";  
4269 - context.drawImage(tj_path, x1 + width, y1 - 22 * unit, 85 * unit, 30 * unit);  
4270 - context.setFontSize(16 * unit)  
4271 - context.setLineJoin('round'); //交点设置成圆角  
4272 - context.setFillStyle("white")  
4273 - context.fillText('强烈推荐', x1 + width + 8 * unit, y1 - 1 * unit);  
4274 -  
4275 - //context.setFillStyle("black")  
4276 - //context.setFontSize(24 * unit)  
4277 - //context.fillText(getApp().globalData.config.store_name, 40 * unit, 130 * unit);  
4278 - }  
4279 - } else {  
4280 - //--昵称---  
4281 - context.setFontSize(24 * unit)  
4282 - context.setFillStyle("black")  
4283 - context.fillText(app.globalData.userInfo.nickname, 152 * unit, 76 * unit);  
4284 - var width = 24 * app.globalData.userInfo.nickname.length * unit + 2 * unit;  
4285 - //强烈推荐 改许程  
4286 - var tj_path = "../../../images/share/q_tj.png";  
4287 - context.drawImage(tj_path, 152 * unit + width, 54 * unit, 85 * unit, 30 * unit);  
4288 - context.setFontSize(16 * unit);  
4289 - context.setLineJoin('round'); //交点设置成圆角  
4290 - context.setFillStyle("white");  
4291 - context.fillText('强烈推荐', 149 * unit + width + 15 * unit, 75 * unit);  
4292 - } 4357 + if(type != 0) {
  4358 +
  4359 + if (th.data.poster && parseInt(th.data.poster.style) == 2) {
  4360 + //在线上分享人的情况下
  4361 + if (parseInt(th.data.poster.show_headpic)) {
  4362 + //获取坐标
  4363 + var x = parseFloat(th.data.poster.head_x) * 2;
  4364 + var y = parseFloat(th.data.poster.head_y) * 2;
  4365 + var x1 = (x + 90) * unit;
  4366 + var y1 = (y + 50) * unit;
  4367 + //--昵称---
  4368 + context.setFontSize(24 * unit)
  4369 + context.setFillStyle("black")
  4370 + context.fillText(app.globalData.userInfo.nickname, x1, y1);
  4371 + var width = 24 * app.globalData.userInfo.nickname.length * unit + 4 * unit;
  4372 + //强烈推荐 改许程
  4373 + var tj_path = "../../../images/share/q_tj.png";
  4374 + context.drawImage(tj_path, x1 + width, y1 - 22 * unit, 85 * unit, 30 * unit);
  4375 + context.setFontSize(16 * unit);
  4376 + context.setLineJoin('round'); //交点设置成圆角
  4377 + context.setFillStyle("white");
  4378 + context.fillText('强烈推荐', x1 + width + 8 * unit, y1 - 1 * unit);
  4379 +
  4380 + //context.setFillStyle("black")
  4381 + //context.setFontSize(24 * unit)
  4382 + //context.fillText(getApp().globalData.config.store_name, 40 * unit, 130 * unit);
  4383 + }
  4384 + } else {
  4385 + //--昵称---
  4386 + context.setFontSize(24 * unit);
  4387 + context.setFillStyle("black");
  4388 + context.fillText(app.globalData.userInfo.nickname, 152 * unit, 76 * unit);
  4389 + var width = 24 * app.globalData.userInfo.nickname.length * unit + 2 * unit;
  4390 + //强烈推荐 改许程
  4391 + var tj_path = "../../../images/share/q_tj.png";
  4392 + context.drawImage(tj_path, 152 * unit + width, 54 * unit, 85 * unit, 30 * unit);
  4393 + context.setFontSize(16 * unit);
  4394 + context.setLineJoin('round'); //交点设置成圆角
  4395 + context.setFillStyle("white");
  4396 + context.fillText('强烈推荐', 149 * unit + width + 15 * unit, 75 * unit);
  4397 + }
  4398 +
  4399 + };
  4400 +
  4401 +
4293 4402
4294 var share_title = th.data.data.goods_name; 4403 var share_title = th.data.data.goods_name;
4295 if (th.data.prom_type == 1 || th.data.prom_type == 6 || th.data.prom_type == 4) { 4404 if (th.data.prom_type == 1 || th.data.prom_type == 6 || th.data.prom_type == 4) {
@@ -4300,7 +4409,7 @@ Page({ @@ -4300,7 +4409,7 @@ Page({
4300 4409
4301 //---产品名称--- 4410 //---产品名称---
4302 //文本换行 参数:1、canvas对象,2、文本 3、距离左侧的距离 4、距离顶部的距离 5、6、文本的宽度 4411 //文本换行 参数:1、canvas对象,2、文本 3、距离左侧的距离 4、距离顶部的距离 5、6、文本的宽度
4303 - if (type != 4) { 4412 + if (type != 4 && type != 0) {
4304 context.setFillStyle("black"); 4413 context.setFillStyle("black");
4305 context.setFontSize(21.3 * unit) 4414 context.setFontSize(21.3 * unit)
4306 th.draw_Text(context, share_title, 4415 th.draw_Text(context, share_title,
@@ -4333,7 +4442,7 @@ Page({ @@ -4333,7 +4442,7 @@ Page({
4333 context.lineTo(wd2 + ut.measureText(pri0, 22 * unit) + 5, 206 * unit); 4442 context.lineTo(wd2 + ut.measureText(pri0, 22 * unit) + 5, 206 * unit);
4334 context.stroke(); 4443 context.stroke();
4335 4444
4336 - } else { 4445 + } else if(type == 4 && type != 0) {
4337 context.setFillStyle("black"); 4446 context.setFillStyle("black");
4338 context.setFontSize(21.3 * unit) 4447 context.setFontSize(21.3 * unit)
4339 th.draw_Text(context, share_title, 4448 th.draw_Text(context, share_title,
@@ -4353,10 +4462,15 @@ Page({ @@ -4353,10 +4462,15 @@ Page({
4353 } 4462 }
4354 4463
4355 //---中间大图--- 4464 //---中间大图---
4356 - context.drawImage(th.data.share_goods_img, 70 * unit, 250 * unit, 408 * unit, 408 * unit); 4465 + if(type != 0) {
  4466 + context.drawImage(th.data.share_goods_img, 70 * unit, 250 * unit, 408 * unit, 408 * unit);
  4467 + };
  4468 +
  4469 +
  4470 +
4357 //-------大图后面就不一样了----------- 4471 //-------大图后面就不一样了-----------
4358 switch (type) { 4472 switch (type) {
4359 - case 0: //普通商品的展示 4473 + case 0: break;//普通商品的展示
4360 case 4: 4474 case 4:
4361 //中间的几个字 4475 //中间的几个字
4362 if (th.data.poster && parseInt(th.data.poster.style) == 2) { 4476 if (th.data.poster && parseInt(th.data.poster.style) == 2) {
@@ -4423,7 +4537,6 @@ Page({ @@ -4423,7 +4537,6 @@ Page({
4423 context.fillText("长按识别二维码", 40 * unit, 806 * unit); 4537 context.fillText("长按识别二维码", 40 * unit, 806 * unit);
4424 context.fillText("立即开始兑换", 40 * unit, 846 * unit); 4538 context.fillText("立即开始兑换", 40 * unit, 846 * unit);
4425 4539
4426 -  
4427 } 4540 }
4428 4541
4429 //---二维吗图--- 4542 //---二维吗图---
@@ -4435,7 +4548,7 @@ Page({ @@ -4435,7 +4548,7 @@ Page({
4435 } else { 4548 } else {
4436 //---二维吗图--- 4549 //---二维吗图---
4437 context.drawImage(vpath, 390 * unit, 726 * unit, 136 * unit, 136 * unit); 4550 context.drawImage(vpath, 390 * unit, 726 * unit, 136 * unit, 136 * unit);
4438 - } 4551 + };
4439 4552
4440 break; 4553 break;
4441 case 1: //秒杀商品的展示 4554 case 1: //秒杀商品的展示
@@ -4478,7 +4591,6 @@ Page({ @@ -4478,7 +4591,6 @@ Page({
4478 context.lineTo(520 * unit, 670 * unit) 4591 context.lineTo(520 * unit, 670 * unit)
4479 context.stroke(); 4592 context.stroke();
4480 //---文字--- 4593 //---文字---
4481 -  
4482 context.setFillStyle("black") 4594 context.setFillStyle("black")
4483 context.setFontSize(24 * unit) 4595 context.setFontSize(24 * unit)
4484 context.fillText(th.data.sto_sele_name_1, 40 * unit, 720 * unit); 4596 context.fillText(th.data.sto_sele_name_1, 40 * unit, 720 * unit);
@@ -4524,7 +4636,6 @@ Page({ @@ -4524,7 +4636,6 @@ Page({
4524 context.lineTo(520 * unit, 670 * unit) 4636 context.lineTo(520 * unit, 670 * unit)
4525 context.stroke(); 4637 context.stroke();
4526 //---文字--- 4638 //---文字---
4527 -  
4528 context.setFillStyle("black") 4639 context.setFillStyle("black")
4529 context.setFontSize(24 * unit) 4640 context.setFontSize(24 * unit)
4530 context.fillText(th.data.sto_sele_name_1, 40 * unit, 720 * unit); 4641 context.fillText(th.data.sto_sele_name_1, 40 * unit, 720 * unit);
@@ -4575,45 +4686,50 @@ Page({ @@ -4575,45 +4686,50 @@ Page({
4575 4686
4576 4687
4577 //--- 如果是自定义海报的时候 --- 4688 //--- 如果是自定义海报的时候 ---
4578 - if (th.data.poster && parseInt(th.data.poster.style) == 2) {  
4579 -  
4580 - //如果显示会员信息的话  
4581 - if (parseInt(th.data.poster.show_headpic)) {  
4582 - //获取坐标  
4583 - var x = parseFloat(th.data.poster.head_x) * 2;  
4584 - var y = parseFloat(th.data.poster.head_y) * 2;  
4585 - //---绘制圆形要放在最后----  
4586 - context.save();  
4587 - context.beginPath();  
4588 - var h_x = x * unit;  
4589 - var h_y = y * unit;  
4590 - var h_r = 40 * unit;  
4591 - var cx = h_x + h_r;  
4592 - var cy = h_y + h_r;  
4593 - context.arc(cx, cy, h_r, 0, Math.PI * 2, false);  
4594 - context.closePath();  
4595 - context.fill();  
4596 - context.clip();  
4597 - context.drawImage(th.data.share_head, h_x, h_y, h_r * 2, h_r * 2);  
4598 - context.restore();  
4599 - }  
4600 -  
4601 - } else {  
4602 - //---绘制圆形要放在最后----  
4603 - context.save();  
4604 - context.beginPath();  
4605 - var h_x = 60 * unit;  
4606 - var h_y = 24 * unit;  
4607 - var h_r = 40 * unit;  
4608 - var cx = h_x + h_r;  
4609 - var cy = h_y + h_r;  
4610 - context.arc(cx, cy, h_r, 0, Math.PI * 2, false);  
4611 - context.closePath();  
4612 - context.fill();  
4613 - context.clip();  
4614 - context.drawImage(th.data.share_head, h_x, h_y, h_r * 2, h_r * 2);  
4615 - context.restore();  
4616 - } 4689 + if(type != 0) {
  4690 +
  4691 + if (th.data.poster && parseInt(th.data.poster.style) == 2) {
  4692 +
  4693 + //如果显示会员信息的话
  4694 + if (parseInt(th.data.poster.show_headpic)) {
  4695 + //获取坐标
  4696 + var x = parseFloat(th.data.poster.head_x) * 2;
  4697 + var y = parseFloat(th.data.poster.head_y) * 2;
  4698 + //---绘制圆形要放在最后----
  4699 + context.save();
  4700 + context.beginPath();
  4701 + var h_x = x * unit;
  4702 + var h_y = y * unit;
  4703 + var h_r = 40 * unit;
  4704 + var cx = h_x + h_r;
  4705 + var cy = h_y + h_r;
  4706 + context.arc(cx, cy, h_r, 0, Math.PI * 2, false);
  4707 + context.closePath();
  4708 + context.fill();
  4709 + context.clip();
  4710 + context.drawImage(th.data.share_head, h_x, h_y, h_r * 2, h_r * 2);
  4711 + context.restore();
  4712 + }
  4713 +
  4714 + } else {
  4715 + //---绘制圆形要放在最后----
  4716 + context.save();
  4717 + context.beginPath();
  4718 + var h_x = 60 * unit;
  4719 + var h_y = 24 * unit;
  4720 + var h_r = 40 * unit;
  4721 + var cx = h_x + h_r;
  4722 + var cy = h_y + h_r;
  4723 + context.arc(cx, cy, h_r, 0, Math.PI * 2, false);
  4724 + context.closePath();
  4725 + context.fill();
  4726 + context.clip();
  4727 + context.drawImage(th.data.share_head, h_x, h_y, h_r * 2, h_r * 2);
  4728 + context.restore();
  4729 + }
  4730 +
  4731 + };
  4732 +
4617 4733
4618 4734
4619 //把画板内容绘制成图片,并回调 画板图片路径 4735 //把画板内容绘制成图片,并回调 画板图片路径