axios.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. import axios from "axios";
  2. import qs from "qs";
  3. import { MessageBox, Notification } from "element-ui";
  4. import router from "../router";
  5. import Vue from "vue";
  6. const mdData = datas => {
  7. return {
  8. ...datas,
  9. schoolId: Vue.ls.get("schoolId"),
  10. userId: Vue.ls.get("user", { id: "" }).id
  11. };
  12. };
  13. /**
  14. * errorCallback 请求失败的回调
  15. * @param {Object} error 请求失败时的错误信息
  16. */
  17. const errorCallback = error => {
  18. let message = "";
  19. if (error.response) {
  20. message =
  21. (error.response.data && error.response.data.message) || "服务错误";
  22. } else if (error.request) {
  23. message = "请求错误";
  24. if (error.message.indexOf("timeout") > -1) {
  25. message = "请求超时";
  26. }
  27. } else {
  28. return error;
  29. }
  30. message = message.indexOf("###") !== -1 ? "参数错误" : message;
  31. Notification.error({ title: "错误提示", message });
  32. return error;
  33. };
  34. /**
  35. * errorDataCallback 请求成功,结果有误的回调
  36. * @param {Object} error Response中的data信息
  37. */
  38. const errorDataCallback = error => {
  39. let message = error.message || "数据错误";
  40. message = message.indexOf("###") !== -1 ? "参数错误" : message;
  41. // TODO:自定义处理逻辑,以下为epcc实例
  42. if (error.code === "106") {
  43. message = "身份验证失效,请重新登录";
  44. MessageBox.confirm(message, "重新登陆?", {
  45. type: "error",
  46. callback: action => {
  47. if (action !== "confirm") return;
  48. Vue.ls.clear();
  49. router.push({ name: "Login" });
  50. }
  51. });
  52. } else {
  53. Notification.error({ title: "错误提示", message });
  54. }
  55. return error;
  56. };
  57. /**
  58. * response format
  59. * {
  60. config, header, data, request, status, statusText
  61. }
  62. *
  63. */
  64. /**
  65. * successCallback 请求成功的回调
  66. * @param {Object} data Response中的data信息
  67. */
  68. const successCallback = data => {
  69. if (data.code === "200") {
  70. return data.data;
  71. } else {
  72. throw new Error(errorDataCallback(data));
  73. }
  74. };
  75. /**
  76. * get请求
  77. * @param {String} url 请求地址
  78. * @param {Object} datas 请求数据
  79. */
  80. const $get = (url, datas) => {
  81. const sqDatas = qs.stringify(mdData(datas), {
  82. arrayFormat: "brackets"
  83. });
  84. url += "?" + sqDatas;
  85. return axios
  86. .get(url)
  87. .then(rep => {
  88. return successCallback(rep.data);
  89. })
  90. .catch(error => {
  91. throw new Error(errorCallback(error));
  92. });
  93. };
  94. /**
  95. * post请求
  96. * @param {String} url 请求地址
  97. * @param {Object} datas 请求数据
  98. */
  99. const $post = (url, datas, config = {}) => {
  100. let sqDatas = {};
  101. if (datas.constructor === Object) {
  102. sqDatas = mdData(datas);
  103. } else {
  104. sqDatas = datas;
  105. }
  106. return axios
  107. .post(url, sqDatas, config)
  108. .then(rep => {
  109. return successCallback(rep.data);
  110. })
  111. .catch(error => {
  112. throw new Error(errorCallback(error));
  113. });
  114. };
  115. /**
  116. * delete请求
  117. * @param {String} url
  118. * @param {Object} datas
  119. */
  120. const $del = (url, datas) => {
  121. let sqDatas = "";
  122. if (datas) {
  123. sqDatas = qs.stringify(datas, { arrayFormat: "brackets" });
  124. url += "?" + sqDatas;
  125. }
  126. return axios
  127. .delete(url)
  128. .then(rep => {
  129. return rep.data;
  130. })
  131. .catch(error => {
  132. throw new Error(errorCallback(error));
  133. });
  134. };
  135. /**
  136. * put 请求
  137. * @param {String} url 请求地址
  138. * @param {Object} datas 请求数据
  139. */
  140. const $put = (url, datas) => {
  141. let sqDatas = "";
  142. if (datas) {
  143. sqDatas = qs.stringify(datas);
  144. }
  145. return axios
  146. .put(url, sqDatas)
  147. .then(rep => {
  148. return rep.data;
  149. })
  150. .catch(error => {
  151. throw new Error(errorCallback(error));
  152. });
  153. };
  154. /**
  155. * patch请求
  156. * @param {String} url 请求地址
  157. * @param {Object} datas 请求数据
  158. */
  159. const $patch = (url, datas) => {
  160. let sqDatas = "";
  161. if (datas) {
  162. sqDatas = qs.stringify(datas);
  163. }
  164. return axios
  165. .patch(url, sqDatas)
  166. .then(rep => {
  167. return rep.data;
  168. })
  169. .catch(error => {
  170. throw new Error(errorCallback(error));
  171. });
  172. };
  173. export { $get, $post, $del, $put, $patch };