Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_54851307
vue-vben-admin
提交
e83cb06b
V
vue-vben-admin
项目概览
weixin_54851307
/
vue-vben-admin
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vue-vben-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e83cb06b
编写于
10月 13, 2020
作者:
N
nebv
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: projectSetting add closeMessageOnSwitch and removeAllHttpPending
上级
4500214b
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
30 addition
and
23 deletion
+30
-23
build/script/preview.ts
build/script/preview.ts
+0
-3
src/router/guard/index.ts
src/router/guard/index.ts
+11
-6
src/settings/projectSetting.ts
src/settings/projectSetting.ts
+7
-0
src/types/config.d.ts
src/types/config.d.ts
+4
-0
src/utils/http/axios/Axios.ts
src/utils/http/axios/Axios.ts
+3
-2
src/utils/http/axios/checkStatus.ts
src/utils/http/axios/checkStatus.ts
+2
-3
src/utils/http/axios/const.ts
src/utils/http/axios/const.ts
+1
-0
src/utils/http/axios/index.ts
src/utils/http/axios/index.ts
+2
-9
未找到文件。
build/script/preview.ts
浏览文件 @
e83cb06b
...
...
@@ -16,9 +16,6 @@ const startApp = () => {
const
port
=
9680
;
portfinder
.
basePort
=
port
;
const
app
=
new
Koa
();
// const connect = require('connect');
// const serveStatic = require('serve-static');
// const app = connect();
app
.
use
(
staticServer
(
resolve
(
process
.
cwd
(),
viteConfig
.
outDir
||
'
dist
'
)));
...
...
src/router/guard/index.ts
浏览文件 @
e83cb06b
...
...
@@ -11,22 +11,27 @@ import { getIsOpenTab } from '/@/utils/helper/routeHelper';
const
{
projectSetting
}
=
useSetting
();
export
function
createGuard
(
router
:
Router
)
{
const
axiosCanceler
=
new
AxiosCanceler
();
const
{
openNProgress
,
closeMessageOnSwitch
,
removeAllHttpPending
}
=
projectSetting
;
let
axiosCanceler
:
AxiosCanceler
|
null
;
if
(
removeAllHttpPending
)
{
axiosCanceler
=
new
AxiosCanceler
();
}
router
.
beforeEach
(
async
(
to
)
=>
{
const
isOpen
=
getIsOpenTab
(
to
.
path
);
to
.
meta
.
inTab
=
isOpen
;
try
{
Modal
.
destroyAll
();
notification
.
destroy
();
if
(
closeMessageOnSwitch
)
{
Modal
.
destroyAll
();
notification
.
destroy
();
}
// TODO Some special interfaces require long connections
// Switching the route will delete the previous request
axiosCanceler
.
removeAllPending
();
removeAllHttpPending
&&
axiosCanceler
!
.
removeAllPending
();
}
catch
(
error
)
{
console
.
warn
(
'
basic guard error:
'
+
error
);
}
});
projectSetting
.
openNProgress
&&
createProgressGuard
(
router
);
openNProgress
&&
createProgressGuard
(
router
);
createPermissionGuard
(
router
);
createPageTitleGuard
(
router
);
createPageLoadingGuard
(
router
);
...
...
src/settings/projectSetting.ts
浏览文件 @
e83cb06b
...
...
@@ -116,6 +116,13 @@ const setting: ProjectConfig = {
// 是否可以嵌入iframe页面
canEmbedIFramePage
:
true
,
// 切换界面的时候是否删除未关闭的message及notify
closeMessageOnSwitch
:
true
,
// 切换界面的时候是否取消已经发送但是未响应的http请求。
// 如果开启,想对单独接口覆盖。可以在单独接口设置
removeAllHttpPending
:
true
,
};
export
default
setting
;
src/types/config.d.ts
浏览文件 @
e83cb06b
...
...
@@ -102,6 +102,10 @@ export interface ProjectConfig {
openNProgress
:
boolean
;
// 是否可以嵌入iframe页面
canEmbedIFramePage
:
boolean
;
// 切换界面的时候是否删除未关闭的message及notify
closeMessageOnSwitch
:
boolean
;
// 切换界面的时候是否取消已经发送但是未响应的http请求。
removeAllHttpPending
:
boolean
;
}
export
interface
GlobConfig
{
...
...
src/utils/http/axios/Axios.ts
浏览文件 @
e83cb06b
...
...
@@ -5,8 +5,9 @@ import { AxiosCanceler } from './axiosCancel';
import
{
isFunction
}
from
'
/@/utils/is
'
;
import
{
cloneDeep
}
from
'
lodash-es
'
;
import
{
RequestOptions
,
CreateAxiosOptions
,
Result
}
from
'
./types
'
;
import
type
{
RequestOptions
,
CreateAxiosOptions
,
Result
}
from
'
./types
'
;
import
{
ContentTypeEnum
}
from
'
/@/enums/httpEnum
'
;
import
{
errorResult
}
from
'
./const
'
;
export
*
from
'
./axiosTransform
'
;
...
...
@@ -147,7 +148,7 @@ export class VAxios {
.
then
((
res
:
AxiosResponse
<
Result
>
)
=>
{
if
(
transformRequestData
&&
isFunction
(
transformRequestData
))
{
const
ret
=
transformRequestData
(
res
,
opt
);
ret
!==
undefined
?
resolve
(
ret
)
:
reject
(
new
Error
(
'
request error!
'
));
ret
!==
errorResult
?
resolve
(
ret
)
:
reject
(
new
Error
(
'
request error!
'
));
return
;
}
resolve
((
res
as
unknown
)
as
Promise
<
T
>
);
...
...
src/utils/http/axios/checkStatus.ts
浏览文件 @
e83cb06b
import
{
useMessage
}
from
'
/@/hooks/web/useMessage
'
;
import
{
userStore
}
from
'
/@/store/modules/user
'
;
const
{
createMessage
}
=
useMessage
();
const
error
=
createMessage
.
error
!
;
...
...
@@ -12,9 +13,7 @@ export function checkStatus(status: number, msg: string): void {
// 在登录成功后返回当前页面,这一步需要在登录页操作。
case
401
:
error
(
'
用户没有权限(令牌、用户名、密码错误)!
'
);
// store.dispatch('user/loginOut', {
// goLogin: true,
// });
userStore
.
loginOut
(
true
);
break
;
case
403
:
error
(
'
用户得到授权,但是访问是被禁止的。!
'
);
...
...
src/utils/http/axios/const.ts
0 → 100644
浏览文件 @
e83cb06b
export
const
errorResult
=
'
__ERROR_RESULT__
'
;
src/utils/http/axios/index.ts
浏览文件 @
e83cb06b
...
...
@@ -20,6 +20,7 @@ import { formatRequestDate } from '/@/utils/dateUtil';
import
{
setObjToUrlParams
,
deepMerge
}
from
'
/@/utils
'
;
import
{
errorStore
,
ErrorTypeEnum
,
ErrorInfo
}
from
'
/@/store/modules/error
'
;
import
{
appStore
}
from
'
/@/store/modules/app
'
;
import
{
errorResult
}
from
'
./const
'
;
const
{
globSetting
}
=
useSetting
();
const
prefix
=
globSetting
.
urlPrefix
;
...
...
@@ -62,7 +63,6 @@ const transform: AxiosTransform = {
return
res
.
data
;
}
// 错误的时候返回
const
errorResult
=
undefined
;
const
{
data
}
=
res
;
if
(
!
data
)
{
...
...
@@ -89,7 +89,7 @@ const transform: AxiosTransform = {
// 接口请求成功,直接返回结果
if
(
code
===
ResultEnum
.
SUCCESS
)
{
return
result
||
true
;
return
result
;
}
// 接口请求错误,统一提示错误信息
if
(
code
===
ResultEnum
.
ERROR
)
{
...
...
@@ -234,13 +234,6 @@ function createAxios(opt?: Partial<CreateAxiosOptions>) {
}
export
const
defHttp
=
createAxios
();
// var mock = new MockAdapter(axios);
// mock.onGet('/api/aaa').reply(200, {
// users: [{ id: 1, name: 'John Smith' }],
// });
// default
// other api url
// export const otherHttp = createAxios({
// requestOptions: {
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录