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/upload.ts |   73 ++++++++++++++++++++++++++++++++++++
 1 files changed, 73 insertions(+), 0 deletions(-)

diff --git a/src/utils/upload.ts b/src/utils/upload.ts
new file mode 100644
index 0000000..e074689
--- /dev/null
+++ b/src/utils/upload.ts
@@ -0,0 +1,73 @@
+import config from '@/config'
+import { getToken } from '@/utils/auth'
+import errorCode from '@/utils/errorCode'
+import { toast, showConfirm, tansParams } from '@/utils/common'
+import { ResponseData, RequestUploadConfig } from '@/types/request'
+import useUserStore from '@/store/modules/user'
+
+let timeout = 10000
+const baseUrl = config.baseUrl
+
+const upload = <T>(config: RequestUploadConfig): 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
+  }
+  const userStore = useUserStore()
+  return new Promise((resolve, reject) => {
+    uni.uploadFile({
+      timeout: config.timeout || timeout,
+      url: baseUrl + config.url,
+      filePath: config.filePath,
+      name: config.name || 'file',
+      header: config.header,
+      formData: config.formData,
+      success: (res) => {
+        let result = JSON.parse(res.data)
+        const code = result.code || 200
+        // @ts-ignore
+        const msg = errorCode[code] || result.msg || errorCode['default']
+        if (code === 200) {
+          resolve(result)
+        } else if (code == 401) {
+          showConfirm("鐧诲綍鐘舵�佸凡杩囨湡锛屾偍鍙互缁х画鐣欏湪璇ラ〉闈紝鎴栬�呴噸鏂扮櫥褰�?").then(res => {
+            if (res.confirm) {
+              userStore.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)
+        }
+      },
+      fail: (error: any) => {
+        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 default upload

--
Gitblit v1.9.3