// 统一处理业务逻辑 import code from '~/map/rcodeMap' let rcodeHandleMap = { }; function registerHandle(rcode,handle){ rcodeHandleMap[rcode] = handle; } // 1. 获取当前url地址 // 2. 存储sessionStore // 3. 自动前往登陆页 function toLogin(){ let nowUrl = window.location.href; window.sessionStorage.setItem('lastUrl',nowUrl); window.location.href = '/login'; } let defaultFns = { [code.notMatch]: { msg: code[code.notMatch].msg, ok: code[code.notMatch].ok, type: code[code.notMatch].type, }, [code.ok]: { msg: code[code.ok].msg, ok: code[code.ok].ok, type: code[code.ok].type, }, [code.notParam]: { msg: code[code.notParam].msg, ok: code[code.notParam].ok, type: code[code.notParam].type, }, [code.notLogin]: { fn: toLogin, msg: code[code.notLogin].msg, ok: code[code.notLogin].ok, type: code[code.notLogin].type, }, [code.serverError]: { // fn: toLogin, msg: code[code.serverError].msg, ok: code[code.serverError].ok, type: code[code.serverError].type, }, [code.permissionDenied]: { msg: code[code.permissionDenied].msg, ok: code[code.permissionDenied].ok, type: code[code.permissionDenied].type, }, [code.customError]: { msg: code[code.customError].msg, ok: code[code.customError].ok, type: code[code.customError].type, }, [code.notFound]: { msg: code[code.notFound].msg, ok: code[code.notFound].ok, type: code[code.notFound].type, }, [code.apiError]: { msg: code[code.apiError].msg, ok: code[code.apiError].ok, type: code[code.apiError].type, }, [code.saveError]: { msg: code[code.saveError].msg, ok: code[code.saveError].ok, type: code[code.saveError].type, }, [code.dataRepeat]: { msg: code[code.dataRepeat].msg, ok: code[code.dataRepeat].ok, type: code[code.dataRepeat].type, }, [code.timeout]: { msg: '请求超时,'+code[code.dataRepeat].msg, ok: code[code.dataRepeat].ok, type: code[code.dataRepeat].type, }, } /** * 检查api返回值对应含义,普通服务器接口 * @param response axios 接口返回的请求值 * @param err * @param fns {object} 对应的rcocd绑定对应的函数 * @returns {{msg: string, ok: boolean, type: string ,res:object}} */ function checkResponseRcode(response,err,fns={}){ // 默认值 let keys = Object.keys(fns); let finalFns = { ...defaultFns } for(let field of keys){ if(finalFns[field]){ finalFns[field] = { ...finalFns[field], ...fns[field] } } } let res = {} if(err){return {ok: false, msg: err?err.message:defaultFns[0].msg,type: 'error',rcode : null};} let data = response.data; if(!data.rcode || !defaultFns[data.rcode]){ res = defaultFns[0]; return res; } // res = defaultFns[data.rcode] res.ok = finalFns[data.rcode].ok; res.msg = data.msg?data.msg:finalFns[data.rcode].msg; res.type = finalFns[data.rcode].type; res.rcode = data.rcode; res.res = data; // 执行相关操作函数 if(finalFns[data.rcode].fn){ finalFns[data.rcode].fn() } return res; } function checkErr(err){ console.log(err); } export default { checkResponseRcode, checkErr, registerHandle, toLogin }