Преглед на файлове

fix: 请求公共方法修改

liangan преди 2 седмици
родител
ревизия
e136f6831f
променени са 3 файла, в които са добавени 13 реда и са изтрити 14 реда
  1. 2 1
      src/typings.d.ts
  2. 7 4
      src/utils/http.ts
  3. 4 9
      src/utils/request.ts

+ 2 - 1
src/typings.d.ts

@@ -3,7 +3,8 @@
 declare global {
   interface IResData<T> {
     code: number | string
-    message: string
+    message?: string
+    msg?: string
     data: T
   }
 

+ 7 - 4
src/utils/http.ts

@@ -1,5 +1,6 @@
 import type { CustomRequestOptions } from '@/interceptors/request'
 import { t } from '@/locale'
+import { useUserStore } from '@/store/user'
 import { toPage } from '@/utils/page'
 import { getLastPageUrl } from './index'
 import { toast } from './toast'
@@ -15,6 +16,7 @@ export function http<T>(options: CustomRequestOptions) {
       // #endif
       // 响应成功
       success(res: any) {
+        const userStore = useUserStore()
         // 状态码 2xx,参考 axios 的设计
         if (res.statusCode >= 200 && res.statusCode < 300) {
           // 2.1 提取核心数据 res.data
@@ -22,25 +24,26 @@ export function http<T>(options: CustomRequestOptions) {
             resolve(res.data as IResData<T>)
           }
           else if (res.data.code === '598') {
-            toast.error((res.data as IResData<T>).message)
+            userStore.removeUserInfo()
+            toast.error((res.data as IResData<T>).msg || (res.data as IResData<T>).message)
             const redirect = getLastPageUrl()
             toPage({ url: '/pages/login/login', params: { redirect }, isReLaunch: true })
           }
           else {
-            toast.error((res.data as IResData<T>).message || t('common.error.request'))
+            toast.error((res.data as IResData<T>).msg || (res.data as IResData<T>).message || t('common.error.request'))
             reject(res.data)
           }
         }
         else if (res.statusCode === 401) {
           // 401错误  -> 清理用户信息,跳转到登录页
-          // userStore.clearUserInfo()
+          // userStore.removeUserInfo()
           // uni.navigateTo({ url: '/pages/login/login' })
           reject(res)
         }
         else {
           // 其他错误 -> 根据后端错误信息轻提示
           !options.hideErrorToast
-          && toast.info((res.data as IResData<T>).message)
+          && toast.info((res.data as IResData<T>).msg || (res.data as IResData<T>).message || t('common.error.request'))
           reject(res)
         }
       },

+ 4 - 9
src/utils/request.ts

@@ -1,5 +1,6 @@
 import type { CustomRequestOptions } from '@/interceptors/request'
 import { t } from '@/locale'
+import { toast } from './toast'
 
 /**
  * 请求方法: 主要是对 uni.request 的封装,去适配 openapi-ts-request 的 request 方法
@@ -24,26 +25,20 @@ function http<T>(options: CustomRequestOptions) {
         }
         else if (res.statusCode === 401) {
           // 401错误  -> 清理用户信息,跳转到登录页
-          // userStore.clearUserInfo()
+          // userStore.removeUserInfo()
           // uni.navigateTo({ url: '/pages/login/login' })
           reject(res)
         }
         else {
           // 其他错误 -> 根据后端错误信息轻提示
           !options.hideErrorToast
-          && uni.showToast({
-            icon: 'none',
-            title: (res.data as T & { msg?: string })?.msg || t('common.error.request'),
-          })
+          && toast.info((res.data as IResData<T>).msg || (res.data as IResData<T>).message || t('common.error.request'))
           reject(res)
         }
       },
       // 响应失败
       fail(err) {
-        uni.showToast({
-          icon: 'none',
-          title: t('common.error.network'),
-        })
+        toast.error(t('common.error.network'))
         reject(err)
       },
     })