uniapp 分享例子做个记录

发布时间:2024年01月04日

<template>
?? ?<view class="content">
?? ??? ?<view class="invite-wrapper" v-if="inviteUrl">
?? ??? ??? ?<uni-qrcode class="invite-qrcode" ref="qrcode" cid="invite-qr-canvas" :text="inviteUrl" :margin="10" makeOnLoad
?? ??? ??? ? @makeComplete="qrcodeComplete" />
?? ??? ??? ?<view class="share-btn">
?? ??? ??? ??? ?<button type="primary" @click="shareLink">分享链接</button>
?? ??? ??? ??? ?<button type="primary" @click="shareImage">分享图片</button>
?? ??? ??? ?</view>
?? ??? ??? ?<view class="share-btn">
?? ??? ??? ??? ?<button type="primary" @click="toInvitedUser">我邀请的用户</button>
?? ??? ??? ?</view>
?? ??? ??? ?<uni-popup id="popupShare" ref="popupShare" type="share">
?? ??? ??? ??? ?<uni-popup-share title="分享到" :shareType="shareType" @select="select"></uni-popup-share>
?? ??? ??? ?</uni-popup>
?? ??? ?</view>
?? ?</view>
</template>

<script>
?? ?import {
?? ??? ?mapState
?? ?} from 'vuex'
?? ?export default {
?? ??? ?data() {
?? ??? ??? ?return {
?? ??? ??? ??? ?inviteUrl: '',
?? ??? ??? ??? ?qrcodeImagePath: '',
?? ??? ??? ??? ?qrcodePath: '',
?? ??? ??? ??? ?shareType: ''
?? ??? ??? ?}
?? ??? ?},
?? ??? ?onLoad() {
?? ??? ??? ?uni.showLoading({
?? ??? ??? ??? ?title: '加载中...'
?? ??? ??? ?})
?? ??? ??? ?uniCloud.callFunction({
?? ??? ??? ??? ?name: 'user-center',
?? ??? ??? ??? ?data: {
?? ??? ??? ??? ??? ?action: 'getInviteCode'
?? ??? ??? ??? ?},
?? ??? ??? ??? ?success: (res) => {
?? ??? ??? ??? ??? ?console.log(res);
?? ??? ??? ??? ??? ?if (res.result.code === 0) {
?? ??? ??? ??? ??? ??? ?// 这里请修改为真实的邀请页面url
?? ??? ??? ??? ??? ??? ?this.inviteUrl = 'https://login.tpl.dcloud.net.cn/#/pages/invite-reg/invite-reg?invite_code=' + res.result.myInviteCode
?? ??? ??? ??? ??? ?} else {
?? ??? ??? ??? ??? ??? ?uni.showModal({
?? ??? ??? ??? ??? ??? ??? ?content: '获取用户邀请码失败:' + res.result.msg,
?? ??? ??? ??? ??? ??? ??? ?showCancel: false
?? ??? ??? ??? ??? ??? ?})
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?},
?? ??? ??? ??? ?fail: (err) => {
?? ??? ??? ??? ??? ?uni.showModal({
?? ??? ??? ??? ??? ??? ?content: '获取用户邀请码失败,请稍后再试',
?? ??? ??? ??? ??? ??? ?showCancel: false
?? ??? ??? ??? ??? ?})
?? ??? ??? ??? ?},
?? ??? ??? ??? ?complete() {
?? ??? ??? ??? ??? ?uni.hideLoading()
?? ??? ??? ??? ?}
?? ??? ??? ?})
?? ??? ?},
?? ??? ?methods: {
?? ??? ??? ?copyInviteUrl() {
?? ??? ??? ??? ?uni.setClipboardData({
?? ??? ??? ??? ??? ?data: this.inviteUrl
?? ??? ??? ??? ?})
?? ??? ??? ?},
?? ??? ??? ?qrcodeComplete(path) {
?? ??? ??? ??? ?this.qrcodeImagePath = path
?? ??? ??? ?},
?? ??? ??? ?shareLink() {
?? ??? ??? ??? ?this.shareType = 'link'
?? ??? ??? ??? ?this.$refs.popupShare.open()
?? ??? ??? ?},
?? ??? ??? ?shareImage() {
?? ??? ??? ??? ?this.shareType = 'image'
?? ??? ??? ??? ?this.$refs.popupShare.open()
?? ??? ??? ?},
?? ??? ??? ?select({
?? ??? ??? ??? ?item
?? ??? ??? ?}) {
?? ??? ??? ??? ?const shareTitle = '登录模板',
?? ??? ??? ??? ??? ?shareSummary = 'DCloud邀请您试用登录模板'
?? ??? ??? ??? ?let params = {}
?? ??? ??? ??? ?switch (`${this.shareType}_${item.name}`) {
?? ??? ??? ??? ??? ?case 'link_weixin':
?? ??? ??? ??? ??? ??? ?params = {
?? ??? ??? ??? ??? ??? ??? ?type: 1,
?? ??? ??? ??? ??? ??? ??? ?summary: this.inviteUrl,
?? ??? ??? ??? ??? ??? ??? ?scene: 'WXSceneSession'
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ??? ?case 'link_qq':
?? ??? ??? ??? ??? ??? ?params = {
?? ??? ??? ??? ??? ??? ??? ?type: 1,
?? ??? ??? ??? ??? ??? ??? ?title: shareTitle,
?? ??? ??? ??? ??? ??? ??? ?summary: shareSummary,
?? ??? ??? ??? ??? ??? ??? ?href: this.inviteUrl
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ??? ?case 'link_more':
?? ??? ??? ??? ??? ??? ?uni.setClipboardData({
?? ??? ??? ??? ??? ??? ??? ?data: this.inviteUrl
?? ??? ??? ??? ??? ??? ?})
?? ??? ??? ??? ??? ??? ?return
?? ??? ??? ??? ??? ?case 'image_weixin':
?? ??? ??? ??? ??? ??? ?params = {
?? ??? ??? ??? ??? ??? ??? ?type: 2,
?? ??? ??? ??? ??? ??? ??? ?imageUrl: this.qrcodeImagePath,
?? ??? ??? ??? ??? ??? ??? ?scene: 'WXSceneSession'
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ??? ?case 'image_qq':
?? ??? ??? ??? ??? ??? ?params = {
?? ??? ??? ??? ??? ??? ??? ?type: 2,
?? ??? ??? ??? ??? ??? ??? ?imageUrl: this.qrcodeImagePath
?? ??? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ??? ?case 'image_more':
?? ??? ??? ??? ??? ??? ?uni.shareWithSystem({
?? ??? ??? ??? ??? ??? ??? ?type: 'image',
?? ??? ??? ??? ??? ??? ??? ?imageUrl: this.qrcodeImagePath
?? ??? ??? ??? ??? ??? ?})
?? ??? ??? ??? ??? ??? ?return
?? ??? ??? ??? ??? ?default:
?? ??? ??? ??? ??? ??? ?break;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?console.log(params);
?? ??? ??? ??? ?uni.share({
?? ??? ??? ??? ??? ?provider: item.name,
?? ??? ??? ??? ??? ?...params,
?? ??? ??? ??? ??? ?success() {
?? ??? ??? ??? ??? ??? ?uni.showModal({
?? ??? ??? ??? ??? ??? ??? ?content: '分享成功',
?? ??? ??? ??? ??? ??? ??? ?showCancel: false
?? ??? ??? ??? ??? ??? ?})
?? ??? ??? ??? ??? ?},
?? ??? ??? ??? ??? ?fail(err) {
?? ??? ??? ??? ??? ??? ?uni.showModal({
?? ??? ??? ??? ??? ??? ??? ?content: '分享失败:' + err.errMsg,
?? ??? ??? ??? ??? ??? ??? ?showCancel: false
?? ??? ??? ??? ??? ??? ?})
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?})

?? ??? ??? ?},
?? ??? ??? ?toInvitedUser() {
?? ??? ??? ??? ?uni.navigateTo({
?? ??? ??? ??? ??? ?url: '/pages/invited-user/invited-user'
?? ??? ??? ??? ?})
?? ??? ??? ?}
?? ??? ?}
?? ?}
</script>

<style>
?? ?.invite-wrapper {
?? ??? ?display: flex;
?? ??? ?padding: 20px;
?? ??? ?flex-direction: column;
?? ??? ?align-items: center;
?? ?}

?? ?.invite-qrcode {
?? ??? ?border-radius: 10px;
?? ??? ?box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 10px 1px;
?? ??? ?overflow: hidden;
?? ?}

?? ?.share-btn {
?? ??? ?display: flex;
?? ??? ?flex-direction: row;
?? ??? ?padding: 20px 0px 10px 0px;
?? ?}

?? ?.share-btn button {
?? ??? ?flex: 1;
?? ??? ?margin: 0px 10px;
?? ??? ?border-radius: 40px;
?? ?}
</style>

文章来源:https://blog.csdn.net/qq_34114535/article/details/135379262
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。