UNPKG

w-vue-middle

Version:

统一公共服务组件

178 lines (165 loc) 5.3 kB
/* * @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;