fix(mjft):添加响应弹框
Showing
2 changed files
with
95 additions
and
72 deletions
1 | import store from '../../store/index' | 1 | import store from '../../store/index' |
2 | import axios from 'axios' | 2 | import axios from 'axios' |
3 | import router from '../../router' | 3 | import router from '../../router' |
4 | import { Message, MessageBox } from 'element-ui' | 4 | import {Message, MessageBox} from 'element-ui' |
5 | import { httpStatus } from '@/api/config' | 5 | import {httpStatus} from '@/api/config' |
6 | 6 | ||
7 | // 创建一个 axios 实例 | 7 | // 创建一个 axios 实例 |
8 | let BASE_URL = "/api"; | 8 | let BASE_URL = "/api"; |
9 | const CONTENT_TYPE = "application/json"; | 9 | const CONTENT_TYPE = "application/json"; |
10 | const service = axios.create({ | 10 | const service = axios.create({ |
11 | baseURL: BASE_URL, | 11 | baseURL: BASE_URL, |
12 | headers: { | 12 | headers: { |
13 | "content-type": CONTENT_TYPE, | 13 | "content-type": CONTENT_TYPE, |
14 | }, | 14 | }, |
15 | timeout: 5000 // 请求超时时间 | 15 | timeout: 5000 // 请求超时时间 |
16 | }) | 16 | }) |
17 | |||
17 | function errorLog() { | 18 | function errorLog() { |
18 | MessageBox.alert('报错了请联系管理员', '消息提示', { | 19 | MessageBox.alert('报错了请联系管理员', '消息提示', { |
19 | confirmButtonText: '确定', | 20 | confirmButtonText: '确定', |
20 | type: 'warning' | 21 | type: 'warning' |
21 | }) | 22 | }) |
22 | } | 23 | } |
24 | |||
23 | // 请求拦截器 | 25 | // 请求拦截器 |
24 | service.interceptors.request.use( | 26 | service.interceptors.request.use( |
25 | config => { | 27 | config => { |
26 | // 在请求发送之前做一些处理 | 28 | // 在请求发送之前做一些处理 |
27 | // const token = util.cookies.get('token') | 29 | // const token = util.cookies.get('token') |
28 | // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改 | 30 | // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改 |
29 | // config.headers['authkey'] = token | 31 | // config.headers['authkey'] = token |
30 | return config | 32 | return config |
31 | }, | 33 | }, |
32 | error => { | 34 | error => { |
33 | // 发送失败 | 35 | // 发送失败 |
34 | Promise.reject(error) | 36 | Promise.reject(error) |
35 | } | 37 | } |
36 | ) | 38 | ) |
37 | 39 | ||
38 | // 响应拦截器 | 40 | // 响应拦截器 |
39 | service.interceptors.response.use( | 41 | service.interceptors.response.use( |
40 | response => { | 42 | response => { |
41 | // dataAxios 是 axios 返回数据中的 data | 43 | // dataAxios 是 axios 返回数据中的 data |
42 | const dataAxios = response.data | 44 | const dataAxios = response.data |
43 | const { code } = dataAxios | 45 | const {code} = dataAxios |
44 | // 根据 code 进行判断 | 46 | // 根据 code 进行判断 |
45 | if (code === undefined) { | 47 | if (code === undefined) { |
46 | // 如果没有 code 代表这不是项目后端开发的接口 比如可能是 D2Admin 请求最新版本 | 48 | // 如果没有 code 代表这不是项目后端开发的接口 比如可能是 D2Admin 请求最新版本 |
47 | return dataAxios | 49 | return dataAxios |
48 | } else { | 50 | } else { |
49 | // 有 code 代表这是一个后端接口 可以进行进一步的判断 | 51 | // 有 code 代表这是一个后端接口 可以进行进一步的判断 |
50 | switch (code) { | 52 | switch (code) { |
51 | // code === 200 代表没有错误 | 53 | // code === 200 代表没有错误 |
52 | case httpStatus.OK.code: | 54 | case httpStatus.OK.code: |
53 | return dataAxios | 55 | return dataAxios |
54 | // code === 11001 | 56 | // code === 11001 |
55 | case httpStatus.LOGIN_FAILURE.code: | 57 | case httpStatus.LOGIN_FAILURE.code: |
56 | router.replace({ | 58 | router.replace({ |
57 | path: '/login', | 59 | path: '/login', |
58 | query: { redirect: router.currentRoute.fullPath } | 60 | query: {redirect: router.currentRoute.fullPath} |
59 | }) | 61 | }) |
60 | util.cookies.remove('token') | 62 | util.cookies.remove('token') |
61 | Message({ | 63 | Message({ |
62 | message: '登录超时,请重新登录', | 64 | message: '登录超时,请重新登录', |
63 | type: 'error' | 65 | type: 'error' |
64 | }); | 66 | }); |
65 | break | 67 | break |
66 | default: | 68 | default: |
67 | break | 69 | return dataAxios; |
68 | } | 70 | } |
69 | } | 71 | } |
70 | }, | 72 | }, |
71 | error => { | 73 | error => { |
72 | if (error && error.response) { | 74 | if (error && error.response) { |
73 | switch (error.response.status) { | 75 | switch (error.response.status) { |
74 | case 400: error.message = '请求错误'; break | 76 | case 400: |
75 | case 401: error.message = '未授权,请登录'; break | 77 | error.message = '请求错误'; |
76 | case 403: error.message = '拒绝访问'; break | 78 | break |
77 | case 404: error.message = `请求地址出错: ${error.response.config.url}`; break | 79 | case 401: |
78 | case 408: error.message = '请求超时'; break | 80 | error.message = '未授权,请登录'; |
79 | case 500: errorLog() | 81 | break |
80 | case 501: error.message = '服务未实现'; break | 82 | case 403: |
81 | case 502: error.message = '网关错误'; break | 83 | error.message = '拒绝访问'; |
82 | case 503: error.message = '服务不可用'; break | 84 | break |
83 | case 504: error.message = '网关超时'; break | 85 | case 404: |
84 | case 505: error.message = 'HTTP版本不受支持'; break | 86 | error.message = `请求地址出错: ${error.response.config.url}`; |
85 | default: break | 87 | break |
86 | } | 88 | case 408: |
89 | error.message = '请求超时'; | ||
90 | break | ||
91 | case 500: | ||
92 | errorLog() | ||
93 | case 501: | ||
94 | error.message = '服务未实现'; | ||
95 | break | ||
96 | case 502: | ||
97 | error.message = '网关错误'; | ||
98 | break | ||
99 | case 503: | ||
100 | error.message = '服务不可用'; | ||
101 | break | ||
102 | case 504: | ||
103 | error.message = '网关超时'; | ||
104 | break | ||
105 | case 505: | ||
106 | error.message = 'HTTP版本不受支持'; | ||
107 | break | ||
108 | default: | ||
109 | break | ||
110 | } | ||
111 | } | ||
112 | return Promise.reject(error) | ||
87 | } | 113 | } |
88 | return Promise.reject(error) | ||
89 | } | ||
90 | ) | 114 | ) |
91 | 115 | ||
92 | export default service | 116 | export default service | ... | ... |
-
Please register or sign in to post a comment