多租户商城-商户小程序端
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.
 
 
 

266 lines
6.5 KiB

<template>
<div>
<u-popup v-model="shareShow" :round="10" mode="bottom" @close="cancel(1)">
<view class="share">
<!-- <u-mask :show="true" class="flex-items-plus flex-row"> -->
<text class="h3">邀请好友</text>
<view class="share-list">
<view class="ul">
<!-- #ifdef APP-PLUS -->
<view class="li" @click="share('weixin')">
<image class="icon" src="http://36.138.125.206:8081/ceres-local-file/static/img/share/weixin2x.png"></image>
<label class="label">微信</label>
</view>
<view class="li" @click="share('weixinpyq')">
<image class="icon" src="http://36.138.125.206:8081/ceres-local-file/static/img/share/pyq.png"></image>
<label class="label">朋友圈</label>
</view>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<view class="li">
<button open-type="share" @share='onShareAppMessage' :data-obj="wxShareData" class="share-button">
<image class="icon" src="http://36.138.125.206:8081/ceres-local-file/static/img/share/forward.png"></image>
<label class="label">好友</label>
</button>
</view>
<view class="li" @click="share('weixinpyq')">
<image class="icon" src="http://36.138.125.206:8081/ceres-local-file/static/img/share/pyq.png"></image>
<label class="label">朋友圈</label>
</view>
<!-- #endif -->
<view class="li" @click="share('lianjie')">
<image class="icon" src="http://36.138.125.206:8081/ceres-local-file/static/img/share/lianjie.png"></image>
<label class="label">链接</label>
</view>
</view>
</view>
<view class="btn-close" @click="cancel(1)">取消</view>
</view>
</u-popup>
<u-popup v-model="wapShow" :round="10" mode="bottom" :border-radius="10" @close="cancel(2)">
<view class="share-h5">
<view class="text">
点击浏览器下方
<view class="icon">
<u-icon name="list" color="#fff" size="28"></u-icon>
</view>
即可进行分享
</view>
</view>
</u-popup>
</div>
</template>
<script>
import ClipboardJS from "clipboard"
import UImage from "../uview-ui/components/u-image/u-image";
const API = require('../config/api')
export default {
components: {UImage},
props: {
img: {
type: String,
default: ""
},
url: {
type: String,
dafault: ''
},
title: {
type: String,
dafault: ''
},
urlParms: {
type: String,
default: ''
},
},
onShareAppMessage(e) {
if(e.from=='button'){
// 点击button
}
if(e.from=='menu'){
// 点击右上角按钮
}
// 获取按钮传进来的参数 data 中的item值
let params = e.target.dataset.obj// 获取的为 data 中定义的item值
return {
path: `/pages_category_page1/goodsModule/inviteSpell?${params.url}`
}
},
name: "share",
data() {
return {
shareShow: false,
wapShow: false,
wxShareData: {
url: ''
}
};
},
mounted() {
this.wxShareData = this.url
},
computed:{
longUrl(){
return API.shareLink + '/#' + this.url
}
},
methods: {
cancel(key) {
if (key === 1) {
this.shareShow = false
this.$emit('shareCancel')
} else if (key === 2) {
this.wapShow = false
}
},
wxShare(type) {
// #ifdef APP-PLUS
uni.share({
provider: "weixin",
type: 0,
title: this.title,
scene: type,//WXSceneSession会话 WXSceneTimeline朋友圈
imageUrl: this.img,
href: this.longUrl,
success: () => {
},
fail: (err) => {
throw Error(err)
}
})
// #endif
// #ifdef MP-WEIXIN
uni.showToast({
title:"请点击右上角打开菜单进行朋友圈分享",
icon:"none"
})
// #endif
},
share(key) {
switch (key) {
case 'weixin':
this.wxShare("WXSceneSession")
break
case 'weixinpyq':
this.wxShare("WXSceneTimeline")
break
case 'qq':
break
case 'weibo':
break
case 'lianjie':
uni.setClipboardData({
data: this.title + this.longUrl,
success: () => {
uni.showToast({
title: '复制成功'
})
}
})
break
}
},
//重写分享方法
overShare: function () {
//监听路由切换
//间接实现全局设置分享内容
wx.onAppRoute(function (res) {
//获取加载的页面
let pages = getCurrentPages(),
//获取当前页面的对象
view = pages[pages.length - 1],
data;
if (view) {
data = view.data;
if (!data.isOverShare) {
data.isOverShare = true;
view.onShareAppMessage = function () {
//你的分享配置
return {
title: '标题',
path: '/pages/nearby/index'
};
}
}
}
})
}
}
}
</script>
<style lang="scss">
.share{
background-color: #F8F8F8;
text-align: center;
.h3{
font-size: 30rpx;
color: #333333;
line-height: 42rpx;
padding: 30rpx 0;
border-bottom: 2px solid #F0F0F0;
display: block;
}
.share-list{
padding: 40rpx 0 54rpx;
.ul{
display: flex;
justify-content: space-around;
.li{
&::after {
border: none;
}
.icon{
display: block;
width: 92rpx;
height: 92rpx;
}
.label{
padding-top: 22rpx;
font-size: 24rpx;
line-height: 34rpx;
color: #333333;
display: block;
}
}
}
}
.btn-close{
background-color: #fff;
padding: 30rpx 0;
font-size: 26rpx;
color: #333;
}
}
.share-h5{
padding:0 20rpx;
display: flex;
justify-content: center;
.text{
line-height: 100rpx;
font-size: 30px;
.icon{
background-color: #333;
border-radius: 50%;
display: inline-block;
width: 40rpx;
height: 40rpx;
text-align: center;
line-height: 40rpx;
margin: 0 10rpx;
}
}
}
.share-button::after {
border: none;
}
</style>