useTabs.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { nextTick } from 'vue'
  2. import NProgress from 'nprogress'
  3. import 'nprogress/nprogress.css'
  4. import router from '@/router'
  5. import store from '@/store'
  6. export default {
  7. //刷新标签
  8. refresh() {
  9. NProgress.start()
  10. const route = router.currentRoute.value
  11. store.commit("removeKeepLive", route.name)
  12. store.commit("setRouteShow", false)
  13. nextTick(() => {
  14. store.commit("pushKeepLive", route.name)
  15. store.commit("setRouteShow", true)
  16. NProgress.done()
  17. })
  18. },
  19. //关闭标签
  20. close(tag) {
  21. const route = tag || router.currentRoute.value
  22. store.commit("removeViewTags", route)
  23. store.commit("removeIframeList", route)
  24. store.commit("removeKeepLive", route.name)
  25. const tagList = store.state.viewTags.viewTags
  26. const latestView = tagList.slice(-1)[0]
  27. if (latestView) {
  28. router.push(latestView)
  29. } else {
  30. router.push('/')
  31. }
  32. },
  33. //关闭标签后处理
  34. closeNext(next) {
  35. const route = router.currentRoute.value
  36. store.commit("removeViewTags", route)
  37. store.commit("removeIframeList", route)
  38. store.commit("removeKeepLive", route.name)
  39. if(next){
  40. const tagList = store.state.viewTags.viewTags
  41. next(tagList)
  42. }
  43. },
  44. //关闭其他
  45. closeOther() {
  46. const route = router.currentRoute.value
  47. const tagList = [...store.state.viewTags.viewTags]
  48. tagList.forEach(tag => {
  49. if(tag.meta&&tag.meta.affix || route.fullPath==tag.fullPath){
  50. return true
  51. }else{
  52. this.close(tag)
  53. }
  54. })
  55. },
  56. //设置标题
  57. setTitle(title){
  58. store.commit("updateViewTagsTitle", title)
  59. }
  60. }