java-mall-app/components/share-box-app.vue
2024-11-01 16:35:40 +08:00

249 lines
7.3 KiB
Vue

<template name="share-box-app">
<block></block>
</template>
<script>
export default {
name: "share-box-app",
props: {
shareDataDefault: {
type: Object,
default() {
return {
shareTitle: '',
shareText: '',
href: '',
image: ''
}
},
},
},
data(){
return {
showBoxView:false,
shareType:0
}
},
created() {
uni.getProvider({
service: "share",
success: (e) => {
//console.log("success", e);
let data = []
for (let i = 0; i < e.provider.length; i++) {
switch (e.provider[i]) {
case 'weixin':
data.push({
name: '分享到微信好友',
id: 'weixin',
sort: 0
})
data.push({
name: '分享到微信朋友圈',
id: 'weixin',
type: 'WXSenceTimeline',
sort: 1
})
break;
case 'sinaweibo':
data.push({
name: '分享到新浪微博',
id: 'sinaweibo',
sort: 2
})
break;
case 'qq':
data.push({
name: '分享到QQ',
id: 'qq',
sort: 3
})
break;
default:
break;
}
}
this.providerList = data.sort((x, y) => {
return x.sort - y.sort
});
},
fail: (e) => {
//console.log("获取登录通道失败", e);
uni.showModal({
content: "获取登录通道失败",
showCancel: false
})
}
});
},
methods:{
share() {
var that = this;
//that.cf.LANG_ENABLE
if (that.cf.LANG_ENABLE)
{
let content = this.shareDataDefault.shareTitle + "\n" + this.shareDataDefault.href + "\n";
// #ifdef APP-PLUS
//plus.runtime.openURL( schema );
const downloadTask = uni.downloadFile({
url: this.shareDataDefault.image,
success: (res) => {
if (res.statusCode === 200) {
console.log('下载成功');
let tmp_img = res.tempFilePath;
//粘贴板数据
//uni.setClipboardData({ data:content, success:function(data){}, fail:function(err){}, complete:function(res){} })
//let msg = {type:"web", title:content, content:content, href:this.shareDataDefault.href, pictures:[tmp_img]};
let msg = {type:"image/*", title:content, content:content, pictures:[tmp_img], href:this.shareDataDefault.href};
plus.share.sendWithSystem(msg, function(){
console.log('分享成功');
}, function(e){
console.log('分享失败:'+JSON.stringify(e));
});
/*
let text_msg = {title:this.pname, content:this.desc || this.pname}
plus.share.sendWithSystem(text_msg, function(){
console.log('分享成功');
}, function(e){
console.log('分享失败:'+JSON.stringify(e));
});
*/
}
}
});
// #endif
return ;
}
if (this.providerList.length === 0) {
uni.showModal({
title: '当前环境无分享渠道!',
showCancel: false
})
return;
}
let itemList = this.providerList.map(function (value) {
return value.name
})
var that = this;
uni.showActionSheet({
itemList: itemList,
success: (res) => {
//分享为微信小程序
if (false && this.providerList[res.tapIndex].id == 'weixin' && this.providerList[res.tapIndex].type && this.providerList[res.tapIndex].type === 'WXSceneSession')
{
let mp_path = this.shareDataDefault.href.replace(that.cf.SiteUrl + "/h5", '');
uni.share({
provider: this.providerList[res.tapIndex].id,
scene: "WXSceneSession",
type: 5,
imageUrl : this.shareDataDefault.image,
title : this.shareDataDefault.shareTitle,
miniProgram: {
id: 'gh_d40b73e6ed8f',
path: mp_path,
type: 0,
webUrl: this.shareDataDefault.href
},
success: (res) => {
//console.log(this.imageUrl),
//console.log("success:" + JSON.stringify(res));
this.$emit('onShared');
},
fail: (e) => {
uni.showModal({
//content: e.errMsg,
content: '用户取消',
showCancel:false
})
}
});
}
else
{
let share_type = 'qq'==this.providerList[res.tapIndex].id ? 2 : this.shareType;
uni.share({
provider: this.providerList[res.tapIndex].id,
scene: this.providerList[res.tapIndex].type && this.providerList[res.tapIndex].type === 'WXSenceTimeline' ? 'WXSenceTimeline' : "WXSceneSession",
type: share_type,
summary : this.shareDataDefault.shareText,
imageUrl : this.shareDataDefault.image,
title : this.shareDataDefault.shareTitle,
href : this.shareDataDefault.href,
success: (res) => {
//console.log("success:" + JSON.stringify(res));
this.$emit('onShared');
},
fail: (e) => {
uni.showModal({
//content: e.errMsg,
content: '用户取消',
showCancel:false
})
}
});
}
}
})
},
save(){
uni.showActionSheet({
itemList:['保存图片到相册'],
success: () => {
plus.gallery.save('https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/app_download.png', function() {
uni.showToast({
title:'保存成功',
icon:'none'
})
}, function() {
uni.showToast({
title:'保存失败,请重试!',
icon:'none'
})
});
}
})
},
cancel() {
this.showBoxView = false;
this.$emit('onCancel');
},
show() {
this.share();
}
}
}
</script>
<style>
</style>