index.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. import axios from 'axios'
  2. import qs from 'qs'
  3. import util from '@/js/util'
  4. import { TIME_OUT } from '@/config'
  5. import router from '@/router';
  6. import { Message } from 'element-ui'
  7. import { showLoading, hideLoading } from './loading';
  8. // 网络请求前拦截器
  9. axios.interceptors.request.use(resquest => {
  10. console.log(resquest)
  11. showLoading();
  12. // if(resquest && resquest.data && typeof (resquest.data) === 'object'){
  13. // 若每个接口需要添加时间戳时
  14. // resquest.data.currentDateTime = util.getFormatDate('yyyy-mm-dd hh:mm:ss')
  15. // }
  16. return resquest
  17. }, error => {
  18. console.log(error)
  19. return Promise.reject(error)
  20. })
  21. // 网络响应后拦截器
  22. // 响应拦截器
  23. axios.interceptors.response.use(
  24. response => {
  25. hideLoading();
  26. if (response && response.status === 200 || response && response.status === 304) {
  27. return Promise.resolve(response);
  28. } else {
  29. return Promise.reject(response);
  30. }
  31. },
  32. // 服务器状态码不是200的情况
  33. error => {
  34. hideLoading();
  35. if (error.response.status) {
  36. switch (error.response.status) {
  37. // 401: 未登录
  38. // 未登录则跳转登录页面,并携带当前页面的路径
  39. // 在登录成功后返回当前页面,这一步需要在登录页操作。
  40. case 401:
  41. Message.error('登陆信息失效,请重新登录')
  42. localStorage.removeItem("accessToken")
  43. router.replace({
  44. path: '/',
  45. query: { redirect: router.currentRoute.fullPath }
  46. });
  47. break;
  48. // 403 token过期
  49. // 登录过期对用户进行提示
  50. // 清除本地token和清空vuex中token对象
  51. // 跳转登录页面
  52. case 403:
  53. Message.error('登陆失效,请重新登录')
  54. // 清除token
  55. localStorage.removeItem("accessToken")
  56. // 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面
  57. setTimeout(() => {
  58. router.replace({
  59. path: '/',
  60. query: {
  61. redirect: router.currentRoute.fullPath
  62. }
  63. });
  64. }, 1000);
  65. break;
  66. // 404请求不存在
  67. case 404:
  68. Message.error('404 Not Found')
  69. break;
  70. // 其他错误,直接抛出错误提示
  71. default:
  72. Message.error('网络错误')
  73. }
  74. return Promise.reject(error.response);
  75. }
  76. // else {
  77. // Message.error('登陆失效,请重新登录')
  78. // localStorage.removeItem("accessToken")
  79. // router.replace({
  80. // path: '/',
  81. // query: { redirect: router.currentRoute.fullPath }
  82. // });
  83. // }
  84. }
  85. );
  86. // 数据统一处理来自网络及服务器的错误
  87. function checkStatus (response) {
  88. console.log("11123456")
  89. if (response && response.status === 200 || response && response.status === 304){
  90. // Message.success('请求成功')
  91. return response.data
  92. }
  93. // if (response && response.status === 401){
  94. // localStorage.removeItem("accessToken")
  95. // router.replace({
  96. // path: '/' // 到登录页重新获取token
  97. // })
  98. // Message.error('登陆失效,请重新登录')
  99. // }
  100. // if (response && response.status === 404){
  101. // router.replace({
  102. // path: '*' // 到登录页重新获取token
  103. // })
  104. // Message.error('404 Not Found')
  105. // }
  106. // if (response && response.status === 500){
  107. // router.replace({
  108. // path: '*' // 到登录页重新获取token
  109. // })
  110. // Message.error('服务器问题')
  111. // } else {
  112. // Message.error('登陆失效,请重新登录')
  113. // localStorage.removeItem("accessToken")
  114. // router.replace({
  115. // path: '/' // 到登录页重新获取token
  116. // })
  117. // return response && response.statusText || '网络错误'
  118. // }
  119. }
  120. // 处理来自程序的异常
  121. function checkCode (response) {
  122. console.log("chucuole")
  123. if (response.status && response.status !== 'ok'){
  124. response.error = response.error || '出错了!'
  125. }
  126. return response
  127. }
  128. let accessToken = localStorage.getItem("accessToken")
  129. // let accessToken = "evbOfyzBDlwwi2Tn8KTc5h3sWKsbrpbiazL7wYh7vyTs9KtJ1vANq6j3DmOwFjbL"
  130. // export default ({method = 'post', url = '', params = {}}) => {
  131. // return new Promise((resolve, reject) => {
  132. // axios[method.toLowerCase()](url, params).then(response => {
  133. // resolve(response)
  134. // }, err => {
  135. // reject(err)
  136. // }).catch(err => {
  137. // reject(err)
  138. // })
  139. // })
  140. // }
  141. export default {
  142. Tokenpost (url, data) {
  143. const params = data;
  144. return axios({
  145. method:'post',
  146. // url,
  147. url: `${url}?${qs.stringify(params)}`,
  148. timeout: TIME_OUT,
  149. data,
  150. // data: qs.stringify(data),
  151. headers:{
  152. 'Content-Type': 'application/json',
  153. // 'Content-Type':'application/x-www-form-urlencoded'
  154. }
  155. }).then(checkStatus).then(checkCode)
  156. },
  157. post (url, data) {
  158. if (!accessToken){
  159. accessToken = localStorage.getItem("accessToken");
  160. }
  161. const params = {accessToken};
  162. return axios({
  163. method:'post',
  164. // url,
  165. url: `${url}?${qs.stringify(params)}`,
  166. timeout: TIME_OUT,
  167. data,
  168. // data: qs.stringify(data),
  169. headers:{
  170. 'Content-Type': 'application/json',
  171. // 'Content-Type':'application/x-www-form-urlencoded'
  172. }
  173. }).then(checkStatus).then(checkCode)
  174. },
  175. get (url, params){
  176. return axios({
  177. method: 'get',
  178. url: `${url}?${qs.stringify(params)}`,
  179. timeout: TIME_OUT,
  180. headers:{
  181. 'Content-Type':'text/plain',
  182. },
  183. }).then(checkStatus).then(checkCode)
  184. },
  185. }