import axios from 'axios'; import Vue from 'vue'; import router from '../router'; import { notify } from '@/utils/tool'; axios.defaults.withCredentials = true /** * 请求拦截器:添加token */ axios.interceptors.request.use(function (config) { // 在发送请求之前做些什么 if (config.url.indexOf('api/') === 0) { config.url = `${process.env.API_HOST}${config.url.slice(4)}`; } //若token存在,则在每次请求头中加入token // if (sessionStorage.token) { // // config.headers.common['x-access-token'] = sessionStorage.token; // config.headers.common['Authorization'] = 'Bearer ' + sessionStorage.token; // } return config; }, function (error) { // 对请求错误做些什么 return Promise.reject(error); }); //拦截器,访问网络异常时的提示 axios.interceptors.response.use( response => { return response; }, error => { if (error.response) { switch (error.response.status) { case 401: if (router.currentRoute.fullPath != '/') { notify.error('登录超时,请重新登录'); sessionStorage.clear(); router.push({ path: "/" }); } break; } } return Promise.reject(error); // 返回接口返回的错误信息 } ); export async function fetchApi(path, params, config) { const [method, fullpath] = mapApiPathToFullPath(path); try { const res = await (method === 'GET' ? axios.get(fullpath, { params }, config) : axios.post(fullpath, params, config) ); return res.data; } catch (e) { if (e.response && e.response.status) { switch (e.response.status) { case 404: return { Code: 404, Msg: '找不到指定的服务。', }; default: return { Code: 503, Msg: '服务异常,请稍后再试。', }; } } console.error(e); return { Code: 503, Msg: '服务异常,请稍后再试。', }; } } export function wrapErrorHint(response) { if (response.Code !== 0) { // notify.error(response.Msg); var title = response.Code ? (response.Code).toString() : ''; var type ="error"; if(response.Code === 404){ type = "warning"; } Vue.prototype.$notify({ message:response.Msg, title:title + '错误', type: type }) } return response; } export default axios; function mapApiPathToFullPath(path) { const [service] = path.split('/'); const prefix = ['template', 'project', 'folder', 'file'].indexOf(service) !== -1 ? 'pms' : 'cms'; const fullpath = `api/${prefix}/${service === 'authentication' ? '' : 'v1/'}${path}`; let method = 'GET'; switch (path) { case 'authentication/login': case 'company/addCompany': case 'company/queryGeneralOverview': case 'company/queryProviceTree': case 'company/updateCompanyById': case 'dept/addDept': case 'dept/updateDept': case 'user/addUser': case 'user/resetPassWord': case 'user/updateUser': case 'template/createTemplate': case 'template/fileExchange': case 'template/updateTemplate': case 'template/uploadingXmind': case 'template/addTemplateNodeModelFile': case 'template/createNestedRelevance': case 'template/connectNestTemplateFolder': case "folder/createSubfolder": case "project/createProject": case "project/editProject": case "project/assignedWork": case "file/addArchMilesStone": case "file/addFile": case "file/updateFile": case "file/fileCoordinationChange": case "operation/record": // case 'template/deleteTemplateNodeModelFile': method = 'POST'; break; // case 'authentication/loginOut': // case 'company/deleteCompanyById': // case 'company/disablEenableCompanyByCompanyId': // case 'company/queryCompanyById': // case 'company/queryCompanyByProviceIdAndIndustryId': // case 'dept/deleteDeptByDeptId': // case 'dept/queryDeptByDeptId': // case 'dept/queryDeptsByDeptId': // case 'user/deleteUser': // case 'user/queryUserByUserId': // case 'user/queryUsersByDeptId': default: method = 'GET'; break; } return [method, fullpath]; }