1- import { getBreadCrumbList , setTagNavListInLocalstorage , getMenuByRouter , getTagNavListFromLocalstorage , getHomeRoute , routeHasExist } from '@/libs/util'
1+ import {
2+ getBreadCrumbList ,
3+ setTagNavListInLocalstorage ,
4+ getMenuByRouter ,
5+ getTagNavListFromLocalstorage ,
6+ getHomeRoute ,
7+ getNextRoute ,
8+ routeHasExist ,
9+ routeEqual
10+ } from '@/libs/util'
11+ import beforeClose from '@/router/before-close'
12+ import router from '@/router'
213import routers from '@/router/routers'
14+
15+ const closePage = ( state , route ) => {
16+ const nextRoute = getNextRoute ( state . tagNavList , route )
17+ state . tagNavList = state . tagNavList . filter ( item => {
18+ return ! routeEqual ( item , route )
19+ } )
20+ router . push ( nextRoute )
21+ }
22+
323export default {
424 state : {
525 breadCrumbList : [ ] ,
@@ -20,6 +40,20 @@ export default {
2040 setTagNavListInLocalstorage ( [ ...list ] )
2141 } else state . tagNavList = getTagNavListFromLocalstorage ( )
2242 } ,
43+ closeTag ( state , route ) {
44+ let tag = state . tagNavList . filter ( item => routeEqual ( item , route ) )
45+ route = tag [ 0 ] ? tag [ 0 ] : null
46+ if ( ! route ) return
47+ if ( route . meta && route . meta . beforeCloseName && route . meta . beforeCloseName in beforeClose ) {
48+ new Promise ( beforeClose [ route . meta . beforeCloseName ] ) . then ( close => {
49+ if ( close ) {
50+ closePage ( state , route )
51+ }
52+ } )
53+ } else {
54+ closePage ( state , route )
55+ }
56+ } ,
2357 addTag ( state , { route, type = 'unshift' } ) {
2458 if ( ! routeHasExist ( state . tagNavList , route ) ) {
2559 if ( type === 'push' ) state . tagNavList . push ( route )
0 commit comments