index.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /**
  2. * Share v1.0.0
  3. * @Class Share
  4. * @description shopro-share 1.0.0 分享方法
  5. * @Author lidongtony
  6. * @Date 2021-04-19
  7. * @Email lidongtony@qq.com
  8. */
  9. import {
  10. API_URL,
  11. API_ROOT,
  12. UNIACID
  13. } from '@/common/request/request';
  14. import store from "@/common/store";
  15. import $platform from "@/common/platform";
  16. // #ifdef H5
  17. import wxsdk from "@/common/wechat/sdk";
  18. // #endif
  19. export default {
  20. // 设置分享信息
  21. setShareInfo(scene = {
  22. title: '', // 自定义分享标题
  23. desc: '', // 自定义描述
  24. image: '', // 自定义分享图片
  25. // path:'',
  26. params: {} // 自定义分享参数
  27. }) {
  28. let that = this;
  29. let shareInfo = {
  30. title: '', // 分享标题
  31. desc: '', // 描述
  32. image: '', // 分享图片
  33. path: '', // 分享路径
  34. copyLink: '', // 复制链接
  35. query: '' // 分享参数
  36. }
  37. // let shareConfig = store.getters.initShare;
  38. // let shopConfig = store.getters.appInfo;
  39. let shareConfig = store.getters.appInfo;
  40. // console.log(shareConfig)
  41. // let pages = getCurrentPages();
  42. // let route = pages[pages.length - 1].route;
  43. // console.log(route)
  44. // if (shopConfig?.domain === '' || shareConfig.share_title === '' || shareConfig.share_img_path === '') {
  45. // throw '请在商城配置中设置商城域名和分享信息'
  46. // }
  47. // 设置自定义分享信息
  48. shareInfo.title = scene.title !== '' ? scene.title : shareConfig.share_title;
  49. shareInfo.image = scene.image !== '' ? scene.image : shareConfig.share_img_path;
  50. shareInfo.desc = scene.desc !== '' ? scene.desc : shareConfig.share_des;
  51. // 自动拼接分享用户参数
  52. let query = that.setShareQuery(scene.params);
  53. // let stay = shareConfig.share_img_path.split('public/')[0]+'public/h5?uniacid='+UNIACID;
  54. // #ifdef H5
  55. let stay = window.location.href.split('/h5')[0]+'/h5/?uniacid='+UNIACID;
  56. // console.log(window.location.href);
  57. // #endif
  58. // console.log(stay);
  59. // #ifdef MP
  60. shareInfo.path = `/pages/index/index?${query}`;
  61. // console.log(shareInfo);
  62. // #endif
  63. // #ifndef MP
  64. // shareInfo.path = `${store.getters.appInfo?.domain}?${query}`;
  65. // shareInfo.path = scene.path !== '' ? scene.path :`${stay}&{query}`;
  66. shareInfo.path = `${stay}&${query}`;
  67. // console.log(shareInfo.path);
  68. // #endif //initShop
  69. // shareInfo.copyLink = `${store.getters.appInfo?.domain}?${query}`;
  70. // shareInfo.query = query;
  71. // #ifdef H5
  72. console.log(shareInfo);
  73. if($platform.get() === 'wxOfficialAccount') {
  74. wxsdk.share(shareInfo);
  75. }
  76. // #endif
  77. store.commit("shareInfo", shareInfo);
  78. return shareInfo;
  79. },
  80. // 自定义分享参数拼接: 由于小程序码长度限制(B码最大32位长度),为了确保分享参数最大可扩展性,使用spm方法拼接 shareUserId.page.pageId.platform.from ----例 spm=88888888.3.1666666.3.2 即为ID为88888888用户通过微信网页平台生成了拼团ID为1666666的拼团分享海报
  81. setShareQuery(params) {
  82. let shareUserId = '0'; // 设置分享者用户ID
  83. if (params&&params.shareId) {
  84. // if (store.getters.isLogin) {
  85. shareUserId = store.getters.userInfo.id;
  86. // }
  87. }
  88. if (params.shareId === undefined) {
  89. if (store.getters.isLogin) {
  90. shareUserId = store.getters.userInfo.id;
  91. }
  92. }
  93. let page = '1'; // 页面类型: 1=首页(默认),2=商品,3=拼团...按需扩展
  94. if (params.page !== undefined) {
  95. page = params.page;
  96. }
  97. let pageId = '0'; // 设置页面ID: 如商品ID、拼团ID等
  98. if (params.pageId !== undefined) {
  99. pageId = params.pageId;
  100. }
  101. let platform = ['H5', 'wxOfficialAccount', 'wxMiniProgram', 'App'].indexOf($platform.get()) +
  102. 1; // 设置分享的平台渠道: 1=H5,2=微信公众号网页,3=微信小程序,4=App,...按需扩展
  103. let from = '1'; // 设置分享方式: 1=直接转发,2=海报,3=链接,...按需扩展
  104. // if (params.from !== undefined) {
  105. // from = params.from;
  106. // }
  107. //spmParam = ... 可按需扩展
  108. return `spm=${shareUserId}.${page}.${pageId}.${platform}.${from}`;
  109. },
  110. getShareQuery(spm) {
  111. let shareParams = {};
  112. let shareParamsArray = spm.split('.');
  113. if(shareParamsArray[0] != '0') {
  114. shareParams.shareUserId = shareParamsArray[0];
  115. }
  116. switch(shareParamsArray[1]) {
  117. case '1':
  118. // 默认首页不跳转
  119. break;
  120. case '2':
  121. shareParams.page = '/pages/tasklist/taskdetails';
  122. break;
  123. case '3':
  124. shareParams.page = '/pages/activity/groupon/detail';
  125. break;
  126. }
  127. if(shareParamsArray[2] !== '0') {
  128. shareParams.pageId = shareParamsArray[2];
  129. }
  130. shareParams.platform = shareParamsArray[3];
  131. shareParams.from = shareParamsArray[4];
  132. return shareParams;
  133. }
  134. }