同步前端功能修改

This commit is contained in:
2026-08-31 11:45:14 +08:00
parent 298a879211
commit e3c7044dfe
21 changed files with 3724 additions and 22 deletions
+24 -12
View File
@@ -3,6 +3,7 @@ import qs from 'qs'
import { getToken, getRefreshToken } from './common'
import { useRuntimeConfig, navigateTo, useCookie } from 'nuxt/app'
import { useMemberStore } from '~/stores/member'
import { decryptEncryptedResponse, prepareEncryptedRequest } from '~/utils/security/api-encrypt'
// 响应数据类型定义
interface ResponseData<T = any> {
@@ -15,7 +16,7 @@ interface ResponseData<T = any> {
interface ConfigOption {
showErrorMessage?: boolean
showSuccessMessage?: boolean,
headers?: Headers
headers?: HeadersInit
// 控制是否返回完整响应对象(默认 false 返回 data)
returnFullResponse?: boolean
// 响应类型
@@ -215,19 +216,28 @@ class Http {
}
// 构建请求选项
const requestHeaders: Record<string, string> = {
'Content-Type': 'application/json',
...(this.options.headers as Record<string, string>),
...((config.headers || {}) as Record<string, string>),
...((param.headers || {}) as Record<string, string>)
}
const requestOptions: RequestInit = {
method,
headers: {
'Content-Type': 'application/json',
...this.options.headers,
...(config.headers || {}),
...(param.headers || {})
}
headers: requestHeaders
}
let encryptSession: any = null
// 添加请求体
if (param.body) {
requestOptions.body = JSON.stringify(param.body)
const encryptedRequest = await prepareEncryptedRequest(baseURL, `/${normalizedUrl}`, method, param.body)
encryptSession = encryptedRequest.session
Object.assign(requestHeaders, encryptedRequest.headers)
if (encryptedRequest.body) {
requestOptions.body = encryptedRequest.body
}
// 发送请求
@@ -248,11 +258,12 @@ class Http {
if (responseType === 'json') {
data = await response.json()
data = await decryptEncryptedResponse(data, encryptSession)
} else if (responseType === 'blob') {
// 对于blob类型,直接读取blob并返回
try {
const blob = await response.blob()
resolve(blob)
resolve(blob as T)
return
} catch (error) {
console.error('[request] Error reading blob:', error)
@@ -304,10 +315,11 @@ class Http {
console.log('[request] New token:', newToken?.substring(0, 20) + '...')
// 重新发送请求
this.options.headers['Authorization'] = `Bearer ${newToken}`
requestOptions.headers['Authorization'] = `Bearer ${newToken}`
requestHeaders['Authorization'] = `Bearer ${newToken}`
return fetch(fullURL, requestOptions)
}).then(async (newResponse) => {
const newData = await newResponse.json()
let newData = await newResponse.json()
newData = await decryptEncryptedResponse(newData, encryptSession)
if (newData.code == 0) {
if (config.returnFullResponse) {
resolve(newData as T)