pc.vue 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <template>
  2. <view class="pc-page">
  3. <web-view :src="url" @message="handleGetMessage" v-if="url"/>
  4. </view>
  5. </template>
  6. <script>
  7. import {pcBaseUrl} from '../utils/config'
  8. const mapObj=new Map([
  9. ['pages/activity/activity','/activity/list'],
  10. ['pages-activity/detail','/activity/detail']
  11. ])//map映射小程序页面路径对应h5页面路径
  12. export default {
  13. data () {
  14. return {
  15. url:'',
  16. msgObj:{},//{path:小程序页面地址,params:页面参数,title:分享的标题,shareImg:分享的图片}
  17. }
  18. },
  19. onLoad(options) {
  20. console.log('pc页面onload数据',options);
  21. let paramsObj={
  22. ...options,
  23. token:this.$store.state.user.token||uni.getStorageSync("token"),
  24. timestamp:new Date().getTime(),//防止缓存
  25. }
  26. delete paramsObj.xcxPath
  27. console.log('要处理的参数',paramsObj);
  28. let paramsObjStr=''
  29. for (const key in paramsObj) {
  30. if(!paramsObjStr){
  31. paramsObjStr=`${key}=${paramsObj[key]}`
  32. }else{
  33. paramsObjStr=`${paramsObjStr}&${key}=${paramsObj[key]}`
  34. }
  35. }
  36. console.log('拼接字符串:',paramsObjStr);
  37. this.url=`${pcBaseUrl}${mapObj.get(decodeURIComponent(options.xcxPath))||'/'}?${paramsObjStr}`
  38. },
  39. onShareAppMessage({webViewUrl}) {
  40. // console.log(webViewUrl);
  41. let paramsStr=''
  42. for(const key in this.msgObj.params){
  43. if(!paramsStr){
  44. paramsStr=`${key}=${this.msgObj.params[key]}`
  45. }else{
  46. paramsStr=`${paramsStr}&${key}=${this.msgObj.params[key]}`
  47. }
  48. }
  49. return {
  50. title: this.msgObj.title||'弘则研究',
  51. path: `${this.msgObj.path}?${paramsStr}`,
  52. imageUrl:this.msgObj.shareImg||''
  53. }
  54. },
  55. methods: {
  56. // 获取到用户点击转发时从h5页面传来的参数
  57. handleGetMessage(e){
  58. const data=e.detail.data[e.detail.data.length-1]
  59. console.log('h5传来的数据',data);
  60. this.msgObj=data
  61. }
  62. },
  63. onShow() {
  64. uni.hideHomeButton({
  65. fail:(e)=>{
  66. console.log(e);
  67. }
  68. })
  69. }
  70. }
  71. </script>