request.ts
4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import axios from 'axios'
import router from './../router/index';
import {loginMain} from './../store/index'
import {storeToRefs} from "pinia";
let loginAct = loginMain()
let {getStoreToken} = storeToRefs(loginAct)
import {setToken, getToken, removeToken} from '../utils/auth'
// 创建axios实例
const request = axios.create({
baseURL: '/api',// 所有的请求地址前缀部分(没有后端请求不用写)
timeout: 120000, // 请求超时时间(毫秒)
withCredentials: true,// 异步请求携带cookie
// headers: {
// 设置后端需要的传参类型
// 'Content-Type': 'application/json',
// 'token': x-auth-token',//一开始就要token
// 'X-Requested-With': 'XMLHttpRequest',
// },
})
// request拦截器
request.interceptors.request.use((config: object) => {
// 如果你要去localStor获取token
// let token = localStorage.getItem("x-auth-token");
if (getToken()) {
//添加请求头
config.headers["authorization"] = getToken()
}
return config
},
(error: any) => {
// 对请求错误做些什么
Promise.reject(error)
}
)
// response 拦截器
request.interceptors.response.use((response: any) => {
// 对响应数据做点什么
if (response.status === 200) {
const code = response.data && response.data.code;
const msg = response.data ? response.data.msg : '系统错误';
if (code === 200) {
// success
console.log(response.data)
return response.data
} else if (code === 4001 || code === 4002) {
// notoken error
loginAct.removeUserInfo()
router.push("/login")
return Promise.reject(new Error(msg))
} else if (code === 5000 || code === 6000 || code === 500) {
// error
ElMessage.error(msg)
return Promise.reject(new Error(msg))
} else if (code === 2010) {
} else if (code === 4003 || code === 3001) {
return response.data
} else {
// filter ajaxUrl
if (response.config.url.indexOf("reportDownload") === 0 && response.config.url.indexOf("downExcel") === 0) {
ElMessage.error(msg)
return Promise.reject(new Error(msg))
} else {
return response
}
}
} else {
ElMessage.error('请求超时请稍后重试')
}
}, (error: any) => {
// 对响应错误做点什么
return Promise.reject(error)
}
)
export function downloadFilePost(url: string, params: any) {
return request.post(url, params, {
responseType: 'blob',
timeout: 5*60*1000
}).then((res: any) => {
const temp =res.headers["content-disposition"].split(";")[1].split("filename=")[1];
const fileName = decodeURIComponent(temp)
const blob = new Blob([res.data])
if ('download' in document.createElement('a')) {
const eLink = document.createElement('a')
eLink.download = fileName
eLink.style.display = 'none'
eLink.href = URL.createObjectURL(blob)
document.body.appendChild(eLink)
eLink.click()
URL.revokeObjectURL(eLink.href)
document.body.removeChild(eLink)
} else {
navigator.msSaveBlob(blob, fileName)
}
}).catch((r) => {
console.error(r)
})
}
export function downloadFileGet(url: string) {
return request.get(url, {
responseType: 'blob'
}).then((res: any) => {
const temp =res.headers["content-disposition"].split(";")[1].split("filename=")[1];
const fileName = decodeURIComponent(temp)
const blob = new Blob([res.data])
if ('download' in document.createElement('a')) {
const eLink = document.createElement('a')
eLink.download = fileName
eLink.style.display = 'none'
eLink.href = URL.createObjectURL(blob)
document.body.appendChild(eLink)
eLink.click()
URL.revokeObjectURL(eLink.href)
document.body.removeChild(eLink)
} else {
navigator.msSaveBlob(blob, fileName)
}
/*let url = window.URL.createObjectURL(new Blob([data]));
let link = document.createElement("a");
link.href = url;
link.download = "11.xlxs";
document.body.appendChild(link);
link.click();
document.body.removeChild(link); // 释放掉blob对象*/
}).catch((res: any) => {
console.error(res)
})
}
export default request