离校前端框架,包括数据字典、工作队伍、新闻公告模块
diff --git a/leave-school-vue/src/utils/request.js b/leave-school-vue/src/utils/request.js
new file mode 100644
index 0000000..8b0925b
--- /dev/null
+++ b/leave-school-vue/src/utils/request.js
@@ -0,0 +1,78 @@
+import axios from 'axios'
+import { Message, MessageBox } from 'element-ui'
+import store from '../store'
+import { getToken } from '@/utils/auth'
+
+// 网络请求约定属性名,不可在业务中使用
+const whitelist = ['X-Token', 'token', 'pageIndex', 'pageSize']
+// 创建axios实例
+const service = axios.create({
+ baseURL: process.env.BASE_API, // api的base_url
+ timeout: 10000 // 请求超时时间
+})
+
+// request拦截器
+service.interceptors.request.use(config => {
+ if (store.getters.token) {
+ config.headers['X-Token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
+ }
+ if (config.params) {
+ for (const attr in config.params) {
+ if (whitelist.indexOf(attr) > -1) {
+ // 约定的属性不用转换
+ continue
+ }
+ config.params[encodeURIComponent('mapBean[' + attr + ']')] = config.params[attr]
+ delete config.params[attr]
+ }
+ }
+ return config
+}, error => {
+ // Do something with request error
+ console.log(error) // for debug
+ Promise.reject(error)
+})
+
+// respone拦截器
+service.interceptors.response.use(
+ response => {
+ /**
+ * code为非20000是抛错 可结合自己业务进行修改
+ */
+ const res = response.data
+ if (response.status !== 200) {
+ Message({
+ message: res.message || '请求失败,状态码:' + res.code,
+ type: 'error',
+ duration: 5 * 1000
+ })
+
+ // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
+ if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+ MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确定登出', {
+ confirmButtonText: '重新登录',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ store.dispatch('FedLogOut').then(() => {
+ location.reload()// 为了重新实例化vue-router对象 避免bug
+ })
+ })
+ }
+ return Promise.reject('error')
+ } else {
+ return response.data
+ }
+ },
+ error => {
+ console.log('err' + error)// for debug
+ Message({
+ message: error.message,
+ type: 'error',
+ duration: 5 * 1000
+ })
+ return Promise.reject(error)
+ }
+)
+
+export default service