webview.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <!-- /pages/webview/webview.vue -->
  2. <template>
  3. <web-view :src="src" @message="onMessage"></web-view>
  4. </template>
  5. <script>
  6. import configService from "@/common/service/config.service.js";
  7. import api from "@/api/api";
  8. export default {
  9. data() {
  10. return {
  11. src: ''
  12. };
  13. },
  14. methods:{
  15. onMessage(event) {
  16. uni.showModal({
  17. content: JSON.stringify(event.detail),
  18. showCancel: false
  19. });
  20. },
  21. // onMessage(e) {
  22. // // 通过 e.detail.data 可以获取到网页发送过来的数据
  23. // // 如果要监听URL变化,可以在这里处理
  24. // console.log('网页发送的数据:', e.detail.data);
  25. // }
  26. },
  27. watch:{
  28. src(value){
  29. if(value.indexOf("ticket") !=-1) {
  30. this.$destroy();
  31. var tourl = configService.apiUrl;
  32. try {
  33. new Promise((resolve, reject) => {
  34. api
  35. .validateCasLogin({
  36. ticket: value.substring(value.indexOf("ticket")+7,value.length),
  37. service: tourl,
  38. })
  39. .then((response) => {
  40. if (response.data.code == 200) {
  41. uni.setStorageSync(ACCESS_TOKEN, response.data.result.token);
  42. } else {
  43. reject(response);
  44. }
  45. uni.navigateTo({
  46. url: "/pages/home/home",
  47. });
  48. })
  49. .catch((error) => {
  50. console.log("catch===>response", response);
  51. reject(error);
  52. });
  53. });
  54. } catch (e) {
  55. }
  56. }
  57. }
  58. },
  59. onLoad(option) {
  60. // 获取传递过来的url参数
  61. let optionurl = option.url;
  62. if(option.url.indexOf("ticket") !=-1){
  63. console.log("option.url======"+option.url)
  64. this.src = decodeURIComponent(optionurl);
  65. }
  66. }
  67. };
  68. </script>