parent
							
								
									ea3249c421
								
							
						
					
					
						commit
						5eea8d1681
					
				| 
						 | 
				
			
			@ -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