You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
7.7 KiB
226 lines
7.7 KiB
9 months ago
|
<template>
|
||
|
<BaseContainer class="receive-details">
|
||
|
<NavBar title="赠送礼物" />
|
||
|
<view class="present-topics">
|
||
|
<view class="info">
|
||
|
<view>
|
||
|
<image mode="aspectFit" :src="userInfo.avatar" />
|
||
|
</view>
|
||
|
<view>{{ userInfo.nickname }}发礼物啦</view>
|
||
|
<view class="images">
|
||
|
<image mode="aspectFill" :src="special.image" />
|
||
|
</view>
|
||
|
<view>{{ special.title }}</view>
|
||
|
</view>
|
||
|
<view class="btn">
|
||
|
<button class="sendBnt" type="button" @click="createPoster">发送给朋友</button>
|
||
|
<navigator :url="`/pages/special/gift_receive?orderId=${orderId}`" hover-class="none">查看领取详情</navigator>
|
||
|
</view>
|
||
|
<view class="share-guide shares-model">
|
||
|
<image mode="aspectFill" :src="getImgPath('/wap/first/zsff/images/share-info.png')">
|
||
|
</view>
|
||
|
</view>
|
||
|
<TkiQrcode loadMake v-if="isQrcodeCanvasVisable" ref="qrcode" :showLoading="false" :val="qrcodeText"
|
||
|
@result="handleQrcodeCreateSuccess" />
|
||
|
<canvas canvas-id="poster" v-if="isPosterCanvasVisable" class="poster-canvas" />
|
||
|
</BaseContainer>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import { getUserInfo } from "@/api/auth";
|
||
|
import { getGiftSpecial } from "@/api/special";
|
||
|
import posterMixin from "@/mixins/poster";
|
||
|
|
||
|
|
||
|
export default {
|
||
|
mixins: [posterMixin],
|
||
|
data() {
|
||
|
return {
|
||
|
userInfo: {
|
||
|
avatar: ''
|
||
|
},
|
||
|
special: {
|
||
|
image: '',
|
||
|
title: ''
|
||
|
},
|
||
|
orderId: '',
|
||
|
site_url: '',
|
||
|
poster_image: 'http://cremb-zsff.oss-cn-beijing.aliyuncs.com/20362202002201412303972.jpg',
|
||
|
url: '',
|
||
|
qrcodeText: "",
|
||
|
isQrcodeCanvasVisable: false,
|
||
|
isPosterCanvasVisable: false,
|
||
|
};
|
||
|
},
|
||
|
onLoad({ orderId, oid }) {
|
||
|
this.orderId = orderId
|
||
|
this.getUser()
|
||
|
this.getData()
|
||
|
},
|
||
|
methods: {
|
||
|
getUser() {
|
||
|
getUserInfo().then(({ data }) => {
|
||
|
this.userInfo = data;
|
||
|
});
|
||
|
},
|
||
|
getData() {
|
||
|
getGiftSpecial(this.orderId).then(({ data }) => {
|
||
|
this.special = data.special
|
||
|
this.site_url = data.site_url
|
||
|
this.poster_image = data.special.image
|
||
|
if(this.special.is_light == 1){
|
||
|
this.url = "pages/special/single_details"
|
||
|
}else{
|
||
|
this.url = "pages/special/details"
|
||
|
}
|
||
|
console.log(this.url)
|
||
|
}).catch(err => {
|
||
|
console.log(err);
|
||
|
})
|
||
|
},
|
||
|
handleQrcodeCreateSuccess(path) {
|
||
|
this.x_cb(path);
|
||
|
},
|
||
|
renderProductPoster(target,
|
||
|
id,
|
||
|
bgPath,
|
||
|
codePath,
|
||
|
WIDTH = 600,
|
||
|
HEIGHT = 723,
|
||
|
site_name = "知识付费") {
|
||
|
|
||
|
return new Promise((resolve, reject) => {
|
||
|
let context = uni.createCanvasContext(id, target);
|
||
|
context.fillStyle = '#FFFFFF';
|
||
|
context.fillRect(0, 0, WIDTH, HEIGHT);
|
||
|
context.save();
|
||
|
context.beginPath();
|
||
|
context.moveTo(40, 30);
|
||
|
context.arcTo(580, 30, 580, 338, 10);
|
||
|
context.arcTo(580, 338, 30, 338, 10);
|
||
|
context.arcTo(30, 338, 30, 30, 10);
|
||
|
context.arcTo(30, 30, 580, 30, 10);
|
||
|
context.closePath();
|
||
|
context.clip();
|
||
|
context.drawImage(bgPath, 30, 30, 550, 308);
|
||
|
context.restore();
|
||
|
context.font = '28px sans-serif';
|
||
|
context.fillStyle = '#282828';
|
||
|
console.log(11111111111);
|
||
|
context.lineWidth = 1;
|
||
|
var title = this.special.title;
|
||
|
var lineWidth = 0;
|
||
|
var substringIndex = 0;
|
||
|
var offsetTop = 396;
|
||
|
for (var i = 0; i < title.length; i++) {
|
||
|
lineWidth += context.measureText(title[i]).width;
|
||
|
if (lineWidth > 550) {
|
||
|
context.fillText(title.substring(substringIndex, i), 30, offsetTop);
|
||
|
offsetTop += 41;
|
||
|
lineWidth = 0;
|
||
|
substringIndex = i;
|
||
|
}
|
||
|
if (i == title.length - 1) {
|
||
|
context.fillText(title.substring(substringIndex, i + 1), 30, offsetTop);
|
||
|
}
|
||
|
}
|
||
|
console.log(1111);
|
||
|
context.fillStyle = '#F7F7F7';
|
||
|
context.fillRect(0, 480, WIDTH, HEIGHT - 480);
|
||
|
context.drawImage(codePath, 60, 500, 149, 149);
|
||
|
context.font = '22px sans-serif';
|
||
|
context.fillStyle = '#999999';
|
||
|
context.lineWidth = 1;
|
||
|
var nickname = this.userInfo.nickname;
|
||
|
var lineWidth2 = context.measureText('手慢无!发送礼物啦!').width;
|
||
|
var offsetTop2 = 557;
|
||
|
for (var i = 0; i < nickname.length; i++) {
|
||
|
lineWidth2 += context.measureText(nickname[i]).width;
|
||
|
if (lineWidth2 > 371) {
|
||
|
context.fillText('手慢无!' + nickname.substring(0, i) + '发送礼物啦!', 244, offsetTop2);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
console.log(11111111112);
|
||
|
if (lineWidth2 <= 371) {
|
||
|
context.fillText('手慢无!' + nickname + '发送礼物啦!', 244, offsetTop2);
|
||
|
}
|
||
|
offsetTop2 += 40;
|
||
|
context.fillText('扫码领礼物', 244, offsetTop2);
|
||
|
console.log(context);
|
||
|
context.draw(true, () => {
|
||
|
uni.canvasToTempFilePath(
|
||
|
{
|
||
|
canvasId: id,
|
||
|
fileType: "png",
|
||
|
destWidth: WIDTH,
|
||
|
destHeight: HEIGHT,
|
||
|
success: (res) => {
|
||
|
console.log(res);
|
||
|
resolve(res.tempFilePath);
|
||
|
context = null;
|
||
|
},
|
||
|
fail: (err) => {
|
||
|
console.log(err);
|
||
|
reject(err.errMsg);
|
||
|
context = null;
|
||
|
},
|
||
|
},
|
||
|
target
|
||
|
);
|
||
|
});
|
||
|
})
|
||
|
|
||
|
},
|
||
|
createPoster() {
|
||
|
this.createSharePoster("gift", {
|
||
|
id: this.special.id,
|
||
|
uid: this.userInfo.uid,
|
||
|
oid: this.special.goid,
|
||
|
orderId: this.orderId,
|
||
|
url:this.url
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
};
|
||
|
</script>
|
||
|
<style>
|
||
|
page {
|
||
|
|
||
|
background: url("https://demo.zhishi.tczxkj.com/wap/first/zsff/images/apply-lecturer1.jpg") center 99rpx/478rpx 76rpx no-repeat,
|
||
|
url("https://demo.zhishi.tczxkj.com/wap/first/zsff/images/apply-lecturer1.jpg") center/cover no-repeat;
|
||
|
}
|
||
|
</style>
|
||
|
<style scoped lang="scss">
|
||
|
.info {
|
||
|
margin-top: 260rpx;
|
||
|
}
|
||
|
.present-topics{
|
||
|
width: 90%;
|
||
|
margin: auto;
|
||
|
}
|
||
|
.share-guide {
|
||
|
position: fixed;
|
||
|
top: 0;
|
||
|
right: 0;
|
||
|
bottom: 0;
|
||
|
left: 0;
|
||
|
z-index: 20;
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
.share-guide img {
|
||
|
display: block;
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
}
|
||
|
|
||
|
.layui-layer-imgbar {
|
||
|
display: none !important;
|
||
|
}
|
||
|
|
||
|
.poster-canvas {
|
||
|
width: 600px;
|
||
|
height: 723px;
|
||
|
}
|
||
|
</style>
|