ソースを参照

feat: 更新上传组件和上传钩子,增加响应数据解密逻辑,优化数据处理流程

laiqi 9 ヶ月 前
コミット
38d00de275
3 ファイル変更12 行追加3 行削除
  1. 7 1
      src/components/UploadComponent.vue
  2. 4 2
      src/hooks/useUpload.ts
  3. 1 0
      src/utils/http.ts

+ 7 - 1
src/components/UploadComponent.vue

@@ -166,7 +166,13 @@ function createCustomUpload({ attmodel, attpath, modelStats }) {
     if (!error.value) {
       options.onSuccess('', file, formData)
       // {"Status":0,"Data":"2025041016044040627399","Message":"执行成功","OtherData":"https://dzapi.kdboss.cn/upfile/coupon_invoice/20250410/2025041016044040731543.png"}
-      const dataObject = JSON.parse(data.value)
+      // console.log('data.value->', data.value)
+      let dataObject = data.value
+      // 判断返回的数据是否是字符串,如果是字符串,则需要解析
+      if (typeof data.value === 'string') {
+        dataObject = JSON.parse(data.value)
+        console.log('dataObject->', dataObject)
+      }
       const newFileIds = [...props.fileIds]
       newFileIds.push({
         url: file.url,

+ 4 - 2
src/hooks/useUpload.ts

@@ -1,6 +1,7 @@
 // TODO: 别忘加更改环境变量的 VITE_UPLOAD_BASEURL 地址。
 import { getEnvBaseUploadUrl } from '@/utils'
 import { useAppStore } from '@/store/app'
+import { decryptResponse } from '@/utils/crypto'
 
 const VITE_UPLOAD_BASEURL = `${getEnvBaseUploadUrl()}`
 
@@ -62,8 +63,9 @@ export function uploadFile<T>({ tempFilePath, formData, data, error, loading })
         token: `${appStore.appInfo.token}`, // 请求token
       },
       success: (uploadFileRes) => {
-        // console.log('uploadFileRes->', uploadFileRes)
-        data.value = uploadFileRes.data as T
+        const decryptedRes = decryptResponse(uploadFileRes)
+        // console.log('decryptedRes uploadFileRes->', decryptedRes)
+        data.value = decryptedRes.data as T
         resolve(data.value)
       },
       fail: (err) => {

+ 1 - 0
src/utils/http.ts

@@ -33,6 +33,7 @@ export const http = <T>(options: CustomRequestOptions & { formatData?: boolean }
         let decryptedRes
         try {
           decryptedRes = decryptResponse(res)
+          // console.log('响应解密成功:', decryptedRes)
         } catch (error) {
           console.error('响应解密失败:', error)
           // 解密失败时显示错误提示