request.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import {
  2. baseURL
  3. } from './env.js'
  4. import {
  5. api
  6. } from './api.js'
  7. // 请求拦截
  8. const fetch = (url, opt) => {
  9. uni.showLoading({
  10. mask: true
  11. })
  12. let urls = (api[opt.url]?.url || api[url]?.url);
  13. let params = opt.params ? ('?' + Object.keys(opt.params).map(key => key + '=' + opt.params[key]).join('&')) : ''
  14. opt.url = uni.$baseUrl + urls + params
  15. opt.method = opt.method || "GET";
  16. var header = {}
  17. // 是否禁用token
  18. if (!opt.hideToken) {
  19. if (uni.getStorageSync('token')) {
  20. header = {
  21. Authorization: 'Bearer ' + uni.getStorageSync('token')
  22. }
  23. }
  24. }
  25. // 带入租户编号
  26. if (url === "login") opt.header["tenant-id"] = 122;
  27. opt.header = {
  28. ...opt.header,
  29. ...header
  30. }
  31. // console.log(opt);
  32. opt.data = opt.data || {};
  33. return new Promise((resolve, reject) => {
  34. let options = {}
  35. Object.keys(opt).map(key => {
  36. if (key !== "params") {
  37. return options[key] = opt[key]
  38. }
  39. })
  40. // uni.request(options)
  41. // .then(res => {
  42. // // 响应拦截
  43. // const {
  44. // code
  45. // } = res.data
  46. // if (code == 200) {
  47. // resolve(res.data)
  48. // console.log("请求成功")
  49. // }
  50. // if (code == 401) {
  51. // uni.reLaunch({
  52. // url: "/pages/login/loginPage"
  53. // })
  54. // // console.log("未授权,跳转回登录页")
  55. // }
  56. // uni.hideLoading();
  57. // resolve(res.data);
  58. // // resolve(res.data)
  59. // })
  60. // .catch(err => {
  61. // uni.hideLoading();
  62. // // 异常处理
  63. // console.info("网络异常", err);
  64. // reject(err)
  65. // })
  66. uni.request(options)
  67. .then(res => {
  68. if (!res || !res.data) {
  69. resolve({ code: -1, msg: '接口返回数据异常' });
  70. return;
  71. }
  72. const { code } = res.data;
  73. if (code == 0 || code == 200) {
  74. resolve(res.data);
  75. console.log("请求成功");
  76. return;
  77. }
  78. if (code == 401) {
  79. uni.reLaunch({ url: "/pages/login/loginPage" });
  80. resolve(res.data);
  81. return;
  82. }
  83. // 关键:所有情况都 resolve,不改调用方写法
  84. resolve(res.data);
  85. })
  86. .catch(err => {
  87. console.info("网络异常", err);
  88. let msg = '网络异常';
  89. if (err?.errMsg?.includes('timeout')) {
  90. msg = '请求超时,请稍后重试';
  91. } else if (err?.errMsg === 'request:fail') {
  92. msg = '网络连接失败,请检查网络';
  93. } else if (err?.errMsg?.includes('request:fail abort')) {
  94. msg = '请正确配置地址';
  95. } else if (err?.errMsg) {
  96. msg = err.errMsg;
  97. }
  98. resolve({ code: -1, msg });
  99. })
  100. .finally(() => {
  101. uni.hideLoading();
  102. });
  103. })
  104. }
  105. export {
  106. fetch
  107. }