index.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. import router from '../router'
  2. import axios from 'axios'
  3. import qs from 'qs'
  4. import config from '../../static/config'
  5. import {
  6. Message,
  7. Loading
  8. } from 'element-ui'
  9. import {
  10. getToken
  11. } from '@/utils/auth'
  12. axios.defaults.timeout = 10000
  13. axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8;'
  14. //TODO:配置读取
  15. axios.defaults.headers['Accept-Language'] = "zh-Hans"
  16. // axios.defaults.baseURL = '';
  17. axios.defaults.baseURL = config.base.ip
  18. // POST传参序列化
  19. axios.interceptors.request.use((config) => {
  20. // eslint-disable-next-line eqeqeq
  21. if (getToken() != '') {
  22. config.headers.Authorization = 'Bearer ' + getToken()
  23. } else {
  24. router.replace({
  25. path: '/login'
  26. })
  27. }
  28. return config
  29. }, (error) => {
  30. return Promise.reject(error)
  31. })
  32. // 返回状态判断
  33. axios.interceptors.response.use((res) => {
  34. // return Promise.reject(res);
  35. return res
  36. }, (err) => {
  37. // 404等问题可以在这里处理
  38. if (err.response) {
  39. const error = err.error = {}
  40. switch (err.response.status) { // 判断后台返回的token值是否失效
  41. case 401:
  42. Message({
  43. message: '登录过期,请重新登录!',
  44. type: 'error',
  45. duration: 5 * 1000
  46. })
  47. router.replace({
  48. path: '/login'
  49. })
  50. return
  51. case 400:
  52. error.code = err.response.data.error.code
  53. error.message = err.response.data.error.message
  54. error.details = err.response.data.error.details
  55. break
  56. case 403:
  57. error.code = err.response.data.error.code
  58. error.message = err.response.data.error.message
  59. error.details = err.response.data.error.details
  60. break
  61. case 404:
  62. if (!err.response.data) {
  63. error.code = '未找到服务!'
  64. } else {
  65. error.code = err.response.data.error.code
  66. error.message = err.response.data.error.message
  67. error.details = err.response.data.error.details
  68. }
  69. break
  70. case 408:
  71. error.code = err.response.data.error.code
  72. error.message = err.response.data.error.message
  73. error.details = err.response.data.error.details
  74. break
  75. case 500:
  76. error.code = err.response.data.error.code
  77. error.message = err.response.data.error.message
  78. error.details = err.response.data.error.details
  79. break
  80. case 501:
  81. error.code = err.response.data.error.code
  82. error.message = err.response.data.error.message
  83. error.details = err.response.data.error.details
  84. break
  85. case 502:
  86. error.code = "502 Bad Gateway"
  87. break
  88. case 503:
  89. error.code = err.response.data.error.code
  90. error.message = err.response.data.error.message
  91. error.details = err.response.data.error.details
  92. break
  93. case 504:
  94. error.code = err.response.data.error.code
  95. error.message = err.response.data.error.message
  96. error.details = err.response.data.error.details
  97. break
  98. case 505:
  99. error.code = err.response.data.error.code
  100. error.message = err.response.data.error.message
  101. error.details = err.response.data.error.details
  102. break
  103. default:
  104. }
  105. return Promise.reject(err)
  106. } else if (err.request) {
  107. return Promise.reject(err.request)
  108. } else {
  109. // Something happened in setting up the request that triggered an Error
  110. return Promise.reject('Error', err.message)
  111. }
  112. })
  113. export default {
  114. posts(url, params) {
  115. return new Promise((resolve, reject) => {
  116. axios.post(url, params)
  117. .then(response => {
  118. resolve(response.data)
  119. }, err => {
  120. Message({
  121. message: !err.error.code?err.error.message:err.error.code,
  122. type: 'error',
  123. duration: 5 * 1000
  124. })
  125. reject(err)
  126. })
  127. .catch((error) => {
  128. reject(error)
  129. })
  130. })
  131. },
  132. gets(url, params) {
  133. return new Promise((resolve, reject) => {
  134. axios.get(url, {
  135. 'params': params
  136. })
  137. .then(response => {
  138. resolve(response.data)
  139. }, err => {
  140. Message({
  141. message: !err.error.code?err.error.message:err.error.code,
  142. type: 'error',
  143. duration: 5 * 1000
  144. })
  145. reject(err)
  146. })
  147. .catch((error) => {
  148. reject(error)
  149. })
  150. })
  151. },
  152. deletes(url, params) {
  153. return new Promise((resolve, reject) => {
  154. axios.delete(url, {
  155. 'params': params
  156. })
  157. .then(response => {
  158. resolve(response.data)
  159. }, err => {
  160. Message({
  161. message: !err.error.code?err.error.message:err.error.code,
  162. type: 'error',
  163. duration: 5 * 1000
  164. })
  165. reject(err)
  166. })
  167. .catch((error) => {
  168. reject(error)
  169. })
  170. })
  171. },
  172. puts(url, params) {
  173. return new Promise((resolve, reject) => {
  174. axios.put(url, params)
  175. .then(response => {
  176. resolve(response.data)
  177. }, err => {
  178. Message({
  179. message: !err.error.code?err.error.message:err.error.code,
  180. type: 'error',
  181. duration: 5 * 1000
  182. })
  183. reject(err)
  184. })
  185. .catch((error) => {
  186. reject(error)
  187. })
  188. })
  189. },
  190. downLoad(url, params) {
  191. var instance = axios.create({
  192. responseType: 'blob'
  193. })
  194. instance.defaults.headers.Authorization = 'Bearer ' + getToken()
  195. instance.defaults.headers['Accept-Language']="zh-Hans"
  196. return new Promise((resolve, reject) => {
  197. instance.get(url, {
  198. 'params': params
  199. })
  200. .then(response => {
  201. resolve(response)
  202. }, err => {
  203. reject(err)
  204. })
  205. .catch((error) => {
  206. reject(error)
  207. })
  208. })
  209. },
  210. instancePosts(url, params) { // 登录
  211. var instance = axios.create({
  212. baseURL: config.auth.ip
  213. })
  214. if (params.tenant && params.tenant.trim() != '') {
  215. url = url + "?__tenant=" + params.tenant
  216. }
  217. var data = qs.stringify(params)
  218. return new Promise((resolve, reject) => {
  219. instance.post(url, data)
  220. .then(response => {
  221. resolve(response.data)
  222. }, err => {
  223. if (err.response.status === 400) {
  224. Message({
  225. message: '用户名或密码错误',
  226. type: 'error',
  227. duration: 5 * 1000
  228. })
  229. } else {
  230. Message({
  231. message: err.message,
  232. type: 'error',
  233. duration: 5 * 1000
  234. })
  235. }
  236. reject(err)
  237. })
  238. .catch((error) => {
  239. Message({
  240. message: '登录异常',
  241. type: 'error',
  242. duration: 5 * 1000
  243. })
  244. reject(error)
  245. })
  246. })
  247. },
  248. getUserInfo(url) { // 获取用户信息
  249. var instance = axios.create({
  250. baseURL: config.auth.ip
  251. })
  252. instance.defaults.headers.Authorization = 'Bearer ' + getToken()
  253. return new Promise((resolve, reject) => {
  254. instance.get(url)
  255. .then(response => {
  256. resolve(response.data)
  257. }, err => {
  258. Message({
  259. message: err.message,
  260. type: 'error',
  261. duration: 5 * 1000
  262. })
  263. reject(err)
  264. })
  265. .catch((error) => {
  266. reject(error)
  267. })
  268. })
  269. },
  270. getPermissions(url, params) {
  271. var instance = axios.create({
  272. baseURL: config.base.ip
  273. })
  274. instance.defaults.headers.Authorization = 'Bearer ' + getToken()
  275. return new Promise((resolve, reject) => {
  276. instance.get(url, {
  277. 'params': params
  278. })
  279. .then(response => {
  280. resolve(response.data)
  281. }, err => {
  282. Message({
  283. message: err.message,
  284. type: 'error',
  285. duration: 5 * 1000
  286. })
  287. reject(err)
  288. })
  289. .catch((error) => {
  290. reject(error)
  291. })
  292. })
  293. },
  294. getMenus(url, params) {
  295. return new Promise((resolve, reject) => {
  296. axios.get(url, {
  297. 'params': params
  298. })
  299. .then(response => {
  300. resolve(response.data)
  301. }, err => {
  302. Message({
  303. message: err.message,
  304. type: 'error',
  305. duration: 5 * 1000
  306. })
  307. reject(err)
  308. })
  309. .catch((error) => {
  310. reject(error)
  311. })
  312. })
  313. }
  314. }