/** * request 网络请求工具 * 更详细的 api 文档: https://github.com/umijs/umi-request */ import {extend} from 'umi-request'; import {notification} from 'antd'; import FormdataWrapper from "@/utils/object-to-formdata-custom"; import { getToken } from '@/utils/authority'; import { offline } from './Toast'; import systemConfig from '@/config/config'; const codeMessage = { 200: '服务器成功返回请求的数据。', 201: '新建或修改数据成功。', 202: '一个请求已经进入后台排队(异步任务)。', 204: '删除数据成功。', 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', 401: '用户没有权限(令牌、用户名、密码错误)。', 403: '用户得到授权,但是访问是被禁止的。', 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', 406: '请求的格式不可得。', 410: '请求的资源被永久删除,且不会再得到的。', 422: '当创建一个对象时,发生一个验证错误。', 500: '服务器发生错误,请检查服务器。', 502: '网关错误。', 503: '服务不可用,服务器暂时过载或维护。', 504: '网关超时。', }; /** * 异常处理程序 */ var canReportError =true; const errorHandler = error => { const {response} = error; if (response && response.status) { const errorText = codeMessage[response.status] || response.statusText; notification.error({ message: `请求错误`, description: errorText, }); if (response.status === 401) { // @HACK /* eslint-disable no-underscore-dangle */ return window.g_app._store.dispatch({ type: 'login/loginout', }); } }else{ if(canReportError){ notification.error({ message: `网络故障`, description: "请检查网络链接或联系管理员", }); canReportError=false; } } }; /** * 配置request请求时的默认参数 */ const umiRequest = extend({ errorHandler, // 默认错误处理 credentials: 'omit', // 默认请求是否带上cookie mode: 'cors', }); export const request = (url, data, options = {}) => { const pp = {...data,token: getToken()} const requestParams = FormdataWrapper(pp) // 由于自动添加前缀 这里暂时修改getUrl(url) return umiRequest(url, { data:requestParams, method: "POST", requestType: "form", ...options, }).then(response => { if(window.location.pathname.slice(0,15)==='/onestop/mobile'){ if(response.errCode||response.errMsg){ offline(response.errMsg,2) if(data.callback) data.callback(response) return } } if (!response) return; if(url.indexOf('UserApi/loginByCount') > -1){ if(response.errMsg === '用户不存在'){ console.error('在一站式服务大厅中无该用户'); return {token: ''}; } } if (response.errCode||response.errMsg) { notification.error({ message: `请求错误`, description: response.errMsg, }); return; } if (response.errcode) { notification.error({ message: `请求错误`, description: response.errmsg, }); return; } canReportError=true return response; }) }; const setRequestConfig = (config) => { return (url, data, options = {}) => { if (Array.isArray(url)) { return Promise.all(url.map((ags) => { return request(ags[0], ags[1], Object.assign({}, ags[2], config)); })) } return request(url, data, {...options, ...config}) } }; const createServerRequest = (config = {}) => { return setRequestConfig(config) }; export const apiRequest = createServerRequest({ method: "POST", prefix: systemConfig.sqlFormsServer || 'http://scjoyedu.eicp.net:18888/onestop/', }); export default request;