Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-vue-admin
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-vue-admin
Commits
5ddccf6b
Unverified
提交
5ddccf6b
authored
6月 01, 2021
作者:
Netfan
提交者:
GitHub
6月 01, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(tabs): add setTabTitle method (#680)
添加设置标签页标题的方法和演示
上级
644dbe31
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
43 行增加
和
6 行删除
+43
-6
useTabs.ts
src/hooks/web/useTabs.ts
+10
-0
multipleTab.ts
src/store/modules/multipleTab.ts
+11
-0
index.vue
src/views/demo/feat/tabs/index.vue
+22
-6
没有找到文件。
src/hooks/web/useTabs.ts
浏览文件 @
5ddccf6b
...
@@ -37,6 +37,15 @@ export function useTabs(_router?: Router) {
...
@@ -37,6 +37,15 @@ export function useTabs(_router?: Router) {
return
tabStore
.
getTabList
.
find
((
item
)
=>
item
.
path
===
route
.
path
)
!
;
return
tabStore
.
getTabList
.
find
((
item
)
=>
item
.
path
===
route
.
path
)
!
;
}
}
async
function
updateTabTitle
(
title
:
string
,
tab
?:
RouteLocationNormalized
)
{
const
canIUse
=
canIUseTabs
;
if
(
!
canIUse
)
{
return
;
}
const
targetTab
=
tab
||
getCurrentTab
();
await
tabStore
.
setTabTitle
(
title
,
targetTab
);
}
async
function
handleTabAction
(
action
:
TableActionEnum
,
tab
?:
RouteLocationNormalized
)
{
async
function
handleTabAction
(
action
:
TableActionEnum
,
tab
?:
RouteLocationNormalized
)
{
const
canIUse
=
canIUseTabs
;
const
canIUse
=
canIUseTabs
;
if
(
!
canIUse
)
{
if
(
!
canIUse
)
{
...
@@ -81,5 +90,6 @@ export function useTabs(_router?: Router) {
...
@@ -81,5 +90,6 @@ export function useTabs(_router?: Router) {
close
:
(
tab
?:
RouteLocationNormalized
)
=>
{
close
:
(
tab
?:
RouteLocationNormalized
)
=>
{
handleTabAction
(
TableActionEnum
.
CLOSE
,
tab
);
handleTabAction
(
TableActionEnum
.
CLOSE
,
tab
);
},
},
setTitle
:
(
title
:
string
,
tab
?:
RouteLocationNormalized
)
=>
updateTabTitle
(
title
,
tab
),
};
};
}
}
src/store/modules/multipleTab.ts
浏览文件 @
5ddccf6b
...
@@ -286,6 +286,17 @@ export const useMultipleTabStore = defineStore({
...
@@ -286,6 +286,17 @@ export const useMultipleTabStore = defineStore({
async
bulkCloseTabs
(
pathList
:
string
[])
{
async
bulkCloseTabs
(
pathList
:
string
[])
{
this
.
tabList
=
this
.
tabList
.
filter
((
item
)
=>
!
pathList
.
includes
(
item
.
fullPath
));
this
.
tabList
=
this
.
tabList
.
filter
((
item
)
=>
!
pathList
.
includes
(
item
.
fullPath
));
},
},
/**
* Set tab's title
*/
async
setTabTitle
(
title
:
string
,
route
:
RouteLocationNormalized
)
{
const
findTab
=
this
.
getTabList
.
find
((
item
)
=>
item
===
route
);
if
(
findTab
)
{
findTab
.
meta
.
title
=
title
;
await
this
.
updateCacheTab
();
}
},
},
},
});
});
...
...
src/views/demo/feat/tabs/index.vue
浏览文件 @
5ddccf6b
<
template
>
<
template
>
<PageWrapper
title=
"标签页操作示例"
>
<PageWrapper
title=
"标签页操作示例"
>
<CollapseContainer
title=
"在下面输入框输入文本,切换后回来内容会保存"
>
<CollapseContainer
title=
"在下面输入框输入文本,切换后回来内容会保存"
>
<a-input
placeholder=
"请输入"
/>
<a-alert
banner
message=
"该操作不会影响页面标题,仅修改Tab标题"
/>
<template
class=
"mt-2 flex flex-grow-0"
>
<a-button
class=
"mr-2"
@
click=
"setTabTitle"
type=
"primary"
>
设置Tab标题
</a-button>
<a-input
placeholder=
"请输入"
v-model:value=
"title"
class=
"mr-4 w-12"
/>
</
template
>
</CollapseContainer>
</CollapseContainer>
<CollapseContainer
class=
"mt-4"
title=
"标签页操作"
>
<CollapseContainer
class=
"mt-4"
title=
"标签页操作"
>
...
@@ -15,18 +19,28 @@
...
@@ -15,18 +19,28 @@
</PageWrapper>
</PageWrapper>
</template>
</template>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
'vue'
;
import
{
defineComponent
,
ref
}
from
'vue'
;
import
{
CollapseContainer
}
from
'/@/components/Container/index'
;
import
{
CollapseContainer
}
from
'/@/components/Container/index'
;
import
{
useTabs
}
from
'/@/hooks/web/useTabs'
;
import
{
useTabs
}
from
'/@/hooks/web/useTabs'
;
import
{
PageWrapper
}
from
'/@/components/Page'
;
import
{
PageWrapper
}
from
'/@/components/Page'
;
import
{
Input
}
from
'ant-design-vue'
;
import
{
Input
,
Alert
}
from
'ant-design-vue'
;
import
{
useMessage
}
from
'/@/hooks/web/useMessage'
;
export
default
defineComponent
({
export
default
defineComponent
({
name
:
'TabsDemo'
,
name
:
'TabsDemo'
,
components
:
{
CollapseContainer
,
PageWrapper
,
[
Input
.
name
]:
Input
},
components
:
{
CollapseContainer
,
PageWrapper
,
[
Input
.
name
]:
Input
,
[
Alert
.
name
]:
Alert
},
setup
()
{
setup
()
{
const
{
closeAll
,
closeLeft
,
closeRight
,
closeOther
,
closeCurrent
,
refreshPage
}
=
useTabs
();
const
title
=
ref
<
string
>
(
''
);
const
{
closeAll
,
closeLeft
,
closeRight
,
closeOther
,
closeCurrent
,
refreshPage
,
setTitle
}
=
useTabs
();
const
{
createMessage
}
=
useMessage
();
function
setTabTitle
()
{
if
(
title
.
value
)
{
setTitle
(
title
.
value
);
}
else
{
createMessage
.
error
(
'请输入要设置的Tab标题!'
);
}
}
return
{
return
{
closeAll
,
closeAll
,
closeLeft
,
closeLeft
,
...
@@ -34,6 +48,8 @@
...
@@ -34,6 +48,8 @@
closeOther
,
closeOther
,
closeCurrent
,
closeCurrent
,
refreshPage
,
refreshPage
,
setTabTitle
,
title
,
};
};
},
},
});
});
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论