|
@@ -0,0 +1,111 @@
|
|
|
+import axios from 'axios'
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
+// import store from '@/store'
|
|
|
+import { getToken } from '@/utils/auth'
|
|
|
+import qs from 'qs'
|
|
|
+
|
|
|
+// create an axios instance
|
|
|
+
|
|
|
+let baseURL = window.PLATFROM_CONFIG.baseUrl
|
|
|
+const service = axios.create({
|
|
|
+ baseURL: baseURL,
|
|
|
+ // baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
|
|
|
+ withCredentials: true, // send cookies when cross-domain requests
|
|
|
+ timeout: 5000, // request timeout
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
|
|
|
+ },
|
|
|
+ })
|
|
|
+ // request interceptor
|
|
|
+service.interceptors.request.use(
|
|
|
+ config => {
|
|
|
+
|
|
|
+ config.data = qs.stringify(config.data);
|
|
|
+ config.headers.token = getToken()
|
|
|
+ // do something before request is sent
|
|
|
+
|
|
|
+ // if (store.getters.token) {
|
|
|
+ // // let each request carry token
|
|
|
+ // // ['X-Token'] is a custom headers key
|
|
|
+ // // please modify it according to the actual situation
|
|
|
+ // config.headers['X-Token'] = getToken()
|
|
|
+ // }
|
|
|
+
|
|
|
+ if (config.method == 'get') {
|
|
|
+ let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
|
|
|
+ let obj_val = '';
|
|
|
+ for (let k in config.data) {
|
|
|
+ obj_val += k + "=" + config.data[k] + "&";
|
|
|
+ }
|
|
|
+ config.url += ext_str + obj_val;
|
|
|
+ }
|
|
|
+ // return config;
|
|
|
+
|
|
|
+ return config
|
|
|
+ },
|
|
|
+ error => {
|
|
|
+ // do something with request error
|
|
|
+ console.log(error) // for debug
|
|
|
+ return Promise.reject(error)
|
|
|
+ }
|
|
|
+)
|
|
|
+
|
|
|
+// response interceptor
|
|
|
+service.interceptors.response.use(
|
|
|
+ /**
|
|
|
+ * If you want to get http information such as headers or status
|
|
|
+ * Please return response => response
|
|
|
+ */
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Determine the request status by custom code
|
|
|
+ * Here is just an example
|
|
|
+ * You can also judge the status by HTTP Status Code
|
|
|
+ */
|
|
|
+ response => {
|
|
|
+ const res = response.data
|
|
|
+
|
|
|
+ // console.log(res)
|
|
|
+
|
|
|
+
|
|
|
+ return res
|
|
|
+
|
|
|
+ // if the custom code is not 20000, it is judged as an error.
|
|
|
+ // if (res.code !== 200) {
|
|
|
+ // Message({
|
|
|
+ // message: res.message || 'Error',
|
|
|
+ // type: 'error',
|
|
|
+ // duration: 5 * 1000
|
|
|
+ // })
|
|
|
+
|
|
|
+ // // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
|
|
|
+ // if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
|
|
|
+ // // to re-login
|
|
|
+ // MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
|
|
|
+ // confirmButtonText: 'Re-Login',
|
|
|
+ // cancelButtonText: 'Cancel',
|
|
|
+ // type: 'warning'
|
|
|
+ // }).then(() => {
|
|
|
+ // store.dispatch('user/resetToken').then(() => {
|
|
|
+ // location.reload()
|
|
|
+ // })
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+ // return Promise.reject(new Error(res.message || 'Error'))
|
|
|
+ // } else {
|
|
|
+ // return res
|
|
|
+ // }
|
|
|
+ },
|
|
|
+ error => {
|
|
|
+ // console.log('err' + error.response.data.msg) // for debug
|
|
|
+ ElMessage({
|
|
|
+ message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
|
|
|
+ type: 'error',
|
|
|
+ duration: 5 * 1000
|
|
|
+ })
|
|
|
+ return Promise.reject(error)
|
|
|
+ }
|
|
|
+
|
|
|
+)
|
|
|
+
|
|
|
+export default service
|