keepAliveNames.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { defineStore } from 'pinia';
  2. /**
  3. * 路由缓存列表
  4. * @methods setCacheKeepAlive 设置要缓存的路由 names(开启 Tagsview)
  5. * @methods addCachedView 添加要缓存的路由 names(关闭 Tagsview)
  6. * @methods delCachedView 删除要缓存的路由 names(关闭 Tagsview)
  7. * @methods delOthersCachedViews 右键菜单`关闭其它`,删除要缓存的路由 names(关闭 Tagsview)
  8. * @methods delAllCachedViews 右键菜单`全部关闭`,删除要缓存的路由 names(关闭 Tagsview)
  9. */
  10. export const useKeepALiveNames = defineStore('keepALiveNames', {
  11. state: (): KeepAliveNamesState => ({
  12. keepAliveNames: [],
  13. cachedViews: [],
  14. }),
  15. actions: {
  16. async setCacheKeepAlive(data: Array<string>) {
  17. this.keepAliveNames = data;
  18. },
  19. async addCachedView(view: any) {
  20. if (view.meta.isKeepAlive) this.cachedViews?.push(view.name);
  21. },
  22. async delCachedView(view: any) {
  23. const index = this.cachedViews.indexOf(view.name);
  24. index > -1 && this.cachedViews.splice(index, 1);
  25. },
  26. async delOthersCachedViews(view: any) {
  27. if (view.meta.isKeepAlive) this.cachedViews = [view.name];
  28. else this.cachedViews = [];
  29. },
  30. async delAllCachedViews() {
  31. this.cachedViews = [];
  32. },
  33. },
  34. });