|
@@ -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;
|