|
@@ -1,8 +1,8 @@
|
|
|
import axios from 'axios'
|
|
|
import { Message } from 'element-ui'
|
|
|
|
|
|
-import { userInfo } from '@/stores/user'
|
|
|
-const { token } = userInfo
|
|
|
+import { user } from '@/stores/user'
|
|
|
+const { token } = user
|
|
|
|
|
|
const service = axios.create({
|
|
|
baseURL: window.globalVariables.api,
|
|
@@ -35,37 +35,6 @@ service.interceptors.request.use(
|
|
|
},
|
|
|
config.params || {}
|
|
|
)
|
|
|
- } else {
|
|
|
- if (config.data instanceof FormData) {
|
|
|
- //
|
|
|
- } else {
|
|
|
- config.data = Object.assign(
|
|
|
- {
|
|
|
- token,
|
|
|
- client: 'web',
|
|
|
- api: 'json',
|
|
|
- admin: '1',
|
|
|
- issubmit: (config.url?.endsWith('/add') || config.url?.endsWith('/edit')) ? '1' : undefined,
|
|
|
- },
|
|
|
- config.data ?? {}
|
|
|
- )
|
|
|
- }
|
|
|
- }
|
|
|
- if (config.$type === 'import') {
|
|
|
- config.timeout = 1000 * 60 * 20
|
|
|
- config.transformRequest = [function (data, headers) {
|
|
|
- const formData = new FormData()
|
|
|
- Object.keys(data).forEach(key => formData.append(key, data[key]))
|
|
|
- return formData;
|
|
|
- }]
|
|
|
- }
|
|
|
- if (config.$type === 'upload') {
|
|
|
- config.timeout = 1000 * 60 * 2
|
|
|
- config.transformRequest = [function (data, headers) {
|
|
|
- const formData = new FormData()
|
|
|
- Object.keys(data).forEach(key => formData.append(key, data[key]))
|
|
|
- return formData;
|
|
|
- }]
|
|
|
}
|
|
|
// 短时间多个请求会冲突
|
|
|
// console.groupCollapsed('axios: ' + config.url)
|
|
@@ -80,10 +49,30 @@ service.interceptors.request.use(
|
|
|
)
|
|
|
|
|
|
// response interceptor
|
|
|
+let isRelogin = false
|
|
|
service.interceptors.response.use(
|
|
|
(response, c) => {
|
|
|
- const { code, msg } = response.data
|
|
|
- if (code !== '1' && code !== 1) {
|
|
|
+ const { code, msg, data } = response.data
|
|
|
+ if (code === '10001') {
|
|
|
+ if (!isRelogin) {
|
|
|
+ isRelogin = true
|
|
|
+ Message.error(msg)
|
|
|
+ request({
|
|
|
+ url: '/user/main/login',
|
|
|
+ data: {
|
|
|
+ token: data.token
|
|
|
+ }
|
|
|
+ }).then(res => {
|
|
|
+ if (res.code == 1) {
|
|
|
+ localStorage.setItem('userInfo', JSON.stringify(res.data));
|
|
|
+ isRelogin = false
|
|
|
+ // 视情况打开
|
|
|
+ location.reload()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (code !== '1') {
|
|
|
Message.error(msg)
|
|
|
}
|
|
|
// console.log('response', response.data)
|
|
@@ -119,13 +108,27 @@ request.interceptors.response.use(
|
|
|
}
|
|
|
)
|
|
|
|
|
|
-export function download(url, data) {
|
|
|
+export function download(url, data, name) {
|
|
|
const params = Object.assign({ token, limit: 10000, page: 1, api: 'xls' }, data)
|
|
|
const paramsStr = Object.entries(params).map(([k, v]) => `${k}=${v}`).join('&')
|
|
|
const el = document.createElement('a')
|
|
|
const href = `${window.globalVariables.api}${url}?${paramsStr}`
|
|
|
el.setAttribute('href', href)
|
|
|
+ name && el.setAttribute('download', name)
|
|
|
el.click()
|
|
|
}
|
|
|
|
|
|
-export default service
|
|
|
+export function download2(url, data, name) {
|
|
|
+ const el = document.createElement('a')
|
|
|
+ const href = `${window.globalVariables.api}/openapi/download.php?path=${url}&name=${name}`
|
|
|
+ el.setAttribute('href', href)
|
|
|
+ name && el.setAttribute('download', name)
|
|
|
+ el.click()
|
|
|
+}
|
|
|
+
|
|
|
+export default (...args) => {
|
|
|
+ if (!isRelogin)
|
|
|
+ return service(...args)
|
|
|
+ else
|
|
|
+ return Promise.reject({})
|
|
|
+}
|