martial-arts/pagesA/my-share/my-share.vue

204 lines
5.0 KiB
Vue
Raw Normal View History

2023-02-21 06:20:06 +00:00
<template>
<view>
2023-02-22 02:39:55 +00:00
<status-container titlet="我的分享" returnc="#FFFFFF">
</status-container>
2023-02-21 06:20:06 +00:00
<!-- 分享图 -->
2023-02-22 02:39:55 +00:00
<image :src="shareImg" mode="widthFix" lazy-load class="qrIamge"></image>
2023-03-16 09:10:21 +00:00
<view style="height: 100rpx;"></view>
2023-02-21 06:20:06 +00:00
<!-- 底部按钮 -->
<view class="bottom-btn">
<view @tap="downloadImgEv"></view>
</view>
</view>
</template>
<script>
import pitera from '@/components/nothing/pitera.vue';
import yzQr from '@/components/yz-qr/yz-qr.vue';
import {base64ToPath} from '@/jsFile/base64-src.js';
export default {
components:{
pitera,
yzQr
},
data() {
return {
shareImg:'',
2023-03-16 09:10:21 +00:00
hostapi:'',// 域名
2023-02-21 06:20:06 +00:00
}
},
onLoad() {
2023-03-16 09:10:21 +00:00
this.hostapi = getApp().globalData.hostapi;
2023-02-22 02:39:55 +00:00
this.qrCode();
2023-02-21 06:20:06 +00:00
},
2023-02-23 02:22:52 +00:00
onShareAppMessage(res) {
var shareObj = {
     title: ``, // 默认是小程序的名称(可以写slogan等)
     path: `/pages/tabbar/pagehome/pagehome?invite_code=${uni.getStorageSync('invite_code')}`, // 默认是当前页面,必须是以‘/’开头的完整路径
     imageUrl: ``//自定义图片路径可以是本地文件路径、代码包文件路径或者网络图片路径支持PNG及JPG不传入 imageUrl 则使用默认截图。显示图片长宽比是 5:4
  };
  return shareObj;
},
2023-02-21 06:20:06 +00:00
methods: {
2023-02-22 02:39:55 +00:00
// 生成二维码
qrCode() {
uni.showLoading({
title:'正在生成推广码',
icon:'loading',
2023-02-23 02:22:52 +00:00
duration:4000
2023-02-22 02:39:55 +00:00
})
// 生成推广码
this.$requst.get('/api/user/personal-poster').then(res=>{
if(res.code==0){
uni.hideLoading();
2023-03-16 09:10:21 +00:00
this.shareImg = this.hostapi + res.data.poster;
2023-02-22 02:39:55 +00:00
}
}).catch(err=>{
uni.hideLoading();
uni.showToast({
title:'生成失败',
icon:'none',
position:'bottom'
})
setTimeout(()=>{
uni.navigateBack({delta:1})
},1000)
})
},
//保存相册
2023-02-21 06:20:06 +00:00
downloadImgEv(){
2023-02-22 02:39:55 +00:00
uni.getSetting({//获取用户的当前设置
success:(res)=> {
if(res.authSetting['scope.writePhotosAlbum']){//验证用户是否授权可以访问相册
this.saveImageToPhotosAlbum();
}else{
uni.authorize({//如果没有授权,向用户发起请求
scope: 'scope.writePhotosAlbum',
success:()=> {
this.saveImageToPhotosAlbum();
},
fail:()=>{
uni.showModal({
content:'检测到您没打开保存图片的权限,是否去设置打开?',
confirmText: "确认",
cancelText:'取消',
success: (res) => {
if(res.confirm){
uni.openSetting({
success: (res) => {
console.log(res);
// this.getLocation();
}
})
}else{
console.log('取消');
return false;
}
}
})
setTimeout(()=>{
uni.openSetting({//调起客户端小程序设置界面,让用户开启访问相册
success:(res2)=> {
// console.log(res2.authSetting)
}
});
},3000);
}
})
}
}
})
},
2023-03-16 09:10:21 +00:00
// saveImageToPhotosAlbum(){
// let base64=this.shareImg.replace(/^data:image\/\w+;base64,/, "");//去掉data:image/png;base64,
// let filePath=wx.env.USER_DATA_PATH + '/hym_pay_qrcode.png';
// uni.getFileSystemManager().writeFile({
// filePath:filePath , //创建一个临时文件名
// data: base64, //写入的文本或二进制数据
// encoding: 'base64', //写入当前文件的字符编码
// success: res => {
// uni.saveImageToPhotosAlbum({
// filePath: filePath,
// success: function(res2) {
// uni.showToast({
// title:'保存成功',
// icon:'success',
// duration:2000
// })
// },
// fail: function(err) {
// uni.showToast({
// title:'保存失败',
// icon:'error',
// duration:2000
// })
// }
// })
// },
// fail: err => {
// //console.log(err)
// }
// })
// }
2023-02-22 02:39:55 +00:00
saveImageToPhotosAlbum(){
2023-03-16 09:10:21 +00:00
uni.downloadFile({
url: this.shareImg,
success: (res) => {
2023-02-21 06:20:06 +00:00
uni.saveImageToPhotosAlbum({
2023-03-16 09:10:21 +00:00
filePath: res.tempFilePath,
success: ()=> {
2023-02-22 02:39:55 +00:00
uni.showToast({
title:'保存成功',
icon:'success',
duration:2000
})
2023-02-21 06:20:06 +00:00
},
2023-03-16 09:10:21 +00:00
fail: () => {
2023-02-22 02:39:55 +00:00
uni.showToast({
title:'保存失败',
icon:'error',
duration:2000
})
2023-02-21 06:20:06 +00:00
}
2023-03-16 09:10:21 +00:00
});
2023-02-21 06:20:06 +00:00
}
})
}
2023-02-22 02:39:55 +00:00
2023-02-21 06:20:06 +00:00
}
}
</script>
<style>
image {
width: 100%;
}
.bottom-btn {
position: fixed;
bottom: 0;
left: 0;
right: 0;
2023-02-22 02:39:55 +00:00
padding:20rpx 20rpx;
2023-02-21 06:20:06 +00:00
display: flex;
justify-content: flex-end;
box-shadow: 0rpx -3rpx 20rpx rgba(0,0,0,.05);
}
.bottom-btn view {
background-color: #eb5d10;
color: #FFFFFF;
padding: 20rpx 40rpx;
border-radius: 80rpx;
font-size: 36rpx;
}
2023-02-22 02:39:55 +00:00
.qrIamge {
width: 90%;
display: block;
margin: -120rpx auto 0;
}
2023-02-21 06:20:06 +00:00
</style>