diff --git a/common/mixins/wxshare.mixin.js b/common/mixins/wxshare.mixin.js new file mode 100644 index 0000000..99d9402 --- /dev/null +++ b/common/mixins/wxshare.mixin.js @@ -0,0 +1,67 @@ +// 微信分享配置 +//import haloConfig from '@/config/halo.config.js' +import HaloTokenConfig from '@/config/token.config.js' +import { jsonToUrlParams2 } from '@/utils/url.params.js' +export const haloWxShareMixin = { + data() { + return { + haloWxShareData: { + //...haloConfig.wxShareConfig + }, + } + }, + + //#ifdef MP-WEIXIN + onShareAppMessage(res) { + return { + ...this.haloWxShareData, + success: res => {} + } + }, + //#endif + /* 分享到微信好友 */ + onShareAppMessage(res) { + const promise = new Promise(resolve => { + setTimeout(() => { + resolve({ + title: this.haloWxShareData.title, + path: this.haloWxShareData.path, + }) + }, 2000) + }) + return { + title: this.haloWxShareData.title, + path: '', + promise + } + }, + + // 分享到朋友圈-这里封装不够,在页面还要声明一次,否则是拿不到参数的,被分享者在朋友圈打开链接是空的 + onShareTimeline: function() { + return { + title: this.haloWxShareData.title, + query: {}, + imageUrl: this.haloWxShareData.imageUrl, + } + }, + methods: { + // 设置分享信息(需要在页面调用) + fnSetWxShareConfig(config = {}) { + let currentRoutes = getCurrentPages(); // 获取当前打开过的页面路由数组 + let currentRoute = currentRoutes[currentRoutes.length - 1].route; //获取当前页面路由(分销思路,分享者点开使用的小程序将获取到分享者的id) + let sharePath = currentRoutes + if (config.params) { + const URLParams = config.params ? jsonToUrlParams2(config.params) : {}; + sharePath += URLParams + } + let _config = Object.assign({}, { + path: sharePath, + copyLink: HaloTokenConfig.BASE_API, + query: {} + }, config) + + uni.$tm.vx.commit('setWxShare', _config); + this.haloWxShareData = _config; + } + } +} diff --git a/pagesA/article-detail/article-detail.vue b/pagesA/article-detail/article-detail.vue index ac7a54e..cfbe95e 100644 --- a/pagesA/article-detail/article-detail.vue +++ b/pagesA/article-detail/article-detail.vue @@ -233,6 +233,8 @@ import commentModal from '@/components/comment-modal/comment-modal.vue'; import rCanvas from '@/components/r-canvas/r-canvas.vue'; import barrage from '@/components/barrage/barrage.vue'; +import {haloWxShareMixin} from '@/common/mixins/wxshare.mixin.js'; + export default { components: { tmSkeleton, @@ -249,6 +251,7 @@ export default { barrage, commentModal }, + mixins: [haloWxShareMixin], data() { return { loading: 'loading', @@ -387,6 +390,15 @@ export default { this.fnSetPageTitle('文章详情'); this.loading = 'success'; + this.fnSetWxShareConfig({ + title: this.result.spec.title, + desc: this.result.content.raw, + imageUrl: this.$utils.checkThumbnailUrl(this.result.spec.cover), + path: `/pagesA/article-detail/article-detail?name=${this.result.metadata.name}`, + copyLink: this.$baseApiUrl, + query: {} + }); + }) .catch(err => { console.log("错误", err) @@ -1196,4 +1208,4 @@ export default { } } } - + \ No newline at end of file