优化代码

This commit is contained in:
pengxiaolong
2025-08-12 22:05:06 +08:00
parent b260caa2bd
commit 784a19bdda
39 changed files with 2258 additions and 525 deletions

View File

@@ -9,8 +9,7 @@ import router from '@/router'
import { ElMessage } from 'element-plus';
import { ref } from 'vue';
import { defineStore } from 'pinia'
import { tokenStore, UserStore } from '@/stores/notice'
import { setStorage , getStorage } from '@/utils/storage.js';
// 请求地址前缀
let baseURL = ''
@@ -24,16 +23,16 @@ if (process.env.NODE_ENV === 'development') {
// 请求拦截器
axios.interceptors.request.use((config) => {
const tokenCache = tokenStore()
const tokenCache = getStorage('token')
const url = sliceUrl(config.url)
// 请求超时时间 - 毫秒
config.timeout = 60000
config.baseURL = baseURL
// 自定义Content-type
config.headers['Content-type'] = 'application/json'
// if (!(config.url == '' || config.url == '')) {
// config.headers['vvtoken'] = tokenCache.token;
// }
if (!(config.url == 'getVxQrcode' || config.url == 'getScanResult'||config.url == 'register')) {
config.headers['token'] = tokenCache;
}
return config;
}, (error) => {
@@ -42,24 +41,39 @@ axios.interceptors.request.use((config) => {
// 响应拦截器
axios.interceptors.response.use((response) => {
console.log("response", response.data)
if (response.data.code == 200) {
return response.data.data
} else if (response.data.code == 40400) {
router.push('/')
ElMessage.error(response.data.code + '' + response.data.message);
} else {
ElMessage.error(response.data.code + '' + response.data.message);
}
return addPrefixToHeaderIcon(response.data)
}, (error) => {
// 可添加请求失败后的处理逻辑
return Promise.reject(error)
})
// 处理headerIcon的前缀
function addPrefixToHeaderIcon(data) {
// 处理数组:递归处理每个元素
if (Array.isArray(data)) {
data.forEach(item => addPrefixToHeaderIcon(item));
return;
}
// 处理对象:递归处理每个属性
if (typeof data === 'object' && data !== null) {
for (const key in data) {
if (key === 'headerIcon' ||key === 'anchorIcon' && data.hasOwnProperty(key)) {
// 在headerIcon值前添加前缀处理各种类型anchorIconA anchorIconB anchorIcon
const value = data[key];
data[key] = "https://vv-1317974657.cos.ap-shanghai.myqcloud.com/headerIcon/" + (
typeof value === 'string' ? value
: value != null ? String(value)
: ""
);
} else if (typeof data[key] === 'object' && data[key] !== null) {
// 递归处理嵌套对象或数组
addPrefixToHeaderIcon(data[key]);
}
}
}
return data;
}
// axios的get请求
export function getAxios({ url, params }) {
@@ -69,8 +83,14 @@ export function getAxios({ url, params }) {
params
// 请求成功将返回的数据传递给resolve函数
}).then(res => {
resolve(res)
// 请求失败将错误信息传递给reject函数
if (res.code == 200) {
resolve(res.data)
} else if (res.code == 40400) {
router.push('/')
ElMessage.error(res.code + '' + res.msg);
} else {
ElMessage.error(res.code + '' + res.msg);
}
}).catch(err => {
reject(err)
})
@@ -79,6 +99,7 @@ export function getAxios({ url, params }) {
// axios的post请求
export function postAxios({ url, data }) {
console.log("postAxios", url, data);
return new Promise((resolve, reject) => {
axios.post(
url,
@@ -89,81 +110,91 @@ export function postAxios({ url, data }) {
}
}
).then(res => {
resolve(res)
if (res.code == 200) {
resolve(res.data)
} else if (res.code == 40400) {
router.push('/')
console.log(res.msg);
ElMessage.error(res.code + '' + res.msg);
} else {
console.log(res.msg);
ElMessage.error(res.code + '' + res.msg);
}
}).catch(err => {
reject(err)
})
})
}
export const downFile = async (urlstr, data) => {
// 发送请求,获取文件流
const response = await axios.post(urlstr, data, { responseType: 'blob' });
// export const downFile = async (urlstr, data) => {
// 获取文件名(如果后端设置了 Content-Disposition
const contentDisposition = response.headers['content-disposition'];
let fileName = 'default-file-name'; // 默认文件名
console.log(contentDisposition)
console.log(response)
if (contentDisposition) {
// 从响应头中提取文件名
const fileNameMatch = contentDisposition.match(/filename="(.+)"/);
if (fileNameMatch && fileNameMatch.length > 1) {
fileName = fileNameMatch[1];
}
}
// // 发送请求,获取文件流
// const response = await axios.post(urlstr, data, { responseType: 'blob' });
// 创建一个临时的下载链接
const blob = new Blob([response.data], { type: response.headers['content-type'] });
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = fileName; // 设置下载的文件名
a.click();
// // 获取文件名(如果后端设置了 Content-Disposition
// const contentDisposition = response.headers['content-disposition'];
// let fileName = 'default-file-name'; // 默认文件名
// console.log(contentDisposition)
// console.log(response)
// if (contentDisposition) {
// // 从响应头中提取文件名
// const fileNameMatch = contentDisposition.match(/filename="(.+)"/);
// if (fileNameMatch && fileNameMatch.length > 1) {
// fileName = fileNameMatch[1];
// }
// }
// 释放 URL 对象
window.URL.revokeObjectURL(url);
// // 创建一个临时的下载链接
// const blob = new Blob([response.data], { type: response.headers['content-type'] });
// const url = window.URL.createObjectURL(blob);
// const a = document.createElement('a');
// a.href = url;
// a.download = fileName; // 设置下载的文件名
// a.click();
// // 释放 URL 对象
// window.URL.revokeObjectURL(url);
}
//请求前验证
function cheekalive() {
const userCache = UserStore()
const tokenCache = tokenStore()
axios.post('api/account/cheekalive', {
userId: userCache.user.id,
currcode: tokenCache.token,
},
{
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
).then(res => {
console.log(res.data)
if (res.data) {
// }
// //请求前验证
// function cheekalive() {
// const userCache = UserStore()
// const tokenCache = tokenStore()
// axios.post('api/account/cheekalive', {
// userId: userCache.user.id,
// currcode: tokenCache.token,
// },
// {
// headers: {
// 'Content-Type': 'application/x-www-form-urlencoded'
// }
// }
// ).then(res => {
// console.log(res.data)
// if (res.data) {
} else {
alert("账号在其他地方登录!")
window.location.href = '/';
}
// } else {
// alert("账号在其他地方登录!")
// window.location.href = '/';
// }
})
}
//节流函数
function throttle(func, limit) {
let inThrottle;
return function () {
const args = arguments;
const context = this;
if (!inThrottle) {
func.apply(context, args);
inThrottle = true;
setTimeout(() => inThrottle = false, limit);
}
}
}
// })
// }
// //节流函数
// function throttle(func, limit) {
// let inThrottle;
// return function () {
// const args = arguments;
// const context = this;
// if (!inThrottle) {
// func.apply(context, args);
// inThrottle = true;
// setTimeout(() => inThrottle = false, limit);
// }
// }
// }
function sliceUrl(url) {
const lastSlash = url.lastIndexOf('/');