录音文件上传

This commit is contained in:
zhonghua.li
2026-04-15 21:41:13 +08:00
parent 2f82e15a04
commit fb50639690
3 changed files with 103 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
import { login, getInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { removeBusinessHeaders } from '@/utils/business-headers'
import { resetRouter } from '@/router'
const getDefaultState = () => {
@@ -75,6 +76,7 @@ const actions = {
logout({ commit, state }) {
return new Promise((resolve, reject) => {
removeToken() // must remove token first
removeBusinessHeaders()
resetRouter()
commit('RESET_STATE')
resolve()
@@ -85,6 +87,7 @@ const actions = {
resetToken({ commit }) {
return new Promise(resolve => {
removeToken() // must remove token first
removeBusinessHeaders()
commit('RESET_STATE')
resolve()
})

View File

@@ -0,0 +1,43 @@
const HEADER_STORAGE_KEY = 'smart_drive_business_headers'
const DEFAULT_HEADERS = {
'X-Role-Name': 'admin',
'X-Scenario': 'sales',
'X-Tenant-Id': 'TENANT_ID_SHHYQQ-20260415',
'X-Account-Name': '15810181778'
}
export function getBusinessHeaders() {
let stored = {}
try {
const raw = window.localStorage.getItem(HEADER_STORAGE_KEY)
stored = raw ? JSON.parse(raw) : {}
} catch (e) {
stored = {}
}
return {
...DEFAULT_HEADERS,
...stored
}
}
export function setBusinessHeaders(headers = {}) {
const normalized = {}
Object.keys(DEFAULT_HEADERS).forEach((key) => {
const value = headers[key]
if (value !== undefined && value !== null && String(value).trim() !== '') {
normalized[key] = String(value).trim()
}
})
const next = {
...getBusinessHeaders(),
...normalized
}
window.localStorage.setItem(HEADER_STORAGE_KEY, JSON.stringify(next))
return next
}
export function removeBusinessHeaders() {
window.localStorage.removeItem(HEADER_STORAGE_KEY)
}

View File

@@ -2,6 +2,29 @@ import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'
import { getBusinessHeaders, setBusinessHeaders } from '@/utils/business-headers'
function pickHeaderCaseInsensitive(headers, key) {
if (!headers) return ''
const lowerKey = key.toLowerCase()
const foundKey = Object.keys(headers).find(item => item.toLowerCase() === lowerKey)
return foundKey ? headers[foundKey] : ''
}
function pickValueFromSources(sources, keys) {
for (let i = 0; i < sources.length; i++) {
const source = sources[i]
if (!source || typeof source !== 'object') continue
for (let j = 0; j < keys.length; j++) {
const key = keys[j]
const value = source[key]
if (value !== undefined && value !== null && String(value).trim() !== '') {
return String(value).trim()
}
}
}
return ''
}
// create an axios instance
const service = axios.create({
@@ -25,6 +48,11 @@ service.interceptors.request.use(
// 使用Bearer token格式
config.headers['Authorization'] = `Bearer ${getToken()}`
}
const businessHeaders = getBusinessHeaders()
Object.keys(businessHeaders).forEach((key) => {
config.headers[key] = businessHeaders[key]
})
return config
},
error => {
@@ -37,6 +65,35 @@ service.interceptors.request.use(
// response interceptor
service.interceptors.response.use(
response => {
const loginHeaderValues = {
'X-Role-Name': pickValueFromSources(
[response.headers, response.data?.data, response.data],
['X-Role-Name', 'x-role-name', 'roleName', 'role_name']
),
'X-Scenario': pickValueFromSources(
[response.headers, response.data?.data, response.data],
['X-Scenario', 'x-scenario', 'scenario']
),
'X-Tenant-Id': pickValueFromSources(
[response.headers, response.data?.data, response.data],
['X-Tenant-Id', 'x-tenant-id', 'tenantId', 'tenant_id']
),
'X-Account-Name': pickValueFromSources(
[response.headers, response.data?.data, response.data],
['X-Account-Name', 'x-account-name', 'accountName', 'account_name', 'loginAccount', 'userName', 'username']
)
}
if (response.config?.url?.includes('/sys/auth/login')) {
const normalizedFromHeader = {
'X-Role-Name': pickHeaderCaseInsensitive(response.headers, 'X-Role-Name') || loginHeaderValues['X-Role-Name'],
'X-Scenario': pickHeaderCaseInsensitive(response.headers, 'X-Scenario') || loginHeaderValues['X-Scenario'],
'X-Tenant-Id': pickHeaderCaseInsensitive(response.headers, 'X-Tenant-Id') || loginHeaderValues['X-Tenant-Id'],
'X-Account-Name': pickHeaderCaseInsensitive(response.headers, 'X-Account-Name') || loginHeaderValues['X-Account-Name']
}
setBusinessHeaders(normalizedFromHeader)
}
const res = response.data
console.log('response 0811 ', res)