request.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { objToUrl } from '@/utils/index';
  2. function request(options) {
  3. return new Promise((resolve, reject) => {
  4. let _obj = {
  5. url: '',
  6. data: {},
  7. method: 'GET',
  8. header: {
  9. 'Content-Type': 'application/json;charset=UTF-8'
  10. }
  11. };
  12. const baseUrl = getApp().globalData.baseUrl
  13. Object.assign(_obj, options);
  14. _obj.header['X-AUTH-TOKEN'] = uni.getStorageSync('token');
  15. _obj.header['X-HEADER-APPID'] = 'WuyoKG1AcDZzLwxfhOAC+E16SeG3+mDqVYmsa/e5HRE=';
  16. _obj.url = baseUrl + _obj.url;
  17. _obj.method = _obj.method.toUpperCase();
  18. _obj.success = function(res) {
  19. if (_obj.url.indexOf('checkLogin') > -1) {
  20. resolve(res);
  21. } else if (res.data.status === '900010') {
  22. setTimeout(function() {
  23. wx.showToast({
  24. title: '登录已过期,请重新登录',
  25. icon: 'none',
  26. duration: 1000
  27. });
  28. }, 10);
  29. setTimeout(function() {
  30. const currentRoute = getRoutePath();
  31. mpvue.removeStorage({
  32. key: 'token'
  33. });
  34. const url = `/pages/login/login?lanuch=${currentRoute.lanuch}&path=` + encodeURIComponent(currentRoute.url);
  35. mpvue.reLaunch({ url });
  36. }, 1000);
  37. } else {
  38. resolve(res);
  39. }
  40. };
  41. _obj.fail = function(err) {
  42. reject(err);
  43. };
  44. _obj.complete = function() {};
  45. uni.request(_obj);
  46. });
  47. }
  48. function getRoutePath() {
  49. // eslint-disable-next-line no-undef
  50. const pages = getCurrentPages(); // 获取加载的页面
  51. const currentPage = pages[pages.length - 1]; // 获取当前页面的对象
  52. let url = currentPage.route; // 当前页面url
  53. const options = objToUrl(currentPage.options); // 如果要获取url中所带的参数可以查看options
  54. const lanuch = [
  55. 'pages/personCenter/personCenter',
  56. 'pages/myPackage/myPackage',
  57. 'pagesMe/personData/personData',
  58. 'pages/packageDetail/packageDetail',
  59. 'pages/chooseCar/chooseCar'
  60. ].includes(url);
  61. url = '/' + url;
  62. if (options.length) {
  63. url += '?' + options;
  64. }
  65. return {
  66. url,
  67. lanuch
  68. };
  69. }
  70. export default request;