// 统一处理业务逻辑 import code from '~/map/rcodeMap_esm' 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.NotPermission]: { // msg: code[code.NotPermission].msg, // ok: code[code.NotPermission].ok, // type: code[code.NotPermission].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 }