App.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <template>
  2. <div id="app">
  3. <keep-alive>
  4. <router-view></router-view>
  5. </keep-alive>
  6. </div>
  7. </template>
  8. <script>
  9. import '@less/base.less';
  10. import axios from 'axios';
  11. import utils from '@api/utils.js';
  12. import api from './api/user.js';
  13. import icss from './api/icss.js';
  14. document.title='朗通云平台'; //修改标签页标题
  15. export default {
  16. name: 'app',
  17. created() {
  18. this.getUserEnumsData();
  19. this.getDiagbotManEnumsData();
  20. this.getIcssEnumsData();
  21. this.getKnowledgeEnums();
  22. //请求拦截器,添加token
  23. axios.interceptors.request.use((req) => {
  24. const tokenStr = localStorage.getItem('token');
  25. if (tokenStr) {
  26. const tokenInfo = utils.isJsonStr(tokenStr) && JSON.parse(tokenStr);
  27. req.headers.Authorization = `Bearer ${tokenInfo.accessToken}`;
  28. return req;
  29. } else {
  30. return req;
  31. }
  32. }, (error) => {
  33. return Promise.reject(error);
  34. });
  35. //请求响应拦截,401则调到登录页
  36. axios.interceptors.response.use(
  37. response => {
  38. const code = response.data.code;
  39. if(code ==="10020011"){ //token过期,清除token信息并跳转到登录页面
  40. localStorage.removeItem('token');
  41. this.logOut();
  42. return;
  43. }
  44. return response;
  45. },
  46. error => {
  47. if (error.response) {
  48. switch (error.response.status) {
  49. case 401:
  50. // 返回 401 清除token信息并跳转到登录页面
  51. localStorage.removeItem('token');
  52. this.logOut();
  53. return;
  54. case 500:
  55. // 返回 500
  56. this.message({
  57. message:'该服务正在升级,请稍后再试',
  58. type:'warning'
  59. });
  60. return;
  61. }
  62. }
  63. return Promise.reject(error) // 返回接口返回的错误信息
  64. });
  65. },
  66. methods: {
  67. logOut(){
  68. this.$alert('账号异常,请重新登录', '提示', {
  69. confirmButtonText: '确定',
  70. callback: action => {
  71. window.location.href='/';
  72. }
  73. });
  74. },
  75. getUserEnumsData() {
  76. api.getUserEnumsData().then((res) => {
  77. if (res.data.code == '0') {
  78. const data = res.data.data;
  79. localStorage.setItem('enumsData', JSON.stringify(data));
  80. }
  81. });
  82. },
  83. getDiagbotManEnumsData(){
  84. api.getDiagbotManEnumsData().then((res) => {
  85. if (res.data.code == '0') {
  86. const data = res.data.data;
  87. localStorage.setItem('productEnumsData', JSON.stringify(data));
  88. }
  89. });
  90. },
  91. getIcssEnumsData(){
  92. icss.getIcssEnumsData().then((res) => {
  93. if (res.data.code == '0') {
  94. const data = res.data.data;
  95. localStorage.setItem('icssEnumsData', JSON.stringify(data));
  96. }
  97. });
  98. },
  99. getKnowledgeEnums(){
  100. icss.getKnowledgeEnums().then((res) => {
  101. if (res.data.code == '0') {
  102. const data = res.data.data;
  103. localStorage.setItem('knowledgeEnumsData', JSON.stringify(data));
  104. }
  105. });
  106. }
  107. }
  108. }
  109. </script>
  110. <style>
  111. #app {
  112. width: 100%;
  113. height: 100%;
  114. }
  115. </style>