luohailiang 2 anos atrás
pai
commit
7c8be228f1
1 arquivos alterados com 40 adições e 37 exclusões
  1. 40 37
      src/utils/request.js

+ 40 - 37
src/utils/request.js

@@ -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({})
+}