251 lines
5.3 KiB
Vue
251 lines
5.3 KiB
Vue
<template>
|
||
<view class="code" :style="'background-image: url(' + require('@/static/code/back.png') + ')'">
|
||
<image class="code-back code-logo" src="@/static/code/logo.png" mode="widthFix"></image>
|
||
<image class="code-back code-heder" src="@/static/code/header.png" mode="widthFix"></image>
|
||
<view class="block">
|
||
<view class="qrcode" :style="'background-image: url(' + require('@/static/code/code.png') + ')'">
|
||
<view class="qrcode-column">
|
||
<l-painter class="qrcode-src">
|
||
<l-painter-qrcode
|
||
:text="'https://app.douhuofalv.com?invite_code=' + invite"
|
||
css="width: 250rpx; height: 250rpx;"
|
||
/>
|
||
</l-painter>
|
||
<view class="qrcode-text" @click="copyInvite">邀请码{{invite}}</view>
|
||
</view>
|
||
</view>
|
||
<image class="btn" src="@/static/code/btn.png" mode="widthFix" @click="onWx"></image>
|
||
</view>
|
||
<!-- 绘制二维码 -->
|
||
<l-painter ref="painter" class="code-canvas" />
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
code
|
||
} from '@/apis/interfaces/user.js'
|
||
export default {
|
||
data() {
|
||
return {
|
||
invite : '',
|
||
codeLay: false,
|
||
codeImg: ''
|
||
};
|
||
},
|
||
created() {
|
||
code().then(res => {
|
||
let {
|
||
invite
|
||
} = res;
|
||
this.invite = invite
|
||
}).catch(err => {
|
||
uni.showToast({
|
||
title: err.message,
|
||
icon: 'none'
|
||
})
|
||
})
|
||
},
|
||
methods: {
|
||
copyInvite() {
|
||
uni.setClipboardData({
|
||
data: this.invite,
|
||
success() {
|
||
uni.showToast({
|
||
title: '邀请码已复制',
|
||
icon: 'none'
|
||
})
|
||
}
|
||
})
|
||
},
|
||
onWx() {
|
||
uni.showLoading({
|
||
title: '保存二维码...',
|
||
mask : true
|
||
})
|
||
if(this.codeImg != ''){
|
||
this.onDowCode()
|
||
return
|
||
}
|
||
this.$refs.painter.render({
|
||
css: {
|
||
width: "600rpx",
|
||
height: "1300rpx",
|
||
background: "#1F25AE",
|
||
position: "relative"
|
||
},
|
||
views: [
|
||
{
|
||
type: "image",
|
||
src: require('@/static/code/back.png'),
|
||
css: {
|
||
width: "600rpx",
|
||
height: "1300rpx",
|
||
}
|
||
},{
|
||
type: "image",
|
||
src: require('@/static/code/logo.png'),
|
||
css: {
|
||
width: "200rpx",
|
||
height: "55rpx",
|
||
position: "absolute",
|
||
top: "80rpx",
|
||
left: "50rpx",
|
||
zIndex: 1
|
||
}
|
||
},{
|
||
type: "image",
|
||
src: require('@/static/code/header.png'),
|
||
css: {
|
||
width: "400rpx",
|
||
height: "160rpx",
|
||
position: "absolute",
|
||
top: "200rpx",
|
||
left: "100rpx",
|
||
zIndex: 1
|
||
}
|
||
},{
|
||
type: "image",
|
||
src: require('@/static/code/code.png'),
|
||
css: {
|
||
width: "360rpx",
|
||
height: "325rpx",
|
||
position: "absolute",
|
||
top: "440rpx",
|
||
left: "120rpx",
|
||
zIndex: 1
|
||
}
|
||
}, {
|
||
type: "view",
|
||
css: {
|
||
height: '325rpx',
|
||
width: '360rpx',
|
||
position: "absolute",
|
||
top: "440rpx",
|
||
left: "120rpx",
|
||
},
|
||
views: [
|
||
{
|
||
text: "https://app.douhuofalv.com?invite_code=" + this.invite,
|
||
type: "qrcode",
|
||
css: {
|
||
width: "220rpx",
|
||
height: "220rpx",
|
||
background: "#FFF",
|
||
marginLeft: "70rpx",
|
||
marginTop: "40rpx"
|
||
},
|
||
},{
|
||
type: "text",
|
||
text: "邀请码" + this.invite,
|
||
css: {
|
||
width: "300rpx",
|
||
marginLeft: "30rpx",
|
||
marginTop: "10rpx",
|
||
lineClamp: "1",
|
||
lineHeight: "40rpx",
|
||
textAlign: "center",
|
||
color: "gray",
|
||
fontSize: "28rpx"
|
||
},
|
||
}
|
||
]
|
||
}
|
||
]
|
||
});
|
||
this.$refs.painter.canvasToTempFilePathSync({
|
||
fileType: "jpg",
|
||
quality: 1,
|
||
success: (res) => {
|
||
this.codeLay = true;
|
||
this.codeImg = res.tempFilePath
|
||
this.onDowCode()
|
||
}
|
||
});
|
||
},
|
||
onDowCode(){
|
||
uni.saveImageToPhotosAlbum({
|
||
filePath: this.codeImg,
|
||
success: ()=> {
|
||
uni.showToast({
|
||
title: '二维码已保存到您的相册',
|
||
icon : 'none'
|
||
})
|
||
},
|
||
fail: err => {
|
||
uni.showToast({
|
||
title: '保存失败,请检查您的App[访问您的系统相册]系统权限',
|
||
icon : 'none'
|
||
})
|
||
}
|
||
});
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss">
|
||
.code-canvas{
|
||
position: absolute;
|
||
left: -100%;
|
||
top: -100%;
|
||
}
|
||
// 二维码
|
||
.code {
|
||
background: #1F25AE;
|
||
position: relative;
|
||
height: 100vh;
|
||
background-position: center bottom;
|
||
background-size: cover;
|
||
padding: 50rpx;
|
||
box-sizing: border-box;
|
||
.code-back{
|
||
&.code-logo{
|
||
width: 240rpx;
|
||
}
|
||
&.code-heder{
|
||
width: 90%;
|
||
margin: 40rpx 5%;
|
||
}
|
||
}
|
||
.block{
|
||
text-align: center;
|
||
.qrcode{
|
||
display: inline-block;
|
||
width: 70%;
|
||
padding-top: 63%;
|
||
position: relative;
|
||
background-size: cover;
|
||
margin-bottom: 30rpx;
|
||
.qrcode-column{
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: center;
|
||
align-items: center;
|
||
.qrcode-src{
|
||
width: 250rpx;
|
||
height: 250rpx;
|
||
margin-top: 20rpx;
|
||
}
|
||
.qrcode-text{
|
||
margin-top: 20rpx;
|
||
line-height: 40rpx;
|
||
font-size: 28rpx;
|
||
width: 100%;
|
||
text-align: center;
|
||
color: gray;
|
||
}
|
||
}
|
||
}
|
||
.btn{
|
||
width: 70%;
|
||
}
|
||
}
|
||
}
|
||
</style>
|