daikins/.svn/pristine/6b/6bbb0dcec16df90ad830e6e3689...

176 lines
5.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import axios from 'axios'
// import type { AxiosRequestConfig } from 'axios';
import { token } from "@/stores/modules/user";
import { message } from "./message";
import router from '@/router';
const TOKEN_KEY = "token";
declare module 'axios' {
export interface AxiosRequestConfig {
showLoading?: boolean
// [自定义属性声明]
}
}
// const { createMessage, createWarningModal } = useMessage()
// 创建axios实例
const service = axios.create({
// 服务接口请求
baseURL: "/test-api",
// 超时设置
timeout: 15000,
headers: { 'Content-Type': 'application/json;charset=utf-8;' },
showLoading: false
})
// let loading: any;
// const [openFullLoading, closeFullLoading] = useLoading({
// tip: '拼命加载中,请稍后...'
// })
//正在请求的数量
let requestCount: number = 0
//显示loading
const showLoading = () => {
if (requestCount === 0) {
//加载中显示样式可以自行修改
// loading = ElLoading.service({
// text: "拼命加载中,请稍后...",
// background: 'rgba(0, 0, 0, 0.7)',
// spinner: 'el-icon-loading',
// })
message.loading('请求中...')
}
requestCount++
}
//隐藏loading
const hideLoading = () => {
requestCount--
if (requestCount == 0) {
// loading.close()
message.destroyAll()
}
}
// 请求拦截
service.interceptors.request.use(
(config) => {
// config.showLoading
if (config.showLoading) {
showLoading()
}
if (token) config.headers[TOKEN_KEY] = unref(token);
// if (getToken()) {
// // 是否需要设置 token放在请求头
// config.headers['token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
// }
// get请求映射params参数
if (config.method === 'get' && config.params) {
let url = config.url + '?'
for (const propName of Object.keys(config.params)) {
const value = config.params[propName]
const part = encodeURIComponent(propName) + '='
if (value !== null && typeof value !== 'undefined') {
// 对象处理
if (typeof value === 'object') {
for (const key of Object.keys(value)) {
const params = propName + '[' + key + ']'
const subPart = encodeURIComponent(params) + '='
url += subPart + encodeURIComponent(value[key]) + '&'
}
} else {
url += part + encodeURIComponent(value) + '&'
}
}
}
url = url.slice(0, -1)
config.params = {}
config.url = url
}
return config
},
(error) => {
// console.log(error)
Promise.reject(error)
}
)
// 响应拦截器
service.interceptors.response.use(
async (response: any) => {
// console.log('响应拦截器res', response)
// if (res.config.showLoading) {
// showLoading()
// }
hideLoading()
// 未设置状态码则默认成功状态
const { data, status } = response;
if (data instanceof Blob || data instanceof ArrayBuffer) {
if (response.headers["content-disposition"]) {
const fileName = response.headers["content-disposition"]
?.split(";")[1]
?.split("=")[1];
return {
data,
fileName,
};
}
else {
return Promise.reject("没有访问权限");
}
}
const { errCode, code, msg } = data || {};
const errMsg = data?.errMsg || data?.message || msg;
// console.log(11, code, errMsg)
if(code === 2000){
await router.push('/');
}
if (![0, 200].includes(code)) {
// if(errMsg==='用户未登录')
// { message.error(errMsg);}
// else if(errMsg==='密码不正确'){
// message.error(errMsg);
// }
// else if(errMsg==="账户信息查找为空"){
// message.error(errMsg);
// }
// else{ message.error("服务器升级维护中,请稍后重试!")}\
message.error(errMsg);
return Promise.reject(errMsg);
}
if (/^[4|5].*/.test(code || errCode || status)) {
// console.error('> axios(interceptors.response): ', errMsg);
message.error(errMsg);
// message.error("服务器访问过多,请稍后重试!");
// 处理未登录token过期等 情况
// if (code !== 404 && /^[4].*/.test(code || errCode || status)) {
// await app.fedLogout();
// }
return Promise.reject(data);
}
return data;
},
(error) => {
// console.log('err' + error)
hideLoading()
let { message } = error
if (message == 'Network Error') {
message = '后端接口连接异常'
} else if (message.includes('timeout')) {
message = '系统接口请求超时'
} else if (message.includes('Request failed with status code')) {
message = '系统接口' + message.substr(message.length - 3) + '异常'
}
message.err("服务器升级维护中,请稍后重试!")
return Promise.reject(error)
}
)
export default service