Files
dou_fire/pages/user/salesmanCode.vue
2023-01-09 10:41:28 +08:00

251 lines
5.3 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>