feat: add useTagsView hooks
							parent
							
								
									57e8256e9a
								
							
						
					
					
						commit
						2a029ba35b
					
				|  | @ -0,0 +1,63 @@ | |||
| import { useTagsViewStoreWithOut } from '@/store/modules/tagsView' | ||||
| import { RouteLocationNormalizedLoaded, useRouter } from 'vue-router' | ||||
| import { computed, nextTick, unref } from 'vue' | ||||
| 
 | ||||
| export const useTagsView = () => { | ||||
|   const tagsViewStore = useTagsViewStoreWithOut() | ||||
| 
 | ||||
|   const { replace, currentRoute } = useRouter() | ||||
| 
 | ||||
|   const selectedTag = computed(() => tagsViewStore.getSelectedTag) | ||||
| 
 | ||||
|   const closeAll = (callback?: Fn) => { | ||||
|     tagsViewStore.delAllViews() | ||||
|     callback?.() | ||||
|   } | ||||
| 
 | ||||
|   const closeLeft = (callback?: Fn) => { | ||||
|     tagsViewStore.delLeftViews(unref(selectedTag) as RouteLocationNormalizedLoaded) | ||||
|     callback?.() | ||||
|   } | ||||
| 
 | ||||
|   const closeRight = (callback?: Fn) => { | ||||
|     tagsViewStore.delRightViews(unref(selectedTag) as RouteLocationNormalizedLoaded) | ||||
|     callback?.() | ||||
|   } | ||||
| 
 | ||||
|   const closeOther = (callback?: Fn) => { | ||||
|     tagsViewStore.delOthersViews(unref(selectedTag) as RouteLocationNormalizedLoaded) | ||||
|     callback?.() | ||||
|   } | ||||
| 
 | ||||
|   const closeCurrent = (view?: RouteLocationNormalizedLoaded, callback?: Fn) => { | ||||
|     if (view?.meta?.affix) return | ||||
|     tagsViewStore.delView(view || unref(currentRoute)) | ||||
| 
 | ||||
|     callback?.() | ||||
|   } | ||||
| 
 | ||||
|   const refreshPage = async (view?: RouteLocationNormalizedLoaded, callback?: Fn) => { | ||||
|     tagsViewStore.delCachedView() | ||||
|     const { path, query } = view || unref(currentRoute) | ||||
|     await nextTick() | ||||
|     replace({ | ||||
|       path: '/redirect' + path, | ||||
|       query: query | ||||
|     }) | ||||
|     callback?.() | ||||
|   } | ||||
| 
 | ||||
|   const setTitle = (title: string, path?: string) => { | ||||
|     tagsViewStore.setTitle(title, path) | ||||
|   } | ||||
| 
 | ||||
|   return { | ||||
|     closeAll, | ||||
|     closeLeft, | ||||
|     closeRight, | ||||
|     closeOther, | ||||
|     closeCurrent, | ||||
|     refreshPage, | ||||
|     setTitle | ||||
|   } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	 xingyu
						xingyu