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.
 
 
 
 
 
 

225 lines
5.7 KiB

<template>
<view>
<cu-custom bgColor="bg-main-bar" :isBack="true">
<template #backText></template>
<template #content>{{title}}</template>
</cu-custom>
<view class="mt-20 im-flex im-align-items-center">
<image :src="canvasUrl" mode="widthFix" style="margin:0 auto"></image>
</view>
<view class="padding flex flex-direction mt-10" v-if="canvasUrl" style="position: relative;">
<button class="cu-btn bg-green lg" @tap="saveHeadImgFile">
<!-- #ifdef H5 -->
下载图片
<!-- #endif -->
<!-- #ifndef H5 -->
保存到相册
<!-- #endif -->
</button>
<!-- #ifdef H5 -->
<image :src="contact.avatar" mode="widthFix" style="width: 120rpx;position: absolute;top: -850rpx;left: 320rpx;" />
<!-- #endif -->
</view>
<mosowe-canvas-image ref="mosoweCanvasComponents" :lists="lists" :height="height" :width="width" @canvasImage="canvasImage" ></mosowe-canvas-image>
</view>
</template>
<script>
import mosoweCanvasImage from '@/components/mosowe-canvas-image/mosowe-canvas-image.vue';
import pinia from '@/store/index'
import { useloginStore } from '@/store/login';
const userStore = useloginStore(pinia);
export default {
data() {
return {
canvasUrl: '',
group_id:0,
lists:[],
width:500,
height:700,
title:'我的二维码',
contact:{}
}
},
components:{
mosoweCanvasImage
},
onLoad(options) {
this.group_id = options.group_id?options.group_id:''
// 如果有团队ID就生成群聊二维码,没有就生成个人二维码
if(this.group_id){
this.title="群二维码";
this.getGroupInfo()
}else{
this.createUserQr();
}
},
methods: {
createUserQr(){
let userInfo=userStore.userInfo;
let qrUrl=userInfo.qrUrl ?? '';
if(!qrUrl){
uni.showToast({
title:'请重新登陆后再生成二维码',
icon:'none'
})
uni.navigateBack();
return;
}
this.lists=[
{
type: 'rect',
color: '#ffffff',
width: this.width,
height: this.height,
x: 0,
y: 0
},
{
type: 'image',
content: userInfo.avatar,
width: 100,
height: 100,
x: 70,
y: 60
},
{
type: 'text',
content: userInfo.displayName,
x: 190,
y: 96,
maxWidth:400,
color: '#000',
size: 28,
},
{
type: 'text',
content: userInfo.account,
x: 190,
y: 135,
maxWidth:400,
color: '#999',
size: 20,
},
{
type: 'qr',
content: qrUrl,
width: 360,
height: 360,
x: 70,
y: 200,
},
{
type: 'text',
content: '扫一扫上面的二维码图案,加我为好友',
x: 105,
y: 620,
color: '#999',
maxWidth:400,
size: 18,
},
];
setTimeout(()=>{
this.$refs.mosoweCanvasComponents.createCanvas();
},100)
},
getGroupInfo() {
this.userList = []
this.$api.msgApi.groupInfo({
group_id: this.group_id
}).then((res) => {
let data=res.data;
this.contact=data;
let groupName=data.name;
let length=groupName.length;
console.log(this.contact);
if(length>12){
groupName=groupName.substring(0,12)+"...";
}
this.lists=[
{
type: 'rect',
color: '#ffffff',
width: this.width,
height: this.height,
x: 0,
y: 0
},
{
type: 'image',
content: data.avatar,
// content: "http://192.168.66.16:8007/avatar/吕布/120/20",
width: 100,
height: 100,
x: 200,
y: 40
},
{
type: 'text',
content: '群聊:'+groupName,
x: this.width/2,
align:'center',
y: 180,
maxWidth:400,
color: '#000',
size: 24,
},
{
type: 'qr',
content: data.qrUrl,
width: 360,
height: 360,
x: 70,
y: 220,
},
{
type: 'text',
content: '该二维码7天内('+data.qrExpire+'前)有效',
x: 105,
y: 640,
color: '#999',
maxWidth:400,
size: 18,
},
];
setTimeout(()=>{
this.$refs.mosoweCanvasComponents.createCanvas();
},100)
})
},
canvasImage (e) {
this.canvasUrl = e;
},
// 将base64 图片保存到本地系统相册
saveHeadImgFile() {
// #ifdef H5
const tempLink = document.createElement("a");
tempLink.style.display = "none";
tempLink.href = this.canvasUrl;
tempLink.setAttribute("download", this.contact.name+".jpg");
tempLink.setAttribute("target", "_blank");
document.body.appendChild(tempLink);
tempLink.click();
document.body.removeChild(tempLink);
// #endif
// #ifndef H5
uni.saveImageToPhotosAlbum({
filePath: this.canvasUrl,
success: () => {
uni.showToast({title:'图片保存成功',icon:'none'})
}
})
// #endif
}
}
}
</script>
<style scoped>
.list-image {
width: 80rpx;
height: 80rpx;
font-size: 0;
}
</style>