http.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  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. let url=process.env.VUE_APP_BASE+'/marking/#/login';//退出到考阅登录页
  86. window.location.href = url;
  87. }
  88. return Promise.resolve(res)
  89. } else {
  90. return Promise.reject(res)
  91. }
  92. },
  93. error => {
  94. console.log('err----' + error) // for debug
  95. if (error.response.status == 500) {
  96. Message({
  97. message: '网络请求超时,请重试!',
  98. type: 'warning'
  99. })
  100. }
  101. return Promise.reject(error)
  102. }
  103. )
  104. service2.interceptors.response.use(
  105. response => {
  106. hideLoading(); // loading end
  107. const res = response
  108. if (res.config.responseType == "blob") {
  109. return res;
  110. }
  111. // if the custom code is not 20000, it is judged as an error.
  112. if (res.data.code) {
  113. if (res.data.code >= 400) {
  114. Message(
  115. {
  116. message: res.data.msg,
  117. type: 'warning',
  118. duration: 5,
  119. })
  120. }
  121. if (res.data.code === 401) {
  122. store.dispatch("adminUser/adminLogout").then(() => {
  123. // router.push('/login')
  124. }).catch(err => {
  125. console.log(err)
  126. })
  127. }
  128. return Promise.resolve(res)
  129. } else {
  130. return Promise.reject(res)
  131. }
  132. },
  133. error => {
  134. console.log('err----' + error) // for debug
  135. if (error.response.status == 500) {
  136. Message({
  137. message: '网络请求超时,请重试!',
  138. type: 'warning'
  139. })
  140. }
  141. return Promise.reject(error)
  142. }
  143. )
  144. export { service1, service2 };
  145. /**
  146. * fetch 请求方法
  147. * @param url
  148. * @param params
  149. * @returns {Promise}
  150. */
  151. export function get(url, params = {}, useService1 = false,loginUrl) {
  152. const service = useService1 ? service2 : service1;
  153. return new Promise((resolve, reject) => {
  154. service.get(url, {
  155. params: {
  156. ...params
  157. }
  158. })
  159. .then(response => {
  160. resolve(response.data)
  161. })
  162. .catch(err => {
  163. reject(err)
  164. })
  165. })
  166. }
  167. export function downLoadByBlob(url, params = {}, useService1 = false) {
  168. const service = useService1 ? service2 : service1;
  169. return service({
  170. method: 'GET',
  171. url: url,
  172. responseType: 'blob',
  173. params,
  174. headers: {
  175. 'Accept': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/octet-stream'
  176. },
  177. })
  178. }
  179. /**
  180. * post 请求方法
  181. * @param url
  182. * @param data
  183. * @returns {Promise}
  184. */
  185. export function post(url, data = {}, useService1 = false, loginUrl) {
  186. const service = useService1 ? service2 : service1;
  187. return new Promise((resolve, reject) => {
  188. service.post(url, data, loginUrl).then(
  189. response => {
  190. resolve(response.data)
  191. },
  192. err => {
  193. reject(err)
  194. }
  195. )
  196. })
  197. }
  198. /**
  199. * 上传文件方法 (FormData)
  200. * @param url 请求地址
  201. * @param formData FormData对象
  202. * @param useService1 是否使用service2
  203. * @returns {Promise}
  204. */
  205. export function upload(url, formData, useService1 = false) {
  206. const service = useService1 ? service2 : service1;
  207. // 设置上传文件的headers
  208. const config = {
  209. headers: {
  210. 'Content-Type': 'multipart/form-data'
  211. }
  212. };
  213. return new Promise((resolve, reject) => {
  214. service.post(url, formData, config)
  215. .then(response => {
  216. resolve(response.data);
  217. })
  218. .catch(err => {
  219. reject(err);
  220. });
  221. });
  222. }
  223. /**
  224. * patch 方法封装
  225. * @param url
  226. * @param data
  227. * @returns {Promise}
  228. */
  229. export function patch(url, data = {}, useService1 = false) {
  230. const service = useService1 ? service2 : service1;
  231. return new Promise((resolve, reject) => {
  232. service.patch(url, data).then(
  233. response => {
  234. resolve(response.data)
  235. },
  236. err => {
  237. reject(err)
  238. }
  239. )
  240. })
  241. }
  242. /**
  243. * put 方法封装
  244. * @param url
  245. * @param data
  246. * @returns {Promise}
  247. */
  248. export function put(url, data = {}, useService1 = false) {
  249. const service = useService1 ? service2 : service1;
  250. return new Promise((resolve, reject) => {
  251. service.put(url, data).then(
  252. response => {
  253. resolve(response.data)
  254. },
  255. err => {
  256. reject(err)
  257. }
  258. )
  259. })
  260. }
  261. /**
  262. * delete 方法封装
  263. * @param url
  264. * @param params
  265. * @returns {Promise}
  266. */
  267. export function deleteRequest(url, params = {}, type, useService1 = false) {
  268. const service = useService1 ? service2 : service1;
  269. return new Promise((resolve, reject) => {
  270. if (type == 'arr') {
  271. service.delete(url, {
  272. data: {
  273. ...params
  274. }
  275. }).then(
  276. response => {
  277. resolve(response.data)
  278. },
  279. err => {
  280. reject(err)
  281. }
  282. )
  283. } else if (type == 'array') {
  284. service.delete(url, {
  285. data: [...params]
  286. }).then(
  287. response => {
  288. resolve(response.data)
  289. },
  290. err => {
  291. reject(err)
  292. }
  293. )
  294. } else {
  295. service.delete(url, {
  296. params: {
  297. ...params
  298. }
  299. }).then(
  300. response => {
  301. resolve(response.data)
  302. },
  303. err => {
  304. reject(err)
  305. }
  306. )
  307. }
  308. })
  309. }