keepAlive.ts 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import { defineStore } from "pinia";
  2. import { KeepAliveState } from "@/stores/interface";
  3. import { cloneDeep } from "lodash-es";
  4. export const useKeepAliveStore = defineStore({
  5. id: "geeker-keepAlive",
  6. state: (): KeepAliveState => ({
  7. keepAliveName: [],
  8. keepAliveList: []
  9. }),
  10. getters: {
  11. getKeepAliveList(): any[] {
  12. return this.keepAliveList;
  13. }
  14. },
  15. actions: {
  16. setKeepAliveList(keepAliveList: any) {
  17. this.keepAliveList = keepAliveList;
  18. console.log("getKeepAliveName routeItem setKeepAliveList :>> ", JSON.stringify(this.keepAliveList));
  19. console.log("getKeepAliveName routeItem setKeepAliveList :>> ", this.keepAliveList);
  20. },
  21. // Add KeepAliveName
  22. async addKeepAliveName(route: any) {
  23. !this.keepAliveName.includes(route.name) && this.keepAliveName.push(route.name);
  24. let routeItem = this.keepAliveList.find((item: any) => item.fullPath == route.fullPath);
  25. if (!routeItem) {
  26. routeItem = {
  27. fullPath: route.fullPath,
  28. times: 0
  29. };
  30. this.keepAliveList.push(routeItem);
  31. }
  32. },
  33. // Remove KeepAliveName
  34. removeKeepAliveName(route: any) {
  35. console.log("removeKeepAliveName :>> ", route.name, route);
  36. this.keepAliveName = this.keepAliveName.filter(item => item !== route.name);
  37. // this.keepAliveList = this.keepAliveList.filter(item => item.fullPath !== route.path);
  38. let index = this.keepAliveList.findIndex(item => item.fullPath === route.path);
  39. if (index > -1) {
  40. this.keepAliveList.splice(index, 1);
  41. }
  42. // const { keepAliveList } = this;
  43. // let arr = cloneDeep(this.keepAliveList);
  44. // this.keepAliveList = [];
  45. // arr.filter(item => item.fullPath !== route.path);
  46. // setTimeout(() => {
  47. // keepAliveList = arr;
  48. // }, 0);
  49. // .forEach(item => {
  50. // this.keepAliveList.push(item);
  51. // });
  52. // this.keepAliveList = arr;
  53. // this.setKeepAliveList(arr);
  54. console.log("getKeepAliveName routeItem removeKeepAliveName :>> ", JSON.stringify(this.keepAliveList));
  55. console.log("getKeepAliveName routeItem removeKeepAliveName :>> ", this.keepAliveList);
  56. console.log("getKeepAliveName routeItem keepAliveName :>> ", this.keepAliveName);
  57. },
  58. // Set KeepAliveName
  59. async setKeepAliveName(keepAliveName: string[] = []) {
  60. this.keepAliveName = keepAliveName;
  61. },
  62. async updateKeepAliveName(route: any) {
  63. this.addKeepAliveName(route);
  64. this.keepAliveList.forEach((item: any) => {
  65. console.log("updateKeepAliveName item :>> ", item.fullPath, route.fullPath, item.fullPath == route.fullPath);
  66. if (item.fullPath == route.fullPath) {
  67. item.times++;
  68. }
  69. });
  70. },
  71. getKeepAliveName(name: string) {
  72. let routeItem = this.keepAliveList.find((item: any) => item.fullPath == name);
  73. if (!routeItem) {
  74. routeItem = {
  75. fullPath: name,
  76. times: 0
  77. };
  78. this.keepAliveList.push(routeItem);
  79. }
  80. console.log("getKeepAliveName routeItem :>> ", routeItem, this.keepAliveList);
  81. return routeItem;
  82. }
  83. }
  84. });