request.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. // +----------------------------------------------------------------------
  2. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  3. // +----------------------------------------------------------------------
  4. // | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
  5. // +----------------------------------------------------------------------
  6. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  7. // +----------------------------------------------------------------------
  8. // | Author: CRMEB Team <admin@crmeb.com>
  9. // +----------------------------------------------------------------------
  10. import {
  11. HTTP_REQUEST_URL,
  12. HEADER,
  13. TOKENNAME,
  14. HEADERPARAMS
  15. } from '@/config/app';
  16. import {
  17. toLogin,
  18. checkLogin
  19. } from '../libs/login';
  20. import store from '../store';
  21. /**
  22. * 发送请求
  23. */
  24. function baseRequest(url, method, data, {
  25. noAuth = false,
  26. noVerify = false
  27. }, params) {
  28. let Url = HTTP_REQUEST_URL,
  29. header = HEADER
  30. if (params != undefined) {
  31. header = HEADERPARAMS;
  32. }
  33. if (!noAuth) {
  34. //登录过期自动登录
  35. if (!store.state.app.token && !checkLogin()) {
  36. toLogin();
  37. return Promise.reject({
  38. msg: '未登录'
  39. });
  40. }
  41. }
  42. //normal Token
  43. if (store.state.app.token && (url.split('/')[0] !== 'employee' || url === 'employee/merchant/belong/List' || url
  44. .includes('employee/merchant/active'))) header[TOKENNAME] = store.state.app.token;
  45. //manager Token
  46. if (store.state.app.managerToken && (url.split('/')[0] === 'employee' && url !== 'employee/merchant/belong/List' && !url
  47. .includes('employee/merchant/active'))) header[TOKENNAME] = store.state.app.managerToken;
  48. return new Promise((reslove, reject) => {
  49. uni.request({
  50. url: Url + '/api/front/' + url,
  51. method: method || 'GET',
  52. header: header,
  53. data: data || {},
  54. success: (res) => {
  55. if (noVerify)
  56. reslove(res.data, res);
  57. else if (res.data.code == 200)
  58. reslove(res.data, res);
  59. else if ([410000, 410001, 410002, 401, 402].indexOf(res.data.code) !== -1) {
  60. let routes = getCurrentPages();
  61. //获取当前页面路由
  62. let curRoute = routes[routes.length - 1].route
  63. //工作台内页面跳转登录前,先跳转到个人中心,防止双token陷入登录循环
  64. if(curRoute.split('/')[1]==='admin'){
  65. uni.switchTab({
  66. url:'/pages/user/index'
  67. })
  68. }
  69. store.commit("LOGOUT");
  70. toLogin();
  71. reject(res.data);
  72. } else if (res.data.code == 500) {
  73. if (res.data.message && res.data.message.indexOf('登录信息已过期') != -1) {
  74. store.commit("LOGOUT");
  75. }
  76. reject(res.data.message || '系统异常');
  77. } else if (res.data.code == 400) {
  78. reject(res.data.message || '参数校验失败');
  79. } else if (res.data.code == 404) {
  80. reject(res.data.message || '没有找到相关数据');
  81. } else if (res.data.code == 403) {
  82. reject(res.data.message || '没有相关权限');
  83. } else
  84. reject(res.data.message || '系统错误');
  85. },
  86. fail: (msg) => {
  87. reject('请求失败');
  88. }
  89. })
  90. });
  91. }
  92. const request = {};
  93. ['options', 'get', 'post', 'put', 'head', 'delete', 'trace', 'connect'].forEach((method) => {
  94. request[method] = (api, data, opt, params) => baseRequest(api, method, data, opt || {}, params)
  95. });
  96. export default request;