12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. // import request from '@/utils/request'
  2. function request (url, options) {
  3. return fetch(url, options)
  4. .then(response => response.json())
  5. .then(data => {
  6. if (data.code === 1000) return data.data
  7. return Promise.reject(data.message)
  8. })
  9. }
  10. const jsApiList = [
  11. 'updateAppMessageShareData',
  12. 'updateTimelineShareData',
  13. 'onMenuShareTimeline',
  14. 'onMenuShareAppMessage',
  15. 'onMenuShareQQ',
  16. 'onMenuShareWeibo',
  17. 'onMenuShareQZone'
  18. ]
  19. function init (url) {
  20. request(`https://api.h5.njyunzhi.com/mp/jssdk?url=${encodeURIComponent(url)}`).then((res) => {
  21. window.wx.config({
  22. debug: process.env.NODE_ENV === 'development', // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  23. appId: res.appId, // 必填,公众号的唯一标识
  24. timestamp: res.timestamp, // 必填,生成签名的时间戳
  25. nonceStr: res.nonceStr, // 必填,生成签名的随机串
  26. signature: res.signature, // 必填,签名
  27. jsApiList // 必填,需要使用的JS接口列表
  28. })
  29. })
  30. }
  31. // init()
  32. /**
  33. * 分享到好友或者QQ
  34. * @param {*} opt
  35. */
  36. export function shareData (opt) {
  37. window.wx.ready(function () {
  38. window.wx.updateAppMessageShareData({
  39. title: opt.title, // 分享标题
  40. desc: opt.desc, // 分享描述
  41. link: opt.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  42. imgUrl: opt.imgUrl // 分享图标
  43. })
  44. })
  45. }
  46. export function shareTimeline (opt) {
  47. window.wx.ready(function () {
  48. window.wx.updateTimelineShareData({
  49. title: opt.title, // 分享标题
  50. link: opt.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  51. imgUrl: opt.imgUrl // 分享图标
  52. })
  53. })
  54. }
  55. /**
  56. * 分享全部
  57. * @param {*} opt
  58. */
  59. export function share (opt) {
  60. init(opt.link)
  61. window.wx.ready(function () {
  62. jsApiList.map((apiName) => {
  63. const api = window.wx[apiName]
  64. api({
  65. title: opt.title || '', // 分享标题
  66. link: opt.link || '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  67. imgUrl: opt.imgUrl || '', // 分享图标
  68. desc: opt.desc || ''
  69. })
  70. })
  71. })
  72. }