mirror of
				https://gitee.com/hhyykk/ipms-sjy-ui.git
				synced 2025-11-04 12:18:43 +08:00 
			
		
		
		
	feat: add useTagsView hooks
This commit is contained in:
		
							
								
								
									
										63
									
								
								src/hooks/web/useTagsView.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								src/hooks/web/useTagsView.ts
									
									
									
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user