Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
SatelliteDigital
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
nijiawen
SatelliteDigital
Commits
3046471c
提交
3046471c
authored
3月 30, 2026
作者:
汪雄
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:统一处理loading消失问题
上级
5c5eaf24
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
154 行增加
和
117 行删除
+154
-117
request.js
src/utils/request.js
+154
-117
没有找到文件。
src/utils/request.js
浏览文件 @
3046471c
import
axios
from
'axios'
import
axios
from
"axios"
;
import
{
ElNotification
,
ElMessageBox
,
ElMessage
,
ElLoading
}
from
'element-plus'
import
{
import
{
getToken
,
removeToken
}
from
'@/utils/auth.js'
ElNotification
,
import
{
tansParams
}
from
'@/utils/function.js'
ElMessageBox
,
import
local
from
'@/utils/local.js'
ElMessage
,
import
{
saveAs
}
from
'file-saver'
ElLoading
,
}
from
"element-plus"
;
import
{
getToken
,
removeToken
}
from
"@/utils/auth.js"
;
import
{
tansParams
}
from
"@/utils/function.js"
;
import
local
from
"@/utils/local.js"
;
import
{
saveAs
}
from
"file-saver"
;
import
Loading
from
"@/pages/all/components/loadingComponent/index.js"
;
import
Loading2
from
"@/pages/all/components/loadingComponent1/index.js"
;
// import useUserStore from '@/store/modules/user'
// import useUserStore from '@/store/modules/user'
let
downloadLoadingInstance
;
let
downloadLoadingInstance
;
// 是否显示重新登录
// 是否显示重新登录
export
let
isRelogin
=
{
show
:
false
};
export
let
isRelogin
=
{
show
:
false
};
axios
.
defaults
.
headers
[
'Content-Type'
]
=
'application/json;charset=utf-8'
axios
.
defaults
.
headers
[
"Content-Type"
]
=
"application/json;charset=utf-8"
;
// 创建axios实例
// 创建axios实例
// console.log("import.meta.env.VITE_API_URL",import.meta.env.VITE_API_URL);
// console.log("import.meta.env.VITE_API_URL",import.meta.env.VITE_API_URL);
const
service
=
axios
.
create
({
const
service
=
axios
.
create
({
// axios中请求配置有baseURL选项,表示请求URL公共部分
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL
:
import
.
meta
.
env
.
VITE_API_URL
,
baseURL
:
import
.
meta
.
env
.
VITE_API_URL
,
// 超时
// 超时
timeout
:
60000
timeout
:
60000
,
})
});
// request拦截器
// request拦截器
service
.
interceptors
.
request
.
use
(
config
=>
{
service
.
interceptors
.
request
.
use
(
if
(
config
.
method
===
'get'
&&
config
.
params
)
{
(
config
)
=>
{
let
url
=
config
.
url
+
'?'
+
tansParams
(
config
.
params
);
if
(
config
.
method
===
"get"
&&
config
.
params
)
{
url
=
url
.
slice
(
0
,
-
1
);
let
url
=
config
.
url
+
"?"
+
tansParams
(
config
.
params
);
config
.
params
=
{};
url
=
url
.
slice
(
0
,
-
1
);
config
.
url
=
url
;
config
.
params
=
{};
}
config
.
url
=
url
;
if
(
(
config
.
method
===
'post'
||
config
.
method
===
'put'
))
{
const
requestObj
=
{
url
:
config
.
url
,
data
:
typeof
config
.
data
===
'object'
?
JSON
.
stringify
(
config
.
data
)
:
config
.
data
,
time
:
new
Date
().
getTime
()
}
}
const
requestSize
=
Object
.
keys
(
JSON
.
stringify
(
requestObj
)).
length
;
// 请求数据大小
if
(
config
.
method
===
"post"
||
config
.
method
===
"put"
)
{
const
limitSize
=
5
*
1024
*
1024
;
// 限制存放数据5M
const
requestObj
=
{
if
(
requestSize
>=
limitSize
)
{
url
:
config
.
url
,
console
.
warn
(
`[
${
config
.
url
}
]: `
+
'请求数据大小超出允许的5M限制,无法进行防重复提交验证。'
)
data
:
return
config
;
typeof
config
.
data
===
"object"
?
JSON
.
stringify
(
config
.
data
)
:
config
.
data
,
time
:
new
Date
().
getTime
(),
};
const
requestSize
=
Object
.
keys
(
JSON
.
stringify
(
requestObj
)).
length
;
// 请求数据大小
const
limitSize
=
5
*
1024
*
1024
;
// 限制存放数据5M
if
(
requestSize
>=
limitSize
)
{
console
.
warn
(
`[
${
config
.
url
}
]: `
+
"请求数据大小超出允许的5M限制,无法进行防重复提交验证。"
,
);
return
config
;
}
const
sessionObj
=
local
.
session
.
getJSON
(
"sessionObj"
);
local
.
session
.
setJSON
(
"sessionObj"
,
requestObj
);
// if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
// local.session.setJSON('sessionObj', requestObj)
// } else {
// const s_url = sessionObj.url; // 请求地址
// const s_data = sessionObj.data; // 请求数据
// const s_time = sessionObj.time; // 请求时间
// const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
// // //console.log(s_data, requestObj.data, requestObj.time, s_time, s_url, requestObj.url);
// if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
// const message = '数据正在处理,请勿重复提交';
// console.warn(`[${s_url}]: ` + message)
// return Promise.reject(new Error(message))
// } else {
// local.session.setJSON('sessionObj', requestObj)
// }
// }
}
}
const
sessionObj
=
local
.
session
.
getJSON
(
'sessionObj'
)
return
config
;
local
.
session
.
setJSON
(
'sessionObj'
,
requestObj
)
},
(
error
)
=>
{
// if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
// local.session.setJSON('sessionObj', requestObj)
// } else {
// const s_url = sessionObj.url; // 请求地址
// const s_data = sessionObj.data; // 请求数据
// const s_time = sessionObj.time; // 请求时间
// const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交
// // //console.log(s_data, requestObj.data, requestObj.time, s_time, s_url, requestObj.url);
// if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
// const message = '数据正在处理,请勿重复提交';
// console.warn(`[${s_url}]: ` + message)
// return Promise.reject(new Error(message))
// } else {
// local.session.setJSON('sessionObj', requestObj)
// }
// }
}
return
config
},
error
=>
{
//console.log(error)
//console.log(error)
Promise
.
reject
(
error
)
Promise
.
reject
(
error
);
})
},
);
// 响应拦截器
// 响应拦截器
service
.
interceptors
.
response
.
use
(
service
.
interceptors
.
response
.
use
(
res
=>
{
(
res
)
=>
{
// 未设置状态码则默认成功状态
Loading
.
hide
();
const
code
=
res
.
data
.
code
||
200
;
Loading2
.
hide
();
// 获取错误信息
// 未设置状态码则默认成功状态
const
msg
=
res
.
data
.
msg
||
'未知错误'
;
const
code
=
res
.
data
.
code
||
200
;
// 二进制数据则直接返回
// 获取错误信息
if
(
res
.
request
.
responseType
===
'blob'
||
res
.
request
.
responseType
===
'arraybuffer'
)
{
const
msg
=
res
.
data
.
msg
||
"未知错误"
;
return
res
.
data
// 二进制数据则直接返回
}
if
(
if
(
code
===
401
)
{
res
.
request
.
responseType
===
"blob"
||
if
(
!
isRelogin
.
show
)
{
res
.
request
.
responseType
===
"arraybuffer"
isRelogin
.
show
=
true
;
)
{
removeToken
()
//删除token
return
res
.
data
;
ElMessageBox
.
confirm
(
'登录状态已过期,您可以继续留在该页面,或者重新登录'
,
'系统提示'
,
{
confirmButtonText
:
'重新登录'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
isRelogin
.
show
=
false
;
// useUserStore().logOut().then(() => {
location
.
href
=
'/'
;
// })
}).
catch
(()
=>
{
isRelogin
.
show
=
false
;
});
}
}
return
Promise
.
reject
(
'无效的会话,或者会话已过期,请重新登录。'
)
if
(
code
===
401
)
{
}
else
if
(
code
===
500
)
{
if
(
!
isRelogin
.
show
)
{
ElMessage
({
message
:
msg
,
type
:
'error'
})
isRelogin
.
show
=
true
;
return
Promise
.
reject
(
new
Error
(
msg
))
removeToken
();
//删除token
}
else
if
(
code
===
601
)
{
ElMessageBox
.
confirm
(
ElMessage
({
message
:
msg
,
type
:
'warning'
})
"登录状态已过期,您可以继续留在该页面,或者重新登录"
,
return
Promise
.
reject
(
new
Error
(
msg
))
"系统提示"
,
}
else
if
(
code
!==
200
)
{
{
ElNotification
.
error
({
title
:
msg
})
confirmButtonText
:
"重新登录"
,
return
Promise
.
reject
(
'error'
)
cancelButtonText
:
"取消"
,
}
else
{
type
:
"warning"
,
return
Promise
.
resolve
(
res
.
data
)
},
}
)
},
.
then
(()
=>
{
error
=>
{
isRelogin
.
show
=
false
;
// useUserStore().logOut().then(() => {
location
.
href
=
"/"
;
// })
})
.
catch
(()
=>
{
isRelogin
.
show
=
false
;
});
}
return
Promise
.
reject
(
"无效的会话,或者会话已过期,请重新登录。"
);
}
else
if
(
code
===
500
)
{
ElMessage
({
message
:
msg
,
type
:
"error"
});
return
Promise
.
reject
(
new
Error
(
msg
));
}
else
if
(
code
===
601
)
{
ElMessage
({
message
:
msg
,
type
:
"warning"
});
return
Promise
.
reject
(
new
Error
(
msg
));
}
else
if
(
code
!==
200
)
{
ElNotification
.
error
({
title
:
msg
});
return
Promise
.
reject
(
"error"
);
}
else
{
return
Promise
.
resolve
(
res
.
data
);
}
},
(
error
)
=>
{
//console.log('err' + error)
//console.log('err' + error)
let
{
message
}
=
error
;
let
{
message
}
=
error
;
if
(
message
==
"Network Error"
)
{
if
(
message
==
"Network Error"
)
{
...
@@ -120,35 +147,45 @@ service.interceptors.response.use(
...
@@ -120,35 +147,45 @@ service.interceptors.response.use(
}
else
if
(
message
.
includes
(
"Request failed with status code"
))
{
}
else
if
(
message
.
includes
(
"Request failed with status code"
))
{
message
=
"系统接口"
+
message
.
substr
(
message
.
length
-
3
)
+
"异常"
;
message
=
"系统接口"
+
message
.
substr
(
message
.
length
-
3
)
+
"异常"
;
}
}
ElMessage
({
message
:
message
,
type
:
'error'
,
duration
:
5
*
1000
})
ElMessage
({
message
:
message
,
type
:
"error"
,
duration
:
5
*
1000
});
return
Promise
.
reject
(
error
)
return
Promise
.
reject
(
error
)
;
}
}
,
)
)
;
// 通用下载方法
// 通用下载方法
export
function
download
(
url
,
params
,
filename
,
config
)
{
export
function
download
(
url
,
params
,
filename
,
config
)
{
downloadLoadingInstance
=
ElLoading
.
service
({
text
:
"正在下载数据,请稍候"
,
background
:
"rgba(0, 0, 0, 0.7)"
,
})
downloadLoadingInstance
=
ElLoading
.
service
({
return
service
.
post
(
url
,
params
,
{
text
:
"正在下载数据,请稍候"
,
transformRequest
:
[(
params
)
=>
{
return
tansParams
(
params
)
}],
background
:
"rgba(0, 0, 0, 0.7)"
,
headers
:
{
'Content-Type'
:
'application/x-www-form-urlencoded'
},
});
responseType
:
'blob'
,
return
service
...
config
.
post
(
url
,
params
,
{
}).
then
(
async
(
data
)
=>
{
transformRequest
:
[
if
(
data
.
type
!==
'application/json'
)
{
(
params
)
=>
{
const
blob
=
new
Blob
([
data
])
return
tansParams
(
params
);
saveAs
(
blob
,
filename
)
},
}
else
{
],
const
resText
=
await
data
.
text
();
headers
:
{
"Content-Type"
:
"application/x-www-form-urlencoded"
},
const
rspObj
=
JSON
.
parse
(
resText
);
responseType
:
"blob"
,
const
errMsg
=
rspObj
.
msg
||
'下载文件失败,请联系管理员!'
;
...
config
,
ElMessage
.
error
(
errMsg
);
})
}
.
then
(
async
(
data
)
=>
{
downloadLoadingInstance
.
close
();
if
(
data
.
type
!==
"application/json"
)
{
}).
catch
((
r
)
=>
{
const
blob
=
new
Blob
([
data
]);
console
.
error
(
r
)
saveAs
(
blob
,
filename
);
ElMessage
.
error
(
'下载文件出现错误,请联系管理员!'
)
}
else
{
downloadLoadingInstance
.
close
();
const
resText
=
await
data
.
text
();
})
const
rspObj
=
JSON
.
parse
(
resText
);
const
errMsg
=
rspObj
.
msg
||
"下载文件失败,请联系管理员!"
;
ElMessage
.
error
(
errMsg
);
}
downloadLoadingInstance
.
close
();
})
.
catch
((
r
)
=>
{
console
.
error
(
r
);
ElMessage
.
error
(
"下载文件出现错误,请联系管理员!"
);
downloadLoadingInstance
.
close
();
});
}
}
export
default
service
export
default
service
;
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论