filter.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import Router from "vue-router";
  2. import router from "./index";
  3. import axios from "axios";
  4. import store from "../store";
  5. // 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题
  6. const originalPush = Router.prototype.push;
  7. Router.prototype.push = function push(location) {
  8. return originalPush.call(this, location).catch((err) => err);
  9. };
  10. // http://localhost:8082/?code=1&ticket=1
  11. router.beforeEach(async (to, from, next) => {
  12. let {
  13. code,
  14. ticket
  15. } = to.query;
  16. if (code && ticket && to.name === "mainPage") {
  17. localStorage.clear();
  18. store.commit("getUserId", "");
  19. store.commit("getUsername", "");
  20. store.commit("getRoleCode", "");
  21. store.commit("getUseType", "");
  22. let result = await axios({
  23. method: "post",
  24. url: "/simulation/oauth/client/sign/single",
  25. data: {
  26. code,
  27. ticket,
  28. },
  29. })
  30. .then((res) => {
  31. if (res.code == 200 && !!res.info.access_token) {
  32. localStorage.setItem(
  33. "Authorization",
  34. res.info.token_type + " " + res.info.access_token
  35. );
  36. localStorage.setItem(
  37. "refreshToken",
  38. res.info.refresh_token
  39. );
  40. localStorage.setItem("expiresTime", res.info.expires_time);
  41. return true;
  42. } else {
  43. alert(res.message || "网络异常");
  44. return false;
  45. }
  46. })
  47. .catch((error) => {
  48. alert("网络异常!");
  49. return false;
  50. });
  51. if (result) {
  52. next({
  53. path: "/mainPage",
  54. // query: {
  55. // code,
  56. // ticket,
  57. // },
  58. replace: true,
  59. });
  60. } else {
  61. next({
  62. path: "/login",
  63. });
  64. }
  65. return;
  66. }
  67. if (to.fullPath === "/" || to.name === "*") {
  68. if (to.meta.login) {
  69. if (localStorage.getItem("Authorization")) {
  70. next({
  71. path: "/mainPage",
  72. });
  73. } else {
  74. next({
  75. path: "/login",
  76. });
  77. }
  78. } else {
  79. next({
  80. path: "/mainPage",
  81. });
  82. }
  83. } else {
  84. if (to.meta.login) {
  85. if (localStorage.getItem("Authorization")) {
  86. next();
  87. } else {
  88. next({
  89. path: "/login",
  90. });
  91. }
  92. } else {
  93. next();
  94. }
  95. }
  96. });