Jelajahi Sumber

fix: 修复无法登录问题

kailong321200875 1 tahun lalu
induk
melakukan
8ce00ab247
4 mengubah file dengan 13 tambahan dan 14 penghapusan
  1. 8 1
      src/axios/config.ts
  2. 3 8
      src/axios/index.ts
  3. 1 5
      src/constants/index.ts
  4. 1 0
      types/global.d.ts

+ 8 - 1
src/axios/config.ts

@@ -1,8 +1,9 @@
 import { AxiosResponse, InternalAxiosRequestConfig } from './types'
 import { ElMessage } from 'element-plus'
 import qs from 'qs'
-import { SUCCESS_CODE } from '@/constants'
+import { SUCCESS_CODE, TRANSFORM_REQUEST_DATA } from '@/constants'
 import { useUserStoreWithOut } from '@/store/modules/user'
+import { objToFormData } from '@/utils'
 
 const defaultRequestInterceptors = (config: InternalAxiosRequestConfig) => {
   if (
@@ -10,6 +11,12 @@ const defaultRequestInterceptors = (config: InternalAxiosRequestConfig) => {
     config.headers['Content-Type'] === 'application/x-www-form-urlencoded'
   ) {
     config.data = qs.stringify(config.data)
+  } else if (
+    TRANSFORM_REQUEST_DATA &&
+    config.method === 'post' &&
+    config.headers['Content-Type'] === 'multipart/form-data'
+  ) {
+    config.data = objToFormData(config.data)
   }
   if (config.method === 'get' && config.params) {
     let url = config.url as string

+ 3 - 8
src/axios/index.ts

@@ -1,21 +1,16 @@
 import service from './service'
-import { CONTENT_TYPE, TRANSFORM_REQUEST_DATA } from '@/constants'
+import { CONTENT_TYPE } from '@/constants'
 import { useUserStoreWithOut } from '@/store/modules/user'
-import { objToFormData } from '@/utils'
 
 const request = (option: AxiosConfig) => {
   const { url, method, params, data, headers, responseType } = option
-  // 是否需要转换数据格式
-  const transformData =
-    TRANSFORM_REQUEST_DATA &&
-    (headers?.['Content-Type'] || CONTENT_TYPE) === 'multipart/form-data' &&
-    data
+
   const userStore = useUserStoreWithOut()
   return service.request({
     url: url,
     method,
     params,
-    data: transformData ? objToFormData(data) : data,
+    data: data,
     responseType: responseType,
     headers: {
       'Content-Type': CONTENT_TYPE,

+ 1 - 5
src/constants/index.ts

@@ -6,11 +6,7 @@ export const SUCCESS_CODE = 0
 /**
  * 请求contentType
  */
-export const CONTENT_TYPE:
-  | 'application/json'
-  | 'multipart/form-data'
-  | 'application/x-www-form-urlencoded'
-  | 'text/plain' = 'multipart/form-data'
+export const CONTENT_TYPE: AxiosContentType = 'application/json'
 
 /**
  * 请求超时时间

+ 1 - 0
types/global.d.ts

@@ -30,6 +30,7 @@ declare global {
     | 'application/json'
     | 'application/x-www-form-urlencoded'
     | 'multipart/form-data'
+    | 'text/plain'
 
   declare type AxiosMethod = 'get' | 'post' | 'delete' | 'put'