cankao-h5/src/stores/shareStore.ts

162 lines
4.2 KiB
TypeScript
Raw Normal View History

2025-08-10 16:44:02 +08:00
import { defineStore } from "pinia";
import wx from "weixin-js-sdk";
import { getWeChatSdkData } from "@/api/index";
import axios from "axios";
interface IWxConfig {
appId: string;
timestamp: number;
nonceStr: string;
signature: string;
[key: string]: any;
}
interface IWxShareData {
title: string;
desc: string;
link: string;
imgUrl: string;
success?: () => void;
}
interface IShareStore {
inited: boolean;
url: string;
redirectUrl: string;
shareData: IWxShareData;
}
export const useShareStore = defineStore("share", {
state: (): IShareStore => ({
inited: false,
url: import.meta.env.VITE_SHARE_DOMAIN,
redirectUrl: import.meta.env.VITE_SHARE_REDIRECT,
shareData: {
title: "中证参考",
desc: "天下事 秒知道",
link: import.meta.env.VITE_SHARE_DOMAIN,
imgUrl: import.meta.env.VITE_SHARE_DOMAIN + "/static/share-default.jpg",
},
}),
actions: {
// 初始化jssdk配置
initWxConfig(data?: IWxShareData) {
const url = window.location.href.split("#")[0];
data = data || this.shareData;
if (this.inited) {
this.wxReady(data);
return;
}
axios({
url: "https://cankao.cs.com.cn/apih5/wechat/share",
method: "get",
params: { url },
responseType: "json",
}).then((res: any) => {
const data: IWxConfig = res.data.data;
// console.log("🚀 ~ getWeChatSdkData ~ data:", data);
wx.config({
debug: false,
appId: data.appId,
timestamp: data.timestamp,
nonceStr: data.nonceStr,
signature: data.signature,
jsApiList: [
"updateAppMessageShareData",
"updateTimelineShareData",
"onMenuShareTimeline",
"onMenuShareAppMessage",
],
});
this.wxReady(this.shareData);
wx.error((err) => {
console.log("🚀 ~ err:", err);
});
});
// getWeChatSdkData({ url }).then((res: any) => {
// const data: IWxConfig = res.data;
// console.log("🚀 ~ getWeChatSdkData ~ data:", data);
// wx.config({
// debug: false,
// appId: data.appId,
// timestamp: data.timestamp,
// nonceStr: data.nonceStr,
// signature: data.signature,
// jsApiList: [
// "updateAppMessageShareData",
// "updateTimelineShareData",
// "onMenuShareTimeline",
// "onMenuShareAppMessage",
// ],
// });
// this.wxReady(this.shareData);
// wx.error((err) => {
// console.log("🚀 ~ err:", err);
// });
// });
},
// wx.ready
wxReady(data: IWxShareData) {
// console.log("output >>>>> wxShare -- this.inited", this.inited);
if (this.inited) {
this.wxUpdateShare(data);
} else {
wx.ready(() => {
this.inited = true;
this.wxUpdateShare(data);
});
}
},
// 修改转发内容
wxUpdateShare(data: IWxShareData) {
/**
* QQ
*/
wx.updateAppMessageShareData({
title: data.title,
desc: data.desc,
link: data.link,
imgUrl: data.imgUrl,
success: function () {},
});
/**
* QQ空间
*/
wx.updateTimelineShareData({
title: data.title,
link: data.link,
imgUrl: data.imgUrl,
success: function () {},
});
/**
*
*/
wx.onMenuShareAppMessage({
title: data.title,
desc: data.desc,
link: data.link,
imgUrl: data.imgUrl,
success: function () {},
cancel: function () {},
});
/**
*
*/
wx.onMenuShareTimeline({
title: data.title,
link: data.link,
imgUrl: data.imgUrl,
success: function () {},
cancel: function () {},
});
},
},
});