Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
najiu-admin-template
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
najiu-frontend
najiu-admin-template
Commits
5ddccf6b
Unverified
Commit
5ddccf6b
authored
Jun 01, 2021
by
Netfan
Committed by
GitHub
Jun 01, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(tabs): add setTabTitle method (#680)
添加设置标签页标题的方法和演示
parent
644dbe31
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
43 additions
and
6 deletions
+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
No files found.
src/hooks/web/useTabs.ts
View file @
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
View file @
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
View file @
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
,
};
};
},
},
});
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment