|
@@ -0,0 +1,140 @@
|
|
|
|
|
+// 微信服务号分享功能
|
|
|
|
|
+import wx from 'weixin-js-sdk'
|
|
|
|
|
+import {getSignature} from "@/api";
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 初始化微信 JS-SDK
|
|
|
|
|
+ * @param {Object} config - 微信 JS-SDK 配置参数
|
|
|
|
|
+ */
|
|
|
|
|
+export function initWechatSDK(config) {
|
|
|
|
|
+ if (typeof wx === 'undefined') {
|
|
|
|
|
+ console.error('微信 JS-SDK 未加载');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ wx.config({
|
|
|
|
|
+ debug: false,
|
|
|
|
|
+ appId: config.appId,
|
|
|
|
|
+ timestamp: config.timestamp,
|
|
|
|
|
+ nonceStr: config.nonceStr,
|
|
|
|
|
+ signature: config.signature,
|
|
|
|
|
+ jsApiList: [
|
|
|
|
|
+ 'updateAppMessageShareData',
|
|
|
|
|
+ 'updateTimelineShareData',
|
|
|
|
|
+ 'onMenuShareAppMessage',
|
|
|
|
|
+ 'onMenuShareTimeline'
|
|
|
|
|
+ ]
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ wx.ready(function() {
|
|
|
|
|
+ console.log('微信 JS-SDK 初始化成功');
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ wx.error(function(res) {
|
|
|
|
|
+ console.error('微信 JS-SDK 初始化失败:', res);
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 配置微信分享参数
|
|
|
|
|
+ * @param {Object} options - 分享配置选项
|
|
|
|
|
+ * @param {string} options.title - 分享标题
|
|
|
|
|
+ * @param {string} options.desc - 分享描述
|
|
|
|
|
+ * @param {string} options.link - 分享链接
|
|
|
|
|
+ * @param {string} options.imgUrl - 分享图标
|
|
|
|
|
+ */
|
|
|
|
|
+export function configWechatShare(options) {
|
|
|
|
|
+ if (typeof wx === 'undefined') {
|
|
|
|
|
+ console.error('微信 JS-SDK 未加载');
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const { title, desc, link, imgUrl } = options;
|
|
|
|
|
+
|
|
|
|
|
+ // 分享给朋友
|
|
|
|
|
+ wx.updateAppMessageShareData({
|
|
|
|
|
+ title: title,
|
|
|
|
|
+ desc: desc,
|
|
|
|
|
+ link: link,
|
|
|
|
|
+ imgUrl: imgUrl,
|
|
|
|
|
+ success: function() {
|
|
|
|
|
+ console.log('分享给朋友成功');
|
|
|
|
|
+ },
|
|
|
|
|
+ cancel: function() {
|
|
|
|
|
+ console.log('分享给朋友取消');
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 分享到朋友圈
|
|
|
|
|
+ wx.updateTimelineShareData({
|
|
|
|
|
+ title: title,
|
|
|
|
|
+ link: link,
|
|
|
|
|
+ imgUrl: imgUrl,
|
|
|
|
|
+ success: function() {
|
|
|
|
|
+ console.log('分享到朋友圈成功');
|
|
|
|
|
+ },
|
|
|
|
|
+ cancel: function() {
|
|
|
|
|
+ console.log('分享到朋友圈取消');
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 兼容旧版本
|
|
|
|
|
+ wx.onMenuShareAppMessage({
|
|
|
|
|
+ title: title,
|
|
|
|
|
+ desc: desc,
|
|
|
|
|
+ link: link,
|
|
|
|
|
+ imgUrl: imgUrl,
|
|
|
|
|
+ success: function() {
|
|
|
|
|
+ console.log('分享给朋友成功(旧版本)');
|
|
|
|
|
+ },
|
|
|
|
|
+ cancel: function() {
|
|
|
|
|
+ console.log('分享给朋友取消(旧版本)');
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ wx.onMenuShareTimeline({
|
|
|
|
|
+ title: title,
|
|
|
|
|
+ link: link,
|
|
|
|
|
+ imgUrl: imgUrl,
|
|
|
|
|
+ success: function() {
|
|
|
|
|
+ console.log('分享到朋友圈成功(旧版本)');
|
|
|
|
|
+ },
|
|
|
|
|
+ cancel: function() {
|
|
|
|
|
+ console.log('分享到朋友圈取消(旧版本)');
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 处理微信服务号分享
|
|
|
|
|
+ * @param {Object} shareData - 分享数据
|
|
|
|
|
+ */
|
|
|
|
|
+export async function handleServiceShare(shareData) {
|
|
|
|
|
+ // 这里可以根据实际需求,调用后端接口获取微信 JS-SDK 配置
|
|
|
|
|
+ const res = await getSignature()
|
|
|
|
|
+ // 假设已经获取到配置信息
|
|
|
|
|
+ const wxConfig = {
|
|
|
|
|
+ appId: res.data.appId, // 从后端获取
|
|
|
|
|
+ timestamp: res.data.timestamp, // 从后端获取
|
|
|
|
|
+ nonceStr: res.data.nonceStr, // 从后端获取
|
|
|
|
|
+ signature: res.data.signature // 从后端获取
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // 初始化微信 JS-SDK
|
|
|
|
|
+ initWechatSDK(wxConfig);
|
|
|
|
|
+
|
|
|
|
|
+ // 配置分享参数
|
|
|
|
|
+ configWechatShare({
|
|
|
|
|
+ title: shareData.title || '广誉远 - 积分任务',
|
|
|
|
|
+ desc: shareData.desc || '完成任务获取积分,兑换好礼',
|
|
|
|
|
+ link: shareData.link || window.location.href,
|
|
|
|
|
+ imgUrl: shareData.imgUrl || '/static/points/point.png'
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 提示用户分享
|
|
|
|
|
+ uni.showToast({
|
|
|
|
|
+ title: '请点击右上角分享到微信',
|
|
|
|
|
+ icon: 'none',
|
|
|
|
|
+ duration: 2000
|
|
|
|
|
+ });
|
|
|
|
|
+}
|