axios.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  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. cancelButtonClass: "el-button--primary",
  46. confirmButtonClass: "el-button--default-act",
  47. type: "error",
  48. callback: action => {
  49. if (action !== "confirm") return;
  50. Vue.ls.clear();
  51. router.push({ name: "Login" });
  52. }
  53. });
  54. } else {
  55. Notification.error({ title: "错误提示", message });
  56. }
  57. return error;
  58. };
  59. /**
  60. * response format
  61. * {
  62. config, header, data, request, status, statusText
  63. }
  64. *
  65. */
  66. /**
  67. * successCallback 请求成功的回调
  68. * @param {Object} data Response中的data信息
  69. */
  70. const successCallback = data => {
  71. if (data.code === "200") {
  72. return data.data;
  73. } else {
  74. throw new Error(errorDataCallback(data));
  75. }
  76. };
  77. /**
  78. * get请求
  79. * @param {String} url 请求地址
  80. * @param {Object} datas 请求数据
  81. */
  82. const $get = (url, datas) => {
  83. const sqDatas = qs.stringify(mdData(datas), {
  84. arrayFormat: "brackets"
  85. });
  86. url += "?" + sqDatas;
  87. return axios
  88. .get(url)
  89. .then(rep => {
  90. return successCallback(rep.data);
  91. })
  92. .catch(error => {
  93. throw new Error(errorCallback(error));
  94. });
  95. };
  96. /**
  97. * post请求
  98. * @param {String} url 请求地址
  99. * @param {Object} datas 请求数据
  100. */
  101. const $post = (url, datas, config = {}) => {
  102. let sqDatas = {};
  103. if (datas.constructor === Object) {
  104. sqDatas = mdData(datas);
  105. } else {
  106. sqDatas = datas;
  107. }
  108. return axios
  109. .post(url, sqDatas, config)
  110. .then(rep => {
  111. return successCallback(rep.data);
  112. })
  113. .catch(error => {
  114. throw new Error(errorCallback(error));
  115. });
  116. };
  117. /**
  118. * delete请求
  119. * @param {String} url
  120. * @param {Object} datas
  121. */
  122. const $del = (url, datas) => {
  123. let sqDatas = "";
  124. if (datas) {
  125. sqDatas = qs.stringify(datas, { arrayFormat: "brackets" });
  126. url += "?" + sqDatas;
  127. }
  128. return axios
  129. .delete(url)
  130. .then(rep => {
  131. return rep.data;
  132. })
  133. .catch(error => {
  134. throw new Error(errorCallback(error));
  135. });
  136. };
  137. /**
  138. * put 请求
  139. * @param {String} url 请求地址
  140. * @param {Object} datas 请求数据
  141. */
  142. const $put = (url, datas) => {
  143. let sqDatas = "";
  144. if (datas) {
  145. sqDatas = qs.stringify(datas);
  146. }
  147. return axios
  148. .put(url, sqDatas)
  149. .then(rep => {
  150. return rep.data;
  151. })
  152. .catch(error => {
  153. throw new Error(errorCallback(error));
  154. });
  155. };
  156. /**
  157. * patch请求
  158. * @param {String} url 请求地址
  159. * @param {Object} datas 请求数据
  160. */
  161. const $patch = (url, datas) => {
  162. let sqDatas = "";
  163. if (datas) {
  164. sqDatas = qs.stringify(datas);
  165. }
  166. return axios
  167. .patch(url, sqDatas)
  168. .then(rep => {
  169. return rep.data;
  170. })
  171. .catch(error => {
  172. throw new Error(errorCallback(error));
  173. });
  174. };
  175. export { $get, $post, $del, $put, $patch };