From 92230c9a97dc9ce9df3313d11d26999c04bb6b26 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 15 七月 2025 13:12:48 +0800
Subject: [PATCH] 项目初始化

---
 src/utils/request.ts |   90 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 90 insertions(+), 0 deletions(-)

diff --git a/src/utils/request.ts b/src/utils/request.ts
new file mode 100644
index 0000000..6884b80
--- /dev/null
+++ b/src/utils/request.ts
@@ -0,0 +1,90 @@
+import config from '@/config'
+import { getToken } from '@/utils/auth'
+import errorCode from '@/utils/errorCode'
+import { toast, showConfirm, tansParams } from '@/utils/common'
+import { RequestConfig, ResponseData } from '@/types/request'
+import useUserStore from '@/store/modules/user'
+
+let timeout = 10000
+const baseUrl = config.baseUrl
+
+const request = <T>(config: RequestConfig): Promise<ResponseData<T>> => {
+  // 鏄惁闇�瑕佽缃� token
+  const isToken = (config.headers || {}).isToken === false
+  config.header = config.header || {}
+  if (getToken() && !isToken) {
+    config.header['Authorization'] = 'Bearer ' + getToken()
+  }
+  // get璇锋眰鏄犲皠params鍙傛暟
+  if (config.params) {
+    let url = config.url + '?' + tansParams(config.params)
+    url = url.slice(0, -1)
+    config.url = url
+  }
+  return new Promise((resolve, reject) => {
+    uni.request({
+      method: config.method || 'GET',
+      timeout: config.timeout || timeout,
+      url: (config.baseUrl || baseUrl) + config.url,
+      data: config.data,
+      header: config.header,
+      dataType: 'json'
+    }).then(response => {
+      /* let [error, res] = response
+       if (error) {
+         toast('鍚庣鎺ュ彛杩炴帴寮傚父')
+         reject('鍚庣鎺ュ彛杩炴帴寮傚父')
+         return
+       } */
+      const res = response
+      const data: ResponseData<T> = res.data as ResponseData<T>
+      const code = data.code || 200
+      // @ts-ignore
+      const msg: string = errorCode[code] || data.msg || errorCode['default']
+      if (code === 401) {
+        showConfirm('鐧诲綍鐘舵�佸凡杩囨湡锛屾偍鍙互缁х画鐣欏湪璇ラ〉闈紝鎴栬�呴噸鏂扮櫥褰�?').then(res => {
+          if (res.confirm) {
+            useUserStore().logOut().then(res => {
+              uni.reLaunch({ url: '/pages/login' })
+            })
+          }
+        })
+        reject('鏃犳晥鐨勪細璇濓紝鎴栬�呬細璇濆凡杩囨湡锛岃閲嶆柊鐧诲綍銆�')
+      } else if (code === 500) {
+        toast(msg)
+        reject('500')
+      } else if (code !== 200) {
+        toast(msg)
+        reject(code)
+      }
+      resolve(data)
+    })
+      .catch(error => {
+        let { message } = error
+        if (message === 'Network Error') {
+          message = '鍚庣鎺ュ彛杩炴帴寮傚父'
+        } else if (message.includes('timeout')) {
+          message = '绯荤粺鎺ュ彛璇锋眰瓒呮椂'
+        } else if (message.includes('Request failed with status code')) {
+          message = '绯荤粺鎺ュ彛' + message.substr(message.length - 3) + '寮傚父'
+        }
+        toast(message)
+        reject(error)
+      })
+  })
+}
+
+export function postAction(url: string, data?: any, isToken: boolean = true) {
+  return request({ data, url, method: 'POST', headers: { isToken }, })
+}
+export function getAction(url: string, params?: any, isToken: boolean = true) {
+  return request({ params, url, method: 'GET', headers: { isToken }, })
+}
+export function putAction(url: string, data?: any, isToken: boolean = true) {
+  return request({ data, url, method: 'PUT', headers: { isToken }, })
+}
+export function deleteAction(url: string, data?: any, isToken: boolean = true) {
+  return request({ data, url, method: 'DELETE', headers: { isToken }, })
+}
+
+export default request

--
Gitblit v1.9.3