business.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. // 统一处理业务逻辑
  2. import code from '~/map/rcodeMap_esm'
  3. let rcodeHandleMap = {
  4. };
  5. function registerHandle(rcode,handle){
  6. rcodeHandleMap[rcode] = handle;
  7. }
  8. // 1. 获取当前url地址
  9. // 2. 存储sessionStore
  10. // 3. 自动前往登陆页
  11. function toLogin(){
  12. let nowUrl = window.location.href;
  13. window.sessionStorage.setItem('lastUrl',nowUrl);
  14. window.location.href = '/login';
  15. }
  16. let defaultFns = {
  17. // [code.NotMATCH]: {
  18. // msg: code[code.NotMATCH].msg,
  19. // ok: code[code.NotMATCH].ok,
  20. // type: code[code.NotMATCH].type,
  21. // },
  22. // [code.ok]: {
  23. // msg: code[code.ok].msg,
  24. // ok: code[code.ok].ok,
  25. // type: code[code.ok].type,
  26. // },
  27. // [code.NotParam]: {
  28. // msg: code[code.NotParam].msg,
  29. // ok: code[code.NotParam].ok,
  30. // type: code[code.NotParam].type,
  31. // },
  32. // [code.NotLogin]: {
  33. // fn: toLogin,
  34. // msg: code[code.NotLogin].msg,
  35. // ok: code[code.NotLogin].ok,
  36. // type: code[code.NotLogin].type,
  37. // },
  38. // [code.ServerError]: {
  39. // // fn: toLogin,
  40. // msg: code[code.ServerError].msg,
  41. // ok: code[code.ServerError].ok,
  42. // type: code[code.ServerError].type,
  43. // },
  44. // [code.NotPermission]: {
  45. // msg: code[code.NotPermission].msg,
  46. // ok: code[code.NotPermission].ok,
  47. // type: code[code.NotPermission].type,
  48. // },
  49. // [code.customError]: {
  50. // msg: code[code.customError].msg,
  51. // ok: code[code.customError].ok,
  52. // type: code[code.customError].type,
  53. // },
  54. // [code.NotFound]: {
  55. // msg: code[code.NotFound].msg,
  56. // ok: code[code.NotFound].ok,
  57. // type: code[code.NotFound].type,
  58. // },
  59. // [code.ApiError]: {
  60. // msg: code[code.ApiError].msg,
  61. // ok: code[code.ApiError].ok,
  62. // type: code[code.ApiError].type,
  63. // },
  64. // [code.SaveError]: {
  65. // msg: code[code.SaveError].msg,
  66. // ok: code[code.SaveError].ok,
  67. // type: code[code.SaveError].type,
  68. // },
  69. // [code.DataRepeat]: {
  70. // msg: code[code.DataRepeat].msg,
  71. // ok: code[code.DataRepeat].ok,
  72. // type: code[code.DataRepeat].type,
  73. // },
  74. // [code.timeout]: {
  75. // msg: '请求超时,'+code[code.DataRepeat].msg,
  76. // ok: code[code.DataRepeat].ok,
  77. // type: code[code.DataRepeat].type,
  78. // },
  79. }
  80. /**
  81. * 检查api返回值对应含义,普通服务器接口
  82. * @param response axios 接口返回的请求值
  83. * @param err
  84. * @param fns {object} 对应的rcocd绑定对应的函数
  85. * @returns {{msg: string, ok: boolean, type: string ,res:object}}
  86. */
  87. function checkResponseRcode(response,err,fns={}){
  88. // 默认值
  89. let keys = Object.keys(fns);
  90. let finalFns = {
  91. ...defaultFns
  92. }
  93. for(let field of keys){
  94. if(finalFns[field]){
  95. finalFns[field] = {
  96. ...finalFns[field],
  97. ...fns[field]
  98. }
  99. }
  100. }
  101. let res = {}
  102. if(err){return {ok: false, msg: err?err.message:defaultFns[0].msg,type: 'error',rcode : null};}
  103. let data = response.data;
  104. if(!data.rcode || !defaultFns[data.rcode]){
  105. res = defaultFns[0];
  106. return res;
  107. }
  108. // res = defaultFns[data.rcode]
  109. res.ok = finalFns[data.rcode].ok;
  110. res.msg = data.msg?data.msg:finalFns[data.rcode].msg;
  111. res.type = finalFns[data.rcode].type;
  112. res.rcode = data.rcode;
  113. res.res = data;
  114. // 执行相关操作函数
  115. if(finalFns[data.rcode].fn){
  116. finalFns[data.rcode].fn()
  117. }
  118. return res;
  119. }
  120. function checkErr(err){
  121. console.log(err);
  122. }
  123. export default {
  124. checkResponseRcode,
  125. checkErr,
  126. registerHandle,
  127. toLogin
  128. }