w-vue-middle
Version:
统一公共服务组件
178 lines (165 loc) • 5.3 kB
JavaScript
/*
* @Author: Jason Liu
* @Date: 2022-03-15 10:31:27
* @Desc:
*/
/* *****通用查询前端添加条件规则****
F_chartType_like: "abc" -> like %abc%
F_chartType_eq: "abc" -> == "abc"
F_chartType_in: "a,b,c" -> in(a,b,c)
F_chartType_leftLike: "abc" -> like "%abc"
F_chartType_rightLike: "abc" -> like "abc%"
F_chartType_eq: "abc" -> == "abc"
ORDER_chartType_desc: 0 -> order by chartType desc
ORDER_chartType_asc: 0 -> order by chartType asc
*/
import axios from 'axios';
import { notification, message } from 'ant-design-vue';
// notification.open({
// message: "Notification Title",
// description: (h) => {
// return h(
// "div", {
// style: {
// "white-space": "pre-line",
// },
// },
// "This is the content of the notification. \n This is the content of the notification. This is the content of the notification."
// );
// },
// });
axios.defaults.withCredentials = true;
// 创建 axios 实例
const service = axios.create({
timeout: 6000000, // 请求超时时间
headers: { 'Content-Type': 'application/json' },
});
const noUser = () => {
//没有用户权限
if (!window.__POWERED_BY_QIANKUN__) {
$storage.clearToken();
} else {
//TODO:通知主应用,没有权限
}
};
const err = (error) => {
if (error.response) {
const data = error.response.data;
if (error.response.status === 403) {
message.error({
content: data.message,
key: 'eorr',
});
} else if (error.response.status === 401 && !(data.result && data.result.isLogin)) {
message.error({
content: 'Authorization verification failed',
key: 'eorr',
});
//TODO:没有登录权限的操作
}
}
return Promise.reject(error);
};
// request interceptor
service.interceptors.request.use((config) => {
const token = $storage.get('Bearer');
config.headers['X-LOCALE'] = $winexI18n.LanName;
if (token) {
config.headers['Authorization'] = `${$storage.get('tokey')}@${token}`; // 让每个请求携带自定义 token 请根据实际情况自行修改
config.headers['ticket'] = `${$storage.get('PORTAL_JTI')}`;
const accept_system_org = $storage.get('accept_system_org');
config.headers['Accept-system-org'] = accept_system_org;
} else {
noUser();
}
return config;
}, err);
// response interceptor
service.interceptors.response.use(
(response) => {
if (response.data instanceof Blob) {
return response.data;
} else {
try {
const eorrmessage =
response.data.message ||
response.data.msg ||
(response.data.errorDetail && response.data.errorDetail.message);
switch (`${response.data.code || response.data.status || response.data.success}`) {
case '200':
case 'true':
//接口调用成功
return response.data;
case '401':
//登录失效
message.error({
content: $t('请重新登录!'),
key: 'eorr',
});
noUser();
return Promise.resolve(eorrmessage || response);
case '10007':
$storage.remove('portalurl');
$storage.remove('authfailurl');
message.error({
content: eorrmessage,
key: 'eorr',
});
$storage.clearToken();
break;
case '500':
//接口异常
// modal.error({
// content: message,
// centered: true
// })
return Promise.reject({
eorrmessage: eorrmessage,
response: response,
});
default:
if (response.data.errorDetail) {
let info = response.data.errorDetail;
switch (`${response.data.errorDetail.code}`) {
case '401':
noUser();
break;
default:
notification.error({
key: 'eorr',
message: info.message,
description: info.detailMsg ? `${info.detailMsg}` : undefined,
});
break;
}
} else if (eorrmessage) {
message.error({
content: eorrmessage,
key: 'eorr',
});
}
return Promise.reject({
eorrmessage: eorrmessage,
response: response,
});
}
} catch (err) {
return Promise.reject(err.message);
}
}
},
(err) => {
// notification.error({ message: 'system hint', description: err.message })
try {
if (err.response.config.headers.weak) {
} else {
message.error({
content: $t('服务器异常,请联系管理员'),
key: 'eorr',
});
}
} catch (error) {}
return Promise.reject(err);
},
);
export default service;