http.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. /* eslint-disable */
  2. import axios from 'axios' // 引用axios
  3. import base from "../common/base";
  4. import {
  5. getToken, getAdminToken
  6. } from '@/utils/auth'
  7. import store from '@/store'
  8. import router from '@/router'
  9. import { Loading, Message } from 'element-ui';
  10. const service1 = axios.create({
  11. timeout: 120000 * 10
  12. });
  13. const service2 = axios.create({
  14. timeout: 120000 * 10
  15. });
  16. var loading = null; // loading
  17. /**
  18. * @param {Boolean} showLoading 是否显示loading
  19. * @param {string} loadingText 文案
  20. */
  21. function showLoading(config) {
  22. let data = config.method == 'get' ? config.params : config.data;
  23. if (data && data.showLoading) {
  24. loading = Loading.service({
  25. lock: true,
  26. text: data.loadingText || 'Loading...',
  27. spinner: 'el-icon-loading',
  28. background: 'rgba(0, 0, 0, 0.7)'
  29. });
  30. delete data.showLoading;
  31. if (data.loadingText) delete data.loadingText;
  32. }
  33. }
  34. function hideLoading() {
  35. if (loading) loading.close();
  36. }
  37. // axios 配置
  38. // axios.defaults.timeout = 120000 //设置接口响应时间
  39. service1.interceptors.request.use(
  40. config => {
  41. showLoading(config) // loading start
  42. // do something before request is sent
  43. if (store.getters.token) {
  44. config.headers['Authorization'] = getToken()
  45. }
  46. // 设置请求头
  47. // if(!config.headers["content-type"]) { // 如果没有设置请求头
  48. // if(config.method === 'post') {
  49. // config.headers["content-type"] = "application/x-www-form-urlencoded"; // post 请求
  50. // config.data = qs.stringify(config.data); // 序列化,比如表单数据
  51. // } else {
  52. // config.headers["content-type"] = "application/json"; // 默认类型
  53. // }
  54. // }
  55. return config
  56. }
  57. )
  58. service2.interceptors.request.use(
  59. config => {
  60. showLoading(config); // loading start
  61. if (store.getters.adminToken) {
  62. config.headers['Authorization'] = getAdminToken();
  63. }
  64. return config;
  65. }
  66. );
  67. // // response interceptor
  68. service1.interceptors.response.use(
  69. response => {
  70. hideLoading(); // loading end
  71. const res = response
  72. if (res.config.responseType == "blob") {
  73. return res;
  74. }
  75. // if the custom code is not 20000, it is judged as an error.
  76. if (res.data.code) {
  77. if (res.data.code >= 400) {
  78. // Message({message: res.data.msg,type: 'warning'})
  79. }
  80. if (res.data.code == 500) {
  81. // Message({message: res.data.msg,type: 'warning'})
  82. }
  83. if (res.data.code === 401) {
  84. //未登录 跳转到登录页
  85. window.location.href = base.STUDENT_LOGIN;
  86. }
  87. return Promise.resolve(res)
  88. } else {
  89. return Promise.reject(res)
  90. }
  91. },
  92. error => {
  93. console.log('err----' + error) // for debug
  94. if (error.response.status == 500) {
  95. Message({
  96. message: '网络请求超时,请重试!',
  97. type: 'warning'
  98. })
  99. }
  100. return Promise.reject(error)
  101. }
  102. )
  103. service2.interceptors.response.use(
  104. response => {
  105. hideLoading(); // loading end
  106. const res = response
  107. if (res.config.responseType == "blob") {
  108. return res;
  109. }
  110. // if the custom code is not 20000, it is judged as an error.
  111. if (res.data.code) {
  112. if (res.data.code >= 400) {
  113. Message(
  114. {
  115. message: res.data.msg,
  116. type: 'warning',
  117. duration: 5,
  118. })
  119. }
  120. if (res.data.code === 401) {
  121. store.dispatch("adminUser/adminLogout").then(() => {
  122. // router.push('/login')
  123. }).catch(err => {
  124. console.log(err)
  125. })
  126. }
  127. return Promise.resolve(res)
  128. } else {
  129. return Promise.reject(res)
  130. }
  131. },
  132. error => {
  133. console.log('err----' + error) // for debug
  134. if (error.response.status == 500) {
  135. Message({
  136. message: '网络请求超时,请重试!',
  137. type: 'warning'
  138. })
  139. }
  140. return Promise.reject(error)
  141. }
  142. )
  143. export { service1, service2 };
  144. /**
  145. * fetch 请求方法
  146. * @param url
  147. * @param params
  148. * @returns {Promise}
  149. */
  150. export function get(url, params = {}, useService1 = false,loginUrl) {
  151. const service = useService1 ? service2 : service1;
  152. return new Promise((resolve, reject) => {
  153. service.get(url, {
  154. params: {
  155. ...params
  156. }
  157. })
  158. .then(response => {
  159. resolve(response.data)
  160. })
  161. .catch(err => {
  162. reject(err)
  163. })
  164. })
  165. }
  166. export function downLoadByBlob(url, params = {}, useService1 = false) {
  167. const service = useService1 ? service2 : service1;
  168. return service({
  169. method: 'GET',
  170. url: url,
  171. responseType: 'blob',
  172. params,
  173. headers: {
  174. 'Accept': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/octet-stream'
  175. },
  176. })
  177. }
  178. /**
  179. * post 请求方法
  180. * @param url
  181. * @param data
  182. * @returns {Promise}
  183. */
  184. export function post(url, data = {}, useService1 = false, loginUrl) {
  185. const service = useService1 ? service2 : service1;
  186. return new Promise((resolve, reject) => {
  187. service.post(url, data, loginUrl).then(
  188. response => {
  189. resolve(response.data)
  190. },
  191. err => {
  192. reject(err)
  193. }
  194. )
  195. })
  196. }
  197. /**
  198. * 上传文件方法 (FormData)
  199. * @param url 请求地址
  200. * @param formData FormData对象
  201. * @param useService1 是否使用service2
  202. * @returns {Promise}
  203. */
  204. export function upload(url, formData, useService1 = false) {
  205. const service = useService1 ? service2 : service1;
  206. // 设置上传文件的headers
  207. const config = {
  208. headers: {
  209. 'Content-Type': 'multipart/form-data'
  210. }
  211. };
  212. return new Promise((resolve, reject) => {
  213. service.post(url, formData, config)
  214. .then(response => {
  215. resolve(response.data);
  216. })
  217. .catch(err => {
  218. reject(err);
  219. });
  220. });
  221. }
  222. /**
  223. * patch 方法封装
  224. * @param url
  225. * @param data
  226. * @returns {Promise}
  227. */
  228. export function patch(url, data = {}, useService1 = false) {
  229. const service = useService1 ? service2 : service1;
  230. return new Promise((resolve, reject) => {
  231. service.patch(url, data).then(
  232. response => {
  233. resolve(response.data)
  234. },
  235. err => {
  236. reject(err)
  237. }
  238. )
  239. })
  240. }
  241. /**
  242. * put 方法封装
  243. * @param url
  244. * @param data
  245. * @returns {Promise}
  246. */
  247. export function put(url, data = {}, useService1 = false) {
  248. const service = useService1 ? service2 : service1;
  249. return new Promise((resolve, reject) => {
  250. service.put(url, data).then(
  251. response => {
  252. resolve(response.data)
  253. },
  254. err => {
  255. reject(err)
  256. }
  257. )
  258. })
  259. }
  260. /**
  261. * delete 方法封装
  262. * @param url
  263. * @param params
  264. * @returns {Promise}
  265. */
  266. export function deleteRequest(url, params = {}, type, useService1 = false) {
  267. const service = useService1 ? service2 : service1;
  268. return new Promise((resolve, reject) => {
  269. if (type == 'arr') {
  270. service.delete(url, {
  271. data: {
  272. ...params
  273. }
  274. }).then(
  275. response => {
  276. resolve(response.data)
  277. },
  278. err => {
  279. reject(err)
  280. }
  281. )
  282. } else if (type == 'array') {
  283. service.delete(url, {
  284. data: [...params]
  285. }).then(
  286. response => {
  287. resolve(response.data)
  288. },
  289. err => {
  290. reject(err)
  291. }
  292. )
  293. } else {
  294. service.delete(url, {
  295. params: {
  296. ...params
  297. }
  298. }).then(
  299. response => {
  300. resolve(response.data)
  301. },
  302. err => {
  303. reject(err)
  304. }
  305. )
  306. }
  307. })
  308. }