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 个修改的文件
包含
102 行增加
和
65 行删除
+102
-65
request.js
src/utils/request.js
+102
-65
没有找到文件。
src/utils/request.js
浏览文件 @
3046471c
import
axios
from
'axios'
import
{
ElNotification
,
ElMessageBox
,
ElMessage
,
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
axios
from
"axios"
;
import
{
ElNotification
,
ElMessageBox
,
ElMessage
,
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'
let
downloadLoadingInstance
;
// 是否显示重新登录
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实例
// console.log("import.meta.env.VITE_API_URL",import.meta.env.VITE_API_URL);
const
service
=
axios
.
create
({
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL
:
import
.
meta
.
env
.
VITE_API_URL
,
// 超时
timeout
:
60000
})
timeout
:
60000
,
});
// request拦截器
service
.
interceptors
.
request
.
use
(
config
=>
{
if
(
config
.
method
===
'get'
&&
config
.
params
)
{
let
url
=
config
.
url
+
'?'
+
tansParams
(
config
.
params
);
service
.
interceptors
.
request
.
use
(
(
config
)
=>
{
if
(
config
.
method
===
"get"
&&
config
.
params
)
{
let
url
=
config
.
url
+
"?"
+
tansParams
(
config
.
params
);
url
=
url
.
slice
(
0
,
-
1
);
config
.
params
=
{};
config
.
url
=
url
;
}
if
(
(
config
.
method
===
'post'
||
config
.
method
===
'put'
))
{
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
()
}
data
:
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限制,无法进行防重复提交验证。'
)
console
.
warn
(
`[
${
config
.
url
}
]: `
+
"请求数据大小超出允许的5M限制,无法进行防重复提交验证。"
,
);
return
config
;
}
const
sessionObj
=
local
.
session
.
getJSON
(
'sessionObj'
)
local
.
session
.
setJSON
(
'sessionObj'
,
requestObj
)
const
sessionObj
=
local
.
session
.
getJSON
(
"sessionObj"
);
local
.
session
.
setJSON
(
"sessionObj"
,
requestObj
);
// if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
// local.session.setJSON('sessionObj', requestObj)
...
...
@@ -65,52 +76,68 @@ service.interceptors.request.use(config => {
// }
// }
}
return
config
},
error
=>
{
return
config
;
},
(
error
)
=>
{
//console.log(error)
Promise
.
reject
(
error
)
})
Promise
.
reject
(
error
);
},
);
// 响应拦截器
service
.
interceptors
.
response
.
use
(
res
=>
{
(
res
)
=>
{
Loading
.
hide
();
Loading2
.
hide
();
// 未设置状态码则默认成功状态
const
code
=
res
.
data
.
code
||
200
;
// 获取错误信息
const
msg
=
res
.
data
.
msg
||
'未知错误'
;
const
msg
=
res
.
data
.
msg
||
"未知错误"
;
// 二进制数据则直接返回
if
(
res
.
request
.
responseType
===
'blob'
||
res
.
request
.
responseType
===
'arraybuffer'
)
{
return
res
.
data
if
(
res
.
request
.
responseType
===
"blob"
||
res
.
request
.
responseType
===
"arraybuffer"
)
{
return
res
.
data
;
}
if
(
code
===
401
)
{
if
(
!
isRelogin
.
show
)
{
isRelogin
.
show
=
true
;
removeToken
()
//删除token
ElMessageBox
.
confirm
(
'登录状态已过期,您可以继续留在该页面,或者重新登录'
,
'系统提示'
,
{
confirmButtonText
:
'重新登录'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
removeToken
();
//删除token
ElMessageBox
.
confirm
(
"登录状态已过期,您可以继续留在该页面,或者重新登录"
,
"系统提示"
,
{
confirmButtonText
:
"重新登录"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
},
)
.
then
(()
=>
{
isRelogin
.
show
=
false
;
// useUserStore().logOut().then(() => {
location
.
href
=
'/'
;
location
.
href
=
"/"
;
// })
}).
catch
(()
=>
{
})
.
catch
(()
=>
{
isRelogin
.
show
=
false
;
});
}
return
Promise
.
reject
(
'无效的会话,或者会话已过期,请重新登录。'
)
return
Promise
.
reject
(
"无效的会话,或者会话已过期,请重新登录。"
);
}
else
if
(
code
===
500
)
{
ElMessage
({
message
:
msg
,
type
:
'error'
})
return
Promise
.
reject
(
new
Error
(
msg
))
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
))
ElMessage
({
message
:
msg
,
type
:
"warning"
});
return
Promise
.
reject
(
new
Error
(
msg
));
}
else
if
(
code
!==
200
)
{
ElNotification
.
error
({
title
:
msg
})
return
Promise
.
reject
(
'error'
)
ElNotification
.
error
({
title
:
msg
});
return
Promise
.
reject
(
"error"
);
}
else
{
return
Promise
.
resolve
(
res
.
data
)
return
Promise
.
resolve
(
res
.
data
);
}
},
error
=>
{
},
(
error
)
=>
{
//console.log('err' + error)
let
{
message
}
=
error
;
if
(
message
==
"Network Error"
)
{
...
...
@@ -120,35 +147,45 @@ service.interceptors.response.use(
}
else
if
(
message
.
includes
(
"Request failed with status code"
))
{
message
=
"系统接口"
+
message
.
substr
(
message
.
length
-
3
)
+
"异常"
;
}
ElMessage
({
message
:
message
,
type
:
'error'
,
duration
:
5
*
1000
})
return
Promise
.
reject
(
error
)
}
)
ElMessage
({
message
:
message
,
type
:
"error"
,
duration
:
5
*
1000
});
return
Promise
.
reject
(
error
)
;
}
,
)
;
// 通用下载方法
export
function
download
(
url
,
params
,
filename
,
config
)
{
downloadLoadingInstance
=
ElLoading
.
service
({
text
:
"正在下载数据,请稍候"
,
background
:
"rgba(0, 0, 0, 0.7)"
,
})
return
service
.
post
(
url
,
params
,
{
transformRequest
:
[(
params
)
=>
{
return
tansParams
(
params
)
}],
headers
:
{
'Content-Type'
:
'application/x-www-form-urlencoded'
},
responseType
:
'blob'
,
...
config
}).
then
(
async
(
data
)
=>
{
if
(
data
.
type
!==
'application/json'
)
{
const
blob
=
new
Blob
([
data
])
saveAs
(
blob
,
filename
)
downloadLoadingInstance
=
ElLoading
.
service
({
text
:
"正在下载数据,请稍候"
,
background
:
"rgba(0, 0, 0, 0.7)"
,
});
return
service
.
post
(
url
,
params
,
{
transformRequest
:
[
(
params
)
=>
{
return
tansParams
(
params
);
},
],
headers
:
{
"Content-Type"
:
"application/x-www-form-urlencoded"
},
responseType
:
"blob"
,
...
config
,
})
.
then
(
async
(
data
)
=>
{
if
(
data
.
type
!==
"application/json"
)
{
const
blob
=
new
Blob
([
data
]);
saveAs
(
blob
,
filename
);
}
else
{
const
resText
=
await
data
.
text
();
const
rspObj
=
JSON
.
parse
(
resText
);
const
errMsg
=
rspObj
.
msg
||
'下载文件失败,请联系管理员!'
;
const
errMsg
=
rspObj
.
msg
||
"下载文件失败,请联系管理员!"
;
ElMessage
.
error
(
errMsg
);
}
downloadLoadingInstance
.
close
();
}).
catch
((
r
)
=>
{
console
.
error
(
r
)
ElMessage
.
error
(
'下载文件出现错误,请联系管理员!'
)
downloadLoadingInstance
.
close
();
})
.
catch
((
r
)
=>
{
console
.
error
(
r
);
ElMessage
.
error
(
"下载文件出现错误,请联系管理员!"
);
downloadLoadingInstance
.
close
();
});
}
export
default
service
export
default
service
;
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论