wx-share.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import {
  2. objToUrlQuery
  3. } from '@/util/squ.js'
  4. export default {
  5. data() {
  6. return {
  7. shareTitle: 'AirSmartChat聊天',
  8. // 分享的连接
  9. sharePath: '',
  10. // 分享连接扩展参数,如果定义了sharePath则此参数无效
  11. shareQuery: {},
  12. shareUrl: '/static/logo-100.png',
  13. // 进入当前页面是否是通过点击分享连接进入
  14. share: false
  15. }
  16. },
  17. onLoad(options) {
  18. // 页面初次加载判断有没有携带分享参数,从而解决分享页面无法返回问题
  19. if (options && (options.share || options.share == 'true')) {
  20. this.share = true
  21. }
  22. try {
  23. wx.showShareMenu({
  24. withShareTicket: true,
  25. menus: ["shareAppMessage", "shareTimeline"]
  26. })
  27. } catch(error) {
  28. console.error(error)
  29. }
  30. },
  31. // 分享朋友圈和微信好友函数和 onLoad 等生命周期函数同级
  32. onShareAppMessage(res) {
  33. let path = this.getSharePath()
  34. if (res.from === 'button') {
  35. // 为自定义按钮分享. 这块需要传参,不然链接地址进去获取不到数据
  36. return {
  37. title: this.shareTitle,
  38. path: path,
  39. imageUrl: this.shareUrl
  40. }
  41. }
  42. if (res.from === 'menu') {
  43. return {
  44. title: this.shareTitle,
  45. path: path,
  46. imageUrl: this.shareUrl
  47. }
  48. }
  49. },
  50. // 分享到朋友圈
  51. onShareTimeline(res) {
  52. let path = this.getSharePath()
  53. return {
  54. title: this.shareTitle,
  55. path: path,
  56. imageUrl: this.shareUrl
  57. }
  58. },
  59. methods: {
  60. getSharePath() {
  61. if (this.sharePath) {
  62. return this.sharePath
  63. }
  64. let sharePath = `/${this.$scope.route}?share=true&inviterUserId=${this.$store.getters.userId}&`
  65. if (this.shareQuery) {
  66. sharePath += objToUrlQuery(this.shareQuery)
  67. }
  68. return sharePath
  69. },
  70. navigateBack () {
  71. this.$squni.navigateBack(this)
  72. },
  73. }
  74. }