소스 검색

no message

duwendi 1 년 전
부모
커밋
145a7ed8a5
1개의 변경된 파일170개의 추가작업 그리고 0개의 파일을 삭제
  1. 170 0
      src/util/ajax1.js

+ 170 - 0
src/util/ajax1.js

@@ -0,0 +1,170 @@
1
+/**
2
+ * axios全局配置
3
+ */
4
+import axios from "axios";
5
+import config from '@/config/index';
6
+// import store from "../store"
7
+// import router from "../router"
8
+import Vue from "vue";
9
+import { Message } from "element-ui";
10
+import Cookies from "js-cookie";
11
+
12
+let loseToken = false,
13
+  serverError = false;
14
+
15
+/**
16
+ * baseUrl
17
+ */
18
+function getUrl() {
19
+  return 'https://park.lhzhtc.cn';
20
+}
21
+/**
22
+ * baseUrl
23
+ */
24
+function getTokenUrl() {
25
+  return Vue.prototype.tokenUrl;
26
+}
27
+axios.defaults.timeout = 30000;
28
+axios.defaults.withCredentials = false; //配置为false
29
+
30
+/**
31
+ * 超时设置
32
+ */
33
+const service = axios.create({
34
+  // baseURL: process.env.NODE_ENV === "production" ? getUrl() : "",
35
+  baseURL: getUrl(),
36
+  timeout: 30000 // 请求超时时间
37
+});
38
+
39
+//刷新token
40
+async function refreshToken() {
41
+  let tokenUrl = getTokenUrl();
42
+  let url = `${tokenUrl}/cas/jwt/token`;
43
+  await axios.get(url).then(
44
+    response => {
45
+      console.log(response.data);
46
+      if (response.data.status === true) {
47
+        Cookies.set("jwtToken", response.data.jwtToken, {
48
+          expires: 7,
49
+          path: "/"
50
+        });
51
+      }
52
+    },
53
+    error => {
54
+      console.log("错误", error.message);
55
+    }
56
+  );
57
+}
58
+
59
+//检查token有效期
60
+// function check() {
61
+//   const token = Cookies.get("jwtToken")
62
+//   if (!token) {
63
+//     return false
64
+//   }
65
+//   let infostr = token.substring(token.indexOf(".") + 1, token.lastIndexOf("."))
66
+//   let Base64 = require("js-base64").Base64
67
+//   let info = Base64.decode(infostr)
68
+//   //解析token为对象json
69
+//   let infoObject = JSON.parse(info)
70
+//   //当前时间戳
71
+//   let current = new Date().getTime() / 1000
72
+//   //当有效期过期时需要删除本地的token以及续签token
73
+//   if (infoObject.exp < current) {
74
+//     Cookies.set("jwtToken", null, { expires: 0 })
75
+//     return false
76
+//   } else if (infoObject.exp - current < 60 * 30) {
77
+//     //当有效期还剩半小时过期时主动更新token
78
+//     refreshToken()
79
+//   }
80
+//   return true
81
+// }
82
+
83
+// http request 拦截器
84
+// 每次请求都为http头增加Authorization字段,其内容为token
85
+service.interceptors.request.use(
86
+  config => {
87
+    config.url = getUrl() + config.url;
88
+    //config.baseURL = getUrl()
89
+    // if (check()) {
90
+    // 判断是否存在token,如果存在的话,则每个http header都加上token
91
+    const token = Cookies.get("jwtToken");
92
+    //   config.headers.Authorization = token
93
+    // }
94
+    return config;
95
+  },
96
+  err => {
97
+    return Promise.reject(err);
98
+  }
99
+);
100
+
101
+// http response 拦截器
102
+// 针对响应代码确认跳转到对应页面
103
+service.interceptors.response.use(
104
+  response => {
105
+    //token失效拦截
106
+    if (response.data.code == 1001) {
107
+      //访问后场失败:1001 token失效
108
+      //清空token
109
+      //清空首页的vuex的state
110
+      //   store.commit("user/setIsLogin", false)
111
+      //   store.commit("user/setAcctInfo", {})
112
+      //跳转到首页
113
+      //router.push('/home');
114
+      if (!loseToken) {
115
+        Message({
116
+          message: "登录账号已过期或无访问权限,请重新登录",
117
+          type: "error",
118
+          showClose: true
119
+        });
120
+      }
121
+      loseToken = true;
122
+      setTimeout(() => {
123
+        loseToken = false;
124
+      }, 5000);
125
+      top.location = 'https://park.lhzhtc.cn/SaaS-Platform';
126
+      return Promise.reject(response);
127
+    }
128
+    //业务异常拦截 (code8)
129
+    else if (response.data.code == 8) {
130
+      Message({
131
+        message: `${response.data.msg}`,
132
+        type: "warning",
133
+        showClose: true
134
+      });
135
+      return Promise.reject(response);
136
+    }
137
+    //运行时异常拦截 (不显示具体信息)
138
+    else if (response.data.code == 9) {
139
+      Message({
140
+        message: "系统内部错误,请联系管理员或稍后重试",
141
+        type: "error",
142
+        showClose: true
143
+      });
144
+      return Promise.reject(response);
145
+    }
146
+    return Promise.resolve(response.data);
147
+  },
148
+  error => {
149
+    if (
150
+      error.code == "ECONNABORTED" ||
151
+      error.message.indexOf("timeout") != -1
152
+    ) {
153
+      ("请求超时");
154
+    }
155
+    if (!serverError) {
156
+      Message({
157
+        message: `连接服务器错误:${error.message}`,
158
+        type: "error",
159
+        showClose: true
160
+      });
161
+    }
162
+    serverError = true;
163
+    setTimeout(() => {
164
+      serverError = false;
165
+    }, 5000);
166
+    return Promise.reject(error); // 返回接口返回的错误信息
167
+  }
168
+);
169
+
170
+export default service;