This commit is contained in:
yiqiuyang
2025-10-16 15:48:14 +08:00
parent 05da1f7fbb
commit e5569b37a1
39 changed files with 611 additions and 329 deletions
+28
View File
@@ -0,0 +1,28 @@
import CryptoJS from 'crypto-js'
const key = CryptoJS.enc.Utf8.parse('k+tsU5mZz1BY+P8z')
const iv = CryptoJS.enc.Utf8.parse('k+tsU5mZz1BY+P8z')
// crypto-js加密
export function cryptoEncrypt(word) {
const srcs = CryptoJS.enc.Utf8.parse(word)
const encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
})
return encrypted.ciphertext.toString(CryptoJS.enc.Base64)
}
// crypto-js解密
export function cryptoDecrypt(word) {
const encryptedHexStr = CryptoJS.enc.Base64.parse(word)
const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr)
const decrypt = CryptoJS.AES.decrypt(srcs, key, {
iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
})
const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
return decryptedStr.toString()
}
-68
View File
@@ -2,9 +2,7 @@
* axios 封装
*/
import axios from 'axios'
import {ElMessage, ElMessageBox} from 'element-plus'
import {tansParams} from '@/utils/index'
import {getToken, removeToken, removeUserTenantInfo} from '@/utils/auth'
// 配置基础URL
const baseURL = window.config?.baseUrl || 'http://work.rangutech.cn:9131'
@@ -21,14 +19,6 @@ const service = axios.create({
// 请求拦截器
service.interceptors.request.use(
(config) => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
// 添加token到请求头
if (getToken() && !isToken) {
config.headers.Authorization = `Bearer ${getToken()}`
}
// GET请求参数处理
if (config.method?.toLowerCase() === 'get' && config.params) {
const urlParams = tansParams(config.params)
@@ -48,80 +38,22 @@ service.interceptors.request.use(
service.interceptors.response.use(
(response) => {
const {data, config} = response
// 处理二进制数据响应
if (config.responseType === 'blob' || config.responseType === 'arraybuffer') {
return data
}
// 正常响应处理
if (response.status === 200) {
return data
}
// 异常响应处理
return Promise.reject(response)
},
(error) => {
const {config, response, message} = error
console.error('Response error:', {config, response, message})
// 处理认证错误
if (response && [401, 471, 472].includes(response.status)) {
handleAuthError(config, response)
return Promise.reject(error)
}
// 处理网络错误
handleNetworkError(message)
return Promise.reject(error)
}
)
/**
* 处理认证错误
*/
function handleAuthError(config, response) {
const excludeUrls = ['/Token/Logout', '/Token/Access']
if (!excludeUrls.includes(config.url)) {
ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
confirmButtonText: '重新登录',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
removeToken()
removeUserTenantInfo()
// 这里需要导入store
// store.dispatch('LogOut').then(() => {});
window.location.reload() // 简单重载页面
})
.catch(() => {
// 用户取消操作
})
}
}
/**
* 处理网络错误
*/
function handleNetworkError(message) {
let errorMsg = message
if (message === 'Network Error') {
errorMsg = '网络连接异常,请检查网络设置'
} else if (message.includes('timeout')) {
errorMsg = '请求超时,请稍后重试'
}
ElMessage({
message: errorMsg,
type: 'error',
duration: 1000,
})
}
export default service