@ditari/store 5.0.1 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/modules/useAppStore.cjs +10 -2
- package/dist/cjs/modules/useAppStore.cjs.map +1 -1
- package/dist/cjs/modules/useNavTabStore.cjs +2 -1
- package/dist/cjs/modules/useNavTabStore.cjs.map +1 -1
- package/dist/esm/modules/useAppStore.mjs +10 -2
- package/dist/esm/modules/useAppStore.mjs.map +1 -1
- package/dist/esm/modules/useNavTabStore.mjs +2 -1
- package/dist/esm/modules/useNavTabStore.mjs.map +1 -1
- package/dist/types/modules/useAppStore.d.ts +10 -2
- package/dist/types/modules/useAppStore.d.ts.map +1 -1
- package/dist/types/modules/useNavTabStore.d.ts +2 -0
- package/dist/types/modules/useNavTabStore.d.ts.map +1 -1
- package/package.json +5 -5
- package/CHANGELOG.md +0 -7
- package/src/index.ts +0 -7
- package/src/modules/useAppStore.ts +0 -43
- package/src/modules/useBreadStore.ts +0 -26
- package/src/modules/useDicStore.ts +0 -76
- package/src/modules/useKeepAliveStore.ts +0 -49
- package/src/modules/useMenuStore.ts +0 -28
- package/src/modules/useNavTabStore.ts +0 -108
- package/src/modules/useUserStore.ts +0 -34
- package/src/pinia.d.ts +0 -9
- package/src/types.ts +0 -17
- package/tsconfig.json +0 -13
|
@@ -15,13 +15,21 @@ const useAppStore = pinia.defineStore(types.APP_ID, {
|
|
|
15
15
|
algorithm: antDesignVue.theme.defaultAlgorithm,
|
|
16
16
|
token: {}
|
|
17
17
|
},
|
|
18
|
-
|
|
18
|
+
modeConfig: {
|
|
19
|
+
mode: "light",
|
|
20
|
+
list: [
|
|
21
|
+
{ value: "light", label: "\u4EAE\u8272" },
|
|
22
|
+
{ value: "dark", label: "\u6DF1\u8272" },
|
|
23
|
+
{ value: "os", label: "\u8DDF\u968F\u7CFB\u7EDF" }
|
|
24
|
+
]
|
|
25
|
+
},
|
|
19
26
|
layout: {
|
|
20
27
|
sideWidth: 200,
|
|
21
28
|
headerHeight: 44,
|
|
22
29
|
collapsedWidth: 80,
|
|
23
30
|
collapsed: false
|
|
24
|
-
}
|
|
31
|
+
},
|
|
32
|
+
refresh: false
|
|
25
33
|
};
|
|
26
34
|
},
|
|
27
35
|
persist: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAppStore.cjs","sources":["../../../src/modules/useAppStore.ts"],"sourcesContent":["import { theme } from \"ant-design-vue\";\r\nimport { defineStore } from \"pinia\";\r\n\r\nimport { APP_ID } from \"../types\";\r\nimport type { ThemeConfig } from \"ant-design-vue/es/config-provider/context\";\r\n\r\
|
|
1
|
+
{"version":3,"file":"useAppStore.cjs","sources":["../../../src/modules/useAppStore.ts"],"sourcesContent":["import { theme } from \"ant-design-vue\";\r\nimport { defineStore } from \"pinia\";\r\n\r\nimport { APP_ID } from \"../types\";\r\nimport type { ThemeConfig } from \"ant-design-vue/es/config-provider/context\";\r\n\r\nexport interface App {\r\n theme: ThemeConfig;\r\n // 模式:亮色和深色\r\n modeConfig: Mode;\r\n layout: {\r\n // 侧边栏宽度\r\n sideWidth: number;\r\n // 头高度\r\n headerHeight: number;\r\n // 左侧菜单收缩时候的宽度\r\n collapsedWidth: number;\r\n // 左侧菜单收缩状态\r\n collapsed: boolean;\r\n };\r\n // 刷新状态,当从添加页跳转到列表页时使用\r\n refresh: boolean;\r\n}\r\n\r\nexport interface Mode {\r\n mode: string;\r\n list: {\r\n value: string;\r\n label: string;\r\n }[];\r\n}\r\n\r\nconst useAppStore = defineStore(APP_ID, {\r\n state: (): App => {\r\n return {\r\n theme: {\r\n // 算法\r\n algorithm: theme.defaultAlgorithm,\r\n token: {}\r\n },\r\n modeConfig: {\r\n mode: \"light\",\r\n list: [\r\n { value: \"light\", label: \"亮色\" },\r\n { value: \"dark\", label: \"深色\" },\r\n { value: \"os\", label: \"跟随系统\" }\r\n ]\r\n },\r\n layout: {\r\n sideWidth: 200,\r\n headerHeight: 44,\r\n collapsedWidth: 80,\r\n collapsed: false\r\n },\r\n refresh: false\r\n };\r\n },\r\n persist: true\r\n});\r\n\r\nexport default useAppStore;\r\n"],"names":["defineStore","APP_ID","theme"],"mappings":";;;;;;;;;AAgCM,MAAA,WAAA,GAAcA,kBAAYC,YAAQ,EAAA;AAAA,EACtC,OAAO,MAAW;AAChB,IAAO,OAAA;AAAA,MACL,KAAO,EAAA;AAAA;AAAA,QAEL,WAAWC,kBAAM,CAAA,gBAAA;AAAA,QACjB,OAAO;AAAC,OACV;AAAA,MACA,UAAY,EAAA;AAAA,QACV,IAAM,EAAA,OAAA;AAAA,QACN,IAAM,EAAA;AAAA,UACJ,EAAE,KAAA,EAAO,OAAS,EAAA,KAAA,EAAO,cAAK,EAAA;AAAA,UAC9B,EAAE,KAAA,EAAO,MAAQ,EAAA,KAAA,EAAO,cAAK,EAAA;AAAA,UAC7B,EAAE,KAAA,EAAO,IAAM,EAAA,KAAA,EAAO,0BAAO;AAAA;AAC/B,OACF;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,SAAW,EAAA,GAAA;AAAA,QACX,YAAc,EAAA,EAAA;AAAA,QACd,cAAgB,EAAA,EAAA;AAAA,QAChB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,OAAS,EAAA;AAAA,KACX;AAAA,GACF;AAAA,EACA,OAAS,EAAA;AACX,CAAC;;;;"}
|
|
@@ -52,7 +52,8 @@ const useNavTabStore = pinia.defineStore(types.NAV_TAB_ID, {
|
|
|
52
52
|
query: route.query,
|
|
53
53
|
params: route.params,
|
|
54
54
|
meta: route.meta,
|
|
55
|
-
name: route.name || ""
|
|
55
|
+
name: route.name || "",
|
|
56
|
+
openTime: (/* @__PURE__ */ new Date()).getTime()
|
|
56
57
|
};
|
|
57
58
|
this.list.push(data);
|
|
58
59
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavTabStore.cjs","sources":["../../../src/modules/useNavTabStore.ts"],"sourcesContent":["/**\r\n * 多标签数据\r\n */\r\nimport { defineStore } from \"pinia\";\r\n\r\nimport { NAV_TAB_ID } from \"../types\";\r\nimport useKeepAliveStore from \"./useKeepAliveStore\";\r\nimport type {\r\n LocationQuery,\r\n RouteLocationNormalized,\r\n RouteMeta,\r\n RouteParams\r\n} from \"vue-router\";\r\n\r\nexport interface NavTabsState {\r\n path?: string;\r\n fullPath?: string;\r\n query?: LocationQuery;\r\n params?: RouteParams;\r\n meta?: RouteMeta;\r\n name?: string;\r\n}\r\n\r\nexport const useNavTabStore = defineStore(NAV_TAB_ID, {\r\n state: () => {\r\n return {\r\n // 多标签列表\r\n list: [] as NavTabsState[],\r\n // 当前激活的地址\r\n activeKey: \"\" as string\r\n };\r\n },\r\n getters: {\r\n getList: (state): NavTabsState[] => {\r\n return state.list;\r\n }\r\n },\r\n actions: {\r\n /**\r\n * 保存标签信息\r\n * @param route\r\n */\r\n save(route: RouteLocationNormalized) {\r\n if (!route.meta?.title) {\r\n // 没有设置title,则不进入缓存\r\n return;\r\n }\r\n const flag = this.list.some(\r\n (item: NavTabsState) => item.path === route.path\r\n );\r\n if (flag) {\r\n // 如果有相同的路由变化,更新对应的参数信息\r\n this.list.forEach((item: NavTabsState) => {\r\n if (item.path === route.path) {\r\n item.query = route.query;\r\n item.fullPath = route.fullPath;\r\n item.params = route.params;\r\n item.meta = route.meta;\r\n item.name = <string>route.name || \"\";\r\n }\r\n });\r\n return;\r\n }\r\n const data: NavTabsState = {\r\n path: route.path,\r\n fullPath: route.fullPath,\r\n query: route.query,\r\n params: route.params,\r\n meta: route.meta,\r\n name: <string>route.name || \"\"\r\n };\r\n this.list.push(data);\r\n },\r\n /**\r\n * 删除标签\r\n * @param key url路径\r\n */\r\n deleteTabs(key: string) {\r\n const { deleteKeepAlive } = useKeepAliveStore();\r\n const curRoute: NavTabsState =\r\n this.list.find(v => v.fullPath === key) || {};\r\n this.list.splice(\r\n this.list.findIndex(v => v.fullPath === key),\r\n 1\r\n );\r\n // 根据name 删除缓存的组件\r\n if (curRoute?.name) {\r\n deleteKeepAlive(curRoute.name);\r\n }\r\n },\r\n /**\r\n * 设置标题\r\n * @param title 标题\r\n * @param path url\r\n */\r\n setNavTitle(title: string, path: string) {\r\n for (let i = 0; i < this.list.length; i++) {\r\n if (this.list[i].fullPath === path) {\r\n this.list[i].meta!.title = title;\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n persist: true\r\n});\r\n\r\nexport default useNavTabStore;\r\n"],"names":["defineStore","NAV_TAB_ID","useKeepAliveStore"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"useNavTabStore.cjs","sources":["../../../src/modules/useNavTabStore.ts"],"sourcesContent":["/**\r\n * 多标签数据\r\n */\r\nimport { defineStore } from \"pinia\";\r\n\r\nimport { NAV_TAB_ID } from \"../types\";\r\nimport useKeepAliveStore from \"./useKeepAliveStore\";\r\nimport type {\r\n LocationQuery,\r\n RouteLocationNormalized,\r\n RouteMeta,\r\n RouteParams\r\n} from \"vue-router\";\r\n\r\nexport interface NavTabsState {\r\n path?: string;\r\n fullPath?: string;\r\n query?: LocationQuery;\r\n params?: RouteParams;\r\n meta?: RouteMeta;\r\n name?: string;\r\n openTime?: number | undefined;\r\n}\r\n\r\nexport const useNavTabStore = defineStore(NAV_TAB_ID, {\r\n state: () => {\r\n return {\r\n // 多标签列表\r\n list: [] as NavTabsState[],\r\n // 当前激活的地址\r\n activeKey: \"\" as string\r\n };\r\n },\r\n getters: {\r\n getList: (state): NavTabsState[] => {\r\n return state.list;\r\n }\r\n },\r\n actions: {\r\n /**\r\n * 保存标签信息\r\n * @param route\r\n */\r\n save(route: RouteLocationNormalized) {\r\n if (!route.meta?.title) {\r\n // 没有设置title,则不进入缓存\r\n return;\r\n }\r\n const flag = this.list.some(\r\n (item: NavTabsState) => item.path === route.path\r\n );\r\n if (flag) {\r\n // 如果有相同的路由变化,更新对应的参数信息\r\n this.list.forEach((item: NavTabsState) => {\r\n if (item.path === route.path) {\r\n item.query = route.query;\r\n item.fullPath = route.fullPath;\r\n item.params = route.params;\r\n item.meta = route.meta;\r\n item.name = <string>route.name || \"\";\r\n }\r\n });\r\n return;\r\n }\r\n const data: NavTabsState = {\r\n path: route.path,\r\n fullPath: route.fullPath,\r\n query: route.query,\r\n params: route.params,\r\n meta: route.meta,\r\n name: <string>route.name || \"\",\r\n openTime: new Date().getTime()\r\n };\r\n this.list.push(data);\r\n },\r\n /**\r\n * 删除标签\r\n * @param key url路径\r\n */\r\n deleteTabs(key: string) {\r\n const { deleteKeepAlive } = useKeepAliveStore();\r\n const curRoute: NavTabsState =\r\n this.list.find(v => v.fullPath === key) || {};\r\n this.list.splice(\r\n this.list.findIndex(v => v.fullPath === key),\r\n 1\r\n );\r\n // 根据name 删除缓存的组件\r\n if (curRoute?.name) {\r\n deleteKeepAlive(curRoute.name);\r\n }\r\n },\r\n /**\r\n * 设置标题\r\n * @param title 标题\r\n * @param path url\r\n */\r\n setNavTitle(title: string, path: string) {\r\n for (let i = 0; i < this.list.length; i++) {\r\n if (this.list[i].fullPath === path) {\r\n this.list[i].meta!.title = title;\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n persist: true\r\n});\r\n\r\nexport default useNavTabStore;\r\n"],"names":["defineStore","NAV_TAB_ID","useKeepAliveStore"],"mappings":"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"}
|
|
@@ -11,13 +11,21 @@ const useAppStore = defineStore(APP_ID, {
|
|
|
11
11
|
algorithm: theme.defaultAlgorithm,
|
|
12
12
|
token: {}
|
|
13
13
|
},
|
|
14
|
-
|
|
14
|
+
modeConfig: {
|
|
15
|
+
mode: "light",
|
|
16
|
+
list: [
|
|
17
|
+
{ value: "light", label: "\u4EAE\u8272" },
|
|
18
|
+
{ value: "dark", label: "\u6DF1\u8272" },
|
|
19
|
+
{ value: "os", label: "\u8DDF\u968F\u7CFB\u7EDF" }
|
|
20
|
+
]
|
|
21
|
+
},
|
|
15
22
|
layout: {
|
|
16
23
|
sideWidth: 200,
|
|
17
24
|
headerHeight: 44,
|
|
18
25
|
collapsedWidth: 80,
|
|
19
26
|
collapsed: false
|
|
20
|
-
}
|
|
27
|
+
},
|
|
28
|
+
refresh: false
|
|
21
29
|
};
|
|
22
30
|
},
|
|
23
31
|
persist: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAppStore.mjs","sources":["../../../src/modules/useAppStore.ts"],"sourcesContent":["import { theme } from \"ant-design-vue\";\r\nimport { defineStore } from \"pinia\";\r\n\r\nimport { APP_ID } from \"../types\";\r\nimport type { ThemeConfig } from \"ant-design-vue/es/config-provider/context\";\r\n\r\
|
|
1
|
+
{"version":3,"file":"useAppStore.mjs","sources":["../../../src/modules/useAppStore.ts"],"sourcesContent":["import { theme } from \"ant-design-vue\";\r\nimport { defineStore } from \"pinia\";\r\n\r\nimport { APP_ID } from \"../types\";\r\nimport type { ThemeConfig } from \"ant-design-vue/es/config-provider/context\";\r\n\r\nexport interface App {\r\n theme: ThemeConfig;\r\n // 模式:亮色和深色\r\n modeConfig: Mode;\r\n layout: {\r\n // 侧边栏宽度\r\n sideWidth: number;\r\n // 头高度\r\n headerHeight: number;\r\n // 左侧菜单收缩时候的宽度\r\n collapsedWidth: number;\r\n // 左侧菜单收缩状态\r\n collapsed: boolean;\r\n };\r\n // 刷新状态,当从添加页跳转到列表页时使用\r\n refresh: boolean;\r\n}\r\n\r\nexport interface Mode {\r\n mode: string;\r\n list: {\r\n value: string;\r\n label: string;\r\n }[];\r\n}\r\n\r\nconst useAppStore = defineStore(APP_ID, {\r\n state: (): App => {\r\n return {\r\n theme: {\r\n // 算法\r\n algorithm: theme.defaultAlgorithm,\r\n token: {}\r\n },\r\n modeConfig: {\r\n mode: \"light\",\r\n list: [\r\n { value: \"light\", label: \"亮色\" },\r\n { value: \"dark\", label: \"深色\" },\r\n { value: \"os\", label: \"跟随系统\" }\r\n ]\r\n },\r\n layout: {\r\n sideWidth: 200,\r\n headerHeight: 44,\r\n collapsedWidth: 80,\r\n collapsed: false\r\n },\r\n refresh: false\r\n };\r\n },\r\n persist: true\r\n});\r\n\r\nexport default useAppStore;\r\n"],"names":[],"mappings":";;;;;AAgCM,MAAA,WAAA,GAAc,YAAY,MAAQ,EAAA;AAAA,EACtC,OAAO,MAAW;AAChB,IAAO,OAAA;AAAA,MACL,KAAO,EAAA;AAAA;AAAA,QAEL,WAAW,KAAM,CAAA,gBAAA;AAAA,QACjB,OAAO;AAAC,OACV;AAAA,MACA,UAAY,EAAA;AAAA,QACV,IAAM,EAAA,OAAA;AAAA,QACN,IAAM,EAAA;AAAA,UACJ,EAAE,KAAA,EAAO,OAAS,EAAA,KAAA,EAAO,cAAK,EAAA;AAAA,UAC9B,EAAE,KAAA,EAAO,MAAQ,EAAA,KAAA,EAAO,cAAK,EAAA;AAAA,UAC7B,EAAE,KAAA,EAAO,IAAM,EAAA,KAAA,EAAO,0BAAO;AAAA;AAC/B,OACF;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,SAAW,EAAA,GAAA;AAAA,QACX,YAAc,EAAA,EAAA;AAAA,QACd,cAAgB,EAAA,EAAA;AAAA,QAChB,SAAW,EAAA;AAAA,OACb;AAAA,MACA,OAAS,EAAA;AAAA,KACX;AAAA,GACF;AAAA,EACA,OAAS,EAAA;AACX,CAAC;;;;"}
|
|
@@ -48,7 +48,8 @@ const useNavTabStore = defineStore(NAV_TAB_ID, {
|
|
|
48
48
|
query: route.query,
|
|
49
49
|
params: route.params,
|
|
50
50
|
meta: route.meta,
|
|
51
|
-
name: route.name || ""
|
|
51
|
+
name: route.name || "",
|
|
52
|
+
openTime: (/* @__PURE__ */ new Date()).getTime()
|
|
52
53
|
};
|
|
53
54
|
this.list.push(data);
|
|
54
55
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavTabStore.mjs","sources":["../../../src/modules/useNavTabStore.ts"],"sourcesContent":["/**\r\n * 多标签数据\r\n */\r\nimport { defineStore } from \"pinia\";\r\n\r\nimport { NAV_TAB_ID } from \"../types\";\r\nimport useKeepAliveStore from \"./useKeepAliveStore\";\r\nimport type {\r\n LocationQuery,\r\n RouteLocationNormalized,\r\n RouteMeta,\r\n RouteParams\r\n} from \"vue-router\";\r\n\r\nexport interface NavTabsState {\r\n path?: string;\r\n fullPath?: string;\r\n query?: LocationQuery;\r\n params?: RouteParams;\r\n meta?: RouteMeta;\r\n name?: string;\r\n}\r\n\r\nexport const useNavTabStore = defineStore(NAV_TAB_ID, {\r\n state: () => {\r\n return {\r\n // 多标签列表\r\n list: [] as NavTabsState[],\r\n // 当前激活的地址\r\n activeKey: \"\" as string\r\n };\r\n },\r\n getters: {\r\n getList: (state): NavTabsState[] => {\r\n return state.list;\r\n }\r\n },\r\n actions: {\r\n /**\r\n * 保存标签信息\r\n * @param route\r\n */\r\n save(route: RouteLocationNormalized) {\r\n if (!route.meta?.title) {\r\n // 没有设置title,则不进入缓存\r\n return;\r\n }\r\n const flag = this.list.some(\r\n (item: NavTabsState) => item.path === route.path\r\n );\r\n if (flag) {\r\n // 如果有相同的路由变化,更新对应的参数信息\r\n this.list.forEach((item: NavTabsState) => {\r\n if (item.path === route.path) {\r\n item.query = route.query;\r\n item.fullPath = route.fullPath;\r\n item.params = route.params;\r\n item.meta = route.meta;\r\n item.name = <string>route.name || \"\";\r\n }\r\n });\r\n return;\r\n }\r\n const data: NavTabsState = {\r\n path: route.path,\r\n fullPath: route.fullPath,\r\n query: route.query,\r\n params: route.params,\r\n meta: route.meta,\r\n name: <string>route.name || \"\"\r\n };\r\n this.list.push(data);\r\n },\r\n /**\r\n * 删除标签\r\n * @param key url路径\r\n */\r\n deleteTabs(key: string) {\r\n const { deleteKeepAlive } = useKeepAliveStore();\r\n const curRoute: NavTabsState =\r\n this.list.find(v => v.fullPath === key) || {};\r\n this.list.splice(\r\n this.list.findIndex(v => v.fullPath === key),\r\n 1\r\n );\r\n // 根据name 删除缓存的组件\r\n if (curRoute?.name) {\r\n deleteKeepAlive(curRoute.name);\r\n }\r\n },\r\n /**\r\n * 设置标题\r\n * @param title 标题\r\n * @param path url\r\n */\r\n setNavTitle(title: string, path: string) {\r\n for (let i = 0; i < this.list.length; i++) {\r\n if (this.list[i].fullPath === path) {\r\n this.list[i].meta!.title = title;\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n persist: true\r\n});\r\n\r\nexport default useNavTabStore;\r\n"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"useNavTabStore.mjs","sources":["../../../src/modules/useNavTabStore.ts"],"sourcesContent":["/**\r\n * 多标签数据\r\n */\r\nimport { defineStore } from \"pinia\";\r\n\r\nimport { NAV_TAB_ID } from \"../types\";\r\nimport useKeepAliveStore from \"./useKeepAliveStore\";\r\nimport type {\r\n LocationQuery,\r\n RouteLocationNormalized,\r\n RouteMeta,\r\n RouteParams\r\n} from \"vue-router\";\r\n\r\nexport interface NavTabsState {\r\n path?: string;\r\n fullPath?: string;\r\n query?: LocationQuery;\r\n params?: RouteParams;\r\n meta?: RouteMeta;\r\n name?: string;\r\n openTime?: number | undefined;\r\n}\r\n\r\nexport const useNavTabStore = defineStore(NAV_TAB_ID, {\r\n state: () => {\r\n return {\r\n // 多标签列表\r\n list: [] as NavTabsState[],\r\n // 当前激活的地址\r\n activeKey: \"\" as string\r\n };\r\n },\r\n getters: {\r\n getList: (state): NavTabsState[] => {\r\n return state.list;\r\n }\r\n },\r\n actions: {\r\n /**\r\n * 保存标签信息\r\n * @param route\r\n */\r\n save(route: RouteLocationNormalized) {\r\n if (!route.meta?.title) {\r\n // 没有设置title,则不进入缓存\r\n return;\r\n }\r\n const flag = this.list.some(\r\n (item: NavTabsState) => item.path === route.path\r\n );\r\n if (flag) {\r\n // 如果有相同的路由变化,更新对应的参数信息\r\n this.list.forEach((item: NavTabsState) => {\r\n if (item.path === route.path) {\r\n item.query = route.query;\r\n item.fullPath = route.fullPath;\r\n item.params = route.params;\r\n item.meta = route.meta;\r\n item.name = <string>route.name || \"\";\r\n }\r\n });\r\n return;\r\n }\r\n const data: NavTabsState = {\r\n path: route.path,\r\n fullPath: route.fullPath,\r\n query: route.query,\r\n params: route.params,\r\n meta: route.meta,\r\n name: <string>route.name || \"\",\r\n openTime: new Date().getTime()\r\n };\r\n this.list.push(data);\r\n },\r\n /**\r\n * 删除标签\r\n * @param key url路径\r\n */\r\n deleteTabs(key: string) {\r\n const { deleteKeepAlive } = useKeepAliveStore();\r\n const curRoute: NavTabsState =\r\n this.list.find(v => v.fullPath === key) || {};\r\n this.list.splice(\r\n this.list.findIndex(v => v.fullPath === key),\r\n 1\r\n );\r\n // 根据name 删除缓存的组件\r\n if (curRoute?.name) {\r\n deleteKeepAlive(curRoute.name);\r\n }\r\n },\r\n /**\r\n * 设置标题\r\n * @param title 标题\r\n * @param path url\r\n */\r\n setNavTitle(title: string, path: string) {\r\n for (let i = 0; i < this.list.length; i++) {\r\n if (this.list[i].fullPath === path) {\r\n this.list[i].meta!.title = title;\r\n break;\r\n }\r\n }\r\n }\r\n },\r\n persist: true\r\n});\r\n\r\nexport default useNavTabStore;\r\n"],"names":[],"mappings":";;;;;AAwBa,MAAA,cAAA,GAAiB,YAAY,UAAY,EAAA;AAAA,EACpD,OAAO,MAAM;AACX,IAAO,OAAA;AAAA;AAAA,MAEL,MAAM,EAAC;AAAA;AAAA,MAEP,SAAW,EAAA;AAAA,KACb;AAAA,GACF;AAAA,EACA,OAAS,EAAA;AAAA,IACP,OAAA,EAAS,CAAC,KAA0B,KAAA;AAClC,MAAA,OAAO,KAAM,CAAA,IAAA;AAAA;AACf,GACF;AAAA,EACA,OAAS,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKP,KAAK,KAAgC,EAAA;AA3CzC,MAAA,IAAA,EAAA;AA4CM,MAAA,IAAI,EAAC,CAAA,EAAA,GAAA,KAAA,CAAM,IAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAY,KAAO,CAAA,EAAA;AAEtB,QAAA;AAAA;AAEF,MAAM,MAAA,IAAA,GAAO,KAAK,IAAK,CAAA,IAAA;AAAA,QACrB,CAAC,IAAA,KAAuB,IAAK,CAAA,IAAA,KAAS,KAAM,CAAA;AAAA,OAC9C;AACA,MAAA,IAAI,IAAM,EAAA;AAER,QAAK,IAAA,CAAA,IAAA,CAAK,OAAQ,CAAA,CAAC,IAAuB,KAAA;AACxC,UAAI,IAAA,IAAA,CAAK,IAAS,KAAA,KAAA,CAAM,IAAM,EAAA;AAC5B,YAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,KAAA;AACnB,YAAA,IAAA,CAAK,WAAW,KAAM,CAAA,QAAA;AACtB,YAAA,IAAA,CAAK,SAAS,KAAM,CAAA,MAAA;AACpB,YAAA,IAAA,CAAK,OAAO,KAAM,CAAA,IAAA;AAClB,YAAK,IAAA,CAAA,IAAA,GAAe,MAAM,IAAQ,IAAA,EAAA;AAAA;AACpC,SACD,CAAA;AACD,QAAA;AAAA;AAEF,MAAA,MAAM,IAAqB,GAAA;AAAA,QACzB,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,QAAQ,KAAM,CAAA,MAAA;AAAA,QACd,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,IAAA,EAAc,MAAM,IAAQ,IAAA,EAAA;AAAA,QAC5B,QAAU,EAAA,iBAAA,IAAI,IAAK,EAAA,EAAE,OAAQ;AAAA,OAC/B;AACA,MAAK,IAAA,CAAA,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,KACrB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,WAAW,GAAa,EAAA;AACtB,MAAM,MAAA,EAAE,eAAgB,EAAA,GAAI,iBAAkB,EAAA;AAC9C,MAAM,MAAA,QAAA,GACJ,KAAK,IAAK,CAAA,IAAA,CAAK,OAAK,CAAE,CAAA,QAAA,KAAa,GAAG,CAAA,IAAK,EAAC;AAC9C,MAAA,IAAA,CAAK,IAAK,CAAA,MAAA;AAAA,QACR,KAAK,IAAK,CAAA,SAAA,CAAU,CAAK,CAAA,KAAA,CAAA,CAAE,aAAa,GAAG,CAAA;AAAA,QAC3C;AAAA,OACF;AAEA,MAAA,IAAI,qCAAU,IAAM,EAAA;AAClB,QAAA,eAAA,CAAgB,SAAS,IAAI,CAAA;AAAA;AAC/B,KACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,WAAA,CAAY,OAAe,IAAc,EAAA;AACvC,MAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,IAAK,CAAA,IAAA,CAAK,QAAQ,CAAK,EAAA,EAAA;AACzC,QAAA,IAAI,IAAK,CAAA,IAAA,CAAK,CAAC,CAAA,CAAE,aAAa,IAAM,EAAA;AAClC,UAAA,IAAA,CAAK,IAAK,CAAA,CAAC,CAAE,CAAA,IAAA,CAAM,KAAQ,GAAA,KAAA;AAC3B,UAAA;AAAA;AACF;AACF;AACF,GACF;AAAA,EACA,OAAS,EAAA;AACX,CAAC;;;;"}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import type { ThemeConfig } from "ant-design-vue/es/config-provider/context";
|
|
2
|
-
interface App {
|
|
2
|
+
export interface App {
|
|
3
3
|
theme: ThemeConfig;
|
|
4
|
-
|
|
4
|
+
modeConfig: Mode;
|
|
5
5
|
layout: {
|
|
6
6
|
sideWidth: number;
|
|
7
7
|
headerHeight: number;
|
|
8
8
|
collapsedWidth: number;
|
|
9
9
|
collapsed: boolean;
|
|
10
10
|
};
|
|
11
|
+
refresh: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface Mode {
|
|
14
|
+
mode: string;
|
|
15
|
+
list: {
|
|
16
|
+
value: string;
|
|
17
|
+
label: string;
|
|
18
|
+
}[];
|
|
11
19
|
}
|
|
12
20
|
declare const useAppStore: import("pinia").StoreDefinition<"_STORE_APP_ID", App, {}, {}>;
|
|
13
21
|
export default useAppStore;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAppStore.d.ts","sourceRoot":"","sources":["../../../src/modules/useAppStore.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAE7E,
|
|
1
|
+
{"version":3,"file":"useAppStore.d.ts","sourceRoot":"","sources":["../../../src/modules/useAppStore.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAE7E,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,WAAW,CAAC;IAEnB,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE;QAEN,SAAS,EAAE,MAAM,CAAC;QAElB,YAAY,EAAE,MAAM,CAAC;QAErB,cAAc,EAAE,MAAM,CAAC;QAEvB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IAEF,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;CACL;AAED,QAAA,MAAM,WAAW,+DA0Bf,CAAC;AAEH,eAAe,WAAW,CAAC"}
|
|
@@ -6,6 +6,7 @@ export interface NavTabsState {
|
|
|
6
6
|
params?: RouteParams;
|
|
7
7
|
meta?: RouteMeta;
|
|
8
8
|
name?: string;
|
|
9
|
+
openTime?: number | undefined;
|
|
9
10
|
}
|
|
10
11
|
export declare const useNavTabStore: import("pinia").StoreDefinition<"_STORE_NAV_TABS_ID", {
|
|
11
12
|
list: NavTabsState[];
|
|
@@ -19,6 +20,7 @@ export declare const useNavTabStore: import("pinia").StoreDefinition<"_STORE_NAV
|
|
|
19
20
|
params?: RouteParams | undefined;
|
|
20
21
|
meta?: RouteMeta | undefined;
|
|
21
22
|
name?: string | undefined;
|
|
23
|
+
openTime?: number | undefined | undefined;
|
|
22
24
|
}[];
|
|
23
25
|
activeKey: string;
|
|
24
26
|
} & import("pinia").PiniaCustomStateProperties<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useNavTabStore.d.ts","sourceRoot":"","sources":["../../../src/modules/useNavTabStore.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"useNavTabStore.d.ts","sourceRoot":"","sources":["../../../src/modules/useNavTabStore.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,eAAO,MAAM,cAAc;UAIT,YAAY,EAAE;eAET,MAAM;;;;mBAfpB,MAAM;uBACF,MAAM;oBACT,aAAa;qBACZ,WAAW;mBACb,SAAS;mBACT,MAAM;uBACF,MAAM,GAAG,SAAS;;mBASR,MAAM;;cAFX,YAAY,EAAE;mBAET,MAAM;WAIP,YAAY,EAAE;;IAKhC;;;OAGG;gBACS,uBAAuB;IAgCnC;;;OAGG;oBACa,MAAM;IAatB;;;;OAIG;uBACgB,MAAM,QAAQ,MAAM;EAUzC,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ditari/store",
|
|
3
|
-
"version": "5.0.
|
|
4
|
-
"
|
|
5
|
-
"private": false,
|
|
3
|
+
"version": "5.0.2",
|
|
4
|
+
"type": "module",
|
|
6
5
|
"publishConfig": {
|
|
7
6
|
"access": "public"
|
|
8
7
|
},
|
|
9
|
-
"
|
|
10
|
-
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
11
|
"module": "dist/esm/index.mjs",
|
|
12
12
|
"main": "dist/cjs/index.cjs",
|
|
13
13
|
"types": "dist/types/index.d.ts",
|
package/CHANGELOG.md
DELETED
package/src/index.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { default as useAppStore } from "./modules/useAppStore";
|
|
2
|
-
export * from "./modules/useBreadStore";
|
|
3
|
-
export { default as useDicStore } from "./modules/useDicStore";
|
|
4
|
-
export { default as useKeepAliveStore } from "./modules/useKeepAliveStore";
|
|
5
|
-
export { default as useMenuStore } from "./modules/useMenuStore";
|
|
6
|
-
export { default as useNavTabStore } from "./modules/useNavTabStore";
|
|
7
|
-
export { default as useUserStore } from "./modules/useUserStore";
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { theme } from "ant-design-vue";
|
|
2
|
-
import { defineStore } from "pinia";
|
|
3
|
-
|
|
4
|
-
import { APP_ID } from "../types";
|
|
5
|
-
import type { ThemeConfig } from "ant-design-vue/es/config-provider/context";
|
|
6
|
-
|
|
7
|
-
interface App {
|
|
8
|
-
theme: ThemeConfig;
|
|
9
|
-
// 模式:亮色和深色
|
|
10
|
-
mode: "light" | "dark";
|
|
11
|
-
layout: {
|
|
12
|
-
// 侧边栏宽度
|
|
13
|
-
sideWidth: number;
|
|
14
|
-
// 头高度
|
|
15
|
-
headerHeight: number;
|
|
16
|
-
// 左侧菜单收缩时候的宽度
|
|
17
|
-
collapsedWidth: number;
|
|
18
|
-
// 左侧菜单收缩状态
|
|
19
|
-
collapsed: boolean;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const useAppStore = defineStore(APP_ID, {
|
|
24
|
-
state: (): App => {
|
|
25
|
-
return {
|
|
26
|
-
theme: {
|
|
27
|
-
// 算法
|
|
28
|
-
algorithm: theme.defaultAlgorithm,
|
|
29
|
-
token: {}
|
|
30
|
-
},
|
|
31
|
-
mode: "dark",
|
|
32
|
-
layout: {
|
|
33
|
-
sideWidth: 200,
|
|
34
|
-
headerHeight: 44,
|
|
35
|
-
collapsedWidth: 80,
|
|
36
|
-
collapsed: false
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
},
|
|
40
|
-
persist: true
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
export default useAppStore;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 面包屑
|
|
3
|
-
* @author 余春林
|
|
4
|
-
*/
|
|
5
|
-
import { defineStore } from "pinia";
|
|
6
|
-
|
|
7
|
-
import { BREADCRUMB_ID } from "../types";
|
|
8
|
-
|
|
9
|
-
export interface BreadcrumbState {
|
|
10
|
-
breadcrumbs: [];
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const useBreadStore = defineStore(BREADCRUMB_ID, {
|
|
14
|
-
state: (): BreadcrumbState => ({
|
|
15
|
-
breadcrumbs: []
|
|
16
|
-
}),
|
|
17
|
-
getters: {
|
|
18
|
-
getBreadcrumb: state => state.breadcrumbs
|
|
19
|
-
},
|
|
20
|
-
actions: {
|
|
21
|
-
saveBreadcrumb(data: never) {
|
|
22
|
-
this.breadcrumbs = data;
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
persist: true
|
|
26
|
-
});
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { defineStore } from "pinia";
|
|
2
|
-
|
|
3
|
-
import { DATA_DICTIONARY_ID } from "../types";
|
|
4
|
-
|
|
5
|
-
// 定义字典项的类型
|
|
6
|
-
export interface DictionaryItem {
|
|
7
|
-
value: string; // 字典项的值
|
|
8
|
-
label: string; // 字典项的显示文本
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
// 定义字典列表的类型
|
|
12
|
-
export interface DictionaryList {
|
|
13
|
-
[key: string]: DictionaryItem[]; // 键是字符串,值是 DictionaryItem 数组
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// 定义 Store 的状态类型
|
|
17
|
-
export interface DataDictionaryState {
|
|
18
|
-
list: DictionaryList; // 使用 DictionaryList 替换 any
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const useDicStore = defineStore(DATA_DICTIONARY_ID, {
|
|
22
|
-
state: (): DataDictionaryState => ({
|
|
23
|
-
list: {} // 初始化为空对象
|
|
24
|
-
}),
|
|
25
|
-
getters: {
|
|
26
|
-
/**
|
|
27
|
-
* 根据 key 获取字典列表
|
|
28
|
-
* @param state
|
|
29
|
-
*/
|
|
30
|
-
getDicByKey: state => {
|
|
31
|
-
return (key: string): DictionaryItem[] => {
|
|
32
|
-
return state.list[key] || [];
|
|
33
|
-
};
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* 根据字典名称和字典的 value 获取对应的中文
|
|
38
|
-
* @param state
|
|
39
|
-
*/
|
|
40
|
-
getDicTextByValue: state => {
|
|
41
|
-
return (key: string, value: string): string => {
|
|
42
|
-
const rs = state.list[key] || [];
|
|
43
|
-
return rs
|
|
44
|
-
.filter((item: DictionaryItem) => item.value === value)
|
|
45
|
-
.map((item: DictionaryItem) => item.label)
|
|
46
|
-
.join("");
|
|
47
|
-
};
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* 根据文字匹配对应的 value
|
|
52
|
-
* @param state
|
|
53
|
-
*/
|
|
54
|
-
getDicValueByText: state => {
|
|
55
|
-
return (key: string, text: string): string => {
|
|
56
|
-
const rs = state.list[key] || [];
|
|
57
|
-
return rs
|
|
58
|
-
.filter((item: DictionaryItem) => item.label === text)
|
|
59
|
-
.map((item: DictionaryItem) => item.value)
|
|
60
|
-
.join("");
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
actions: {
|
|
65
|
-
/**
|
|
66
|
-
* 保存字典数据
|
|
67
|
-
* @param data 字典数据
|
|
68
|
-
*/
|
|
69
|
-
save(data: DictionaryList) {
|
|
70
|
-
this.list = data;
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
persist: true
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
export default useDicStore;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 缓存组件name数据
|
|
3
|
-
*/
|
|
4
|
-
import { type RouteLocationNormalized } from "vue-router";
|
|
5
|
-
import { defineStore } from "pinia";
|
|
6
|
-
|
|
7
|
-
import { KEEP_ALIVE_ID } from "../types";
|
|
8
|
-
|
|
9
|
-
const useKeepAliveStore = defineStore(KEEP_ALIVE_ID, {
|
|
10
|
-
state: () => {
|
|
11
|
-
return {
|
|
12
|
-
list: [] as string[]
|
|
13
|
-
};
|
|
14
|
-
},
|
|
15
|
-
getters: {
|
|
16
|
-
get: (state): string[] => {
|
|
17
|
-
return state.list;
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
actions: {
|
|
21
|
-
/**
|
|
22
|
-
* 删除已经缓存的组件
|
|
23
|
-
* @param name 组件名称(必须唯一)
|
|
24
|
-
*/
|
|
25
|
-
deleteKeepAlive(name: string) {
|
|
26
|
-
this.list.splice(
|
|
27
|
-
this.list.findIndex((key: string) => key === name),
|
|
28
|
-
1
|
|
29
|
-
);
|
|
30
|
-
},
|
|
31
|
-
/**
|
|
32
|
-
* 保存要缓存的组件名称
|
|
33
|
-
* @param route
|
|
34
|
-
*/
|
|
35
|
-
save(route: RouteLocationNormalized) {
|
|
36
|
-
const name = <string>route.name;
|
|
37
|
-
if (!name) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const flag = this.list.some((key: string) => key === name);
|
|
41
|
-
if (!flag) {
|
|
42
|
-
this.list.push(name);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
persist: true
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
export default useKeepAliveStore;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { defineStore } from "pinia";
|
|
2
|
-
|
|
3
|
-
import { MENU_ID } from "../types";
|
|
4
|
-
import type { ItemType } from "ant-design-vue";
|
|
5
|
-
|
|
6
|
-
interface Menu {
|
|
7
|
-
openKeys: string[];
|
|
8
|
-
selectedKeys: string[];
|
|
9
|
-
data: ItemType[];
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const useMenuStore = defineStore(MENU_ID, {
|
|
13
|
-
state: (): Menu => {
|
|
14
|
-
return {
|
|
15
|
-
openKeys: [],
|
|
16
|
-
selectedKeys: [],
|
|
17
|
-
data: []
|
|
18
|
-
};
|
|
19
|
-
},
|
|
20
|
-
actions: {
|
|
21
|
-
save(data: ItemType[]) {
|
|
22
|
-
this.data = data;
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
persist: true
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
export default useMenuStore;
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 多标签数据
|
|
3
|
-
*/
|
|
4
|
-
import { defineStore } from "pinia";
|
|
5
|
-
|
|
6
|
-
import { NAV_TAB_ID } from "../types";
|
|
7
|
-
import useKeepAliveStore from "./useKeepAliveStore";
|
|
8
|
-
import type {
|
|
9
|
-
LocationQuery,
|
|
10
|
-
RouteLocationNormalized,
|
|
11
|
-
RouteMeta,
|
|
12
|
-
RouteParams
|
|
13
|
-
} from "vue-router";
|
|
14
|
-
|
|
15
|
-
export interface NavTabsState {
|
|
16
|
-
path?: string;
|
|
17
|
-
fullPath?: string;
|
|
18
|
-
query?: LocationQuery;
|
|
19
|
-
params?: RouteParams;
|
|
20
|
-
meta?: RouteMeta;
|
|
21
|
-
name?: string;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export const useNavTabStore = defineStore(NAV_TAB_ID, {
|
|
25
|
-
state: () => {
|
|
26
|
-
return {
|
|
27
|
-
// 多标签列表
|
|
28
|
-
list: [] as NavTabsState[],
|
|
29
|
-
// 当前激活的地址
|
|
30
|
-
activeKey: "" as string
|
|
31
|
-
};
|
|
32
|
-
},
|
|
33
|
-
getters: {
|
|
34
|
-
getList: (state): NavTabsState[] => {
|
|
35
|
-
return state.list;
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
actions: {
|
|
39
|
-
/**
|
|
40
|
-
* 保存标签信息
|
|
41
|
-
* @param route
|
|
42
|
-
*/
|
|
43
|
-
save(route: RouteLocationNormalized) {
|
|
44
|
-
if (!route.meta?.title) {
|
|
45
|
-
// 没有设置title,则不进入缓存
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const flag = this.list.some(
|
|
49
|
-
(item: NavTabsState) => item.path === route.path
|
|
50
|
-
);
|
|
51
|
-
if (flag) {
|
|
52
|
-
// 如果有相同的路由变化,更新对应的参数信息
|
|
53
|
-
this.list.forEach((item: NavTabsState) => {
|
|
54
|
-
if (item.path === route.path) {
|
|
55
|
-
item.query = route.query;
|
|
56
|
-
item.fullPath = route.fullPath;
|
|
57
|
-
item.params = route.params;
|
|
58
|
-
item.meta = route.meta;
|
|
59
|
-
item.name = <string>route.name || "";
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const data: NavTabsState = {
|
|
65
|
-
path: route.path,
|
|
66
|
-
fullPath: route.fullPath,
|
|
67
|
-
query: route.query,
|
|
68
|
-
params: route.params,
|
|
69
|
-
meta: route.meta,
|
|
70
|
-
name: <string>route.name || ""
|
|
71
|
-
};
|
|
72
|
-
this.list.push(data);
|
|
73
|
-
},
|
|
74
|
-
/**
|
|
75
|
-
* 删除标签
|
|
76
|
-
* @param key url路径
|
|
77
|
-
*/
|
|
78
|
-
deleteTabs(key: string) {
|
|
79
|
-
const { deleteKeepAlive } = useKeepAliveStore();
|
|
80
|
-
const curRoute: NavTabsState =
|
|
81
|
-
this.list.find(v => v.fullPath === key) || {};
|
|
82
|
-
this.list.splice(
|
|
83
|
-
this.list.findIndex(v => v.fullPath === key),
|
|
84
|
-
1
|
|
85
|
-
);
|
|
86
|
-
// 根据name 删除缓存的组件
|
|
87
|
-
if (curRoute?.name) {
|
|
88
|
-
deleteKeepAlive(curRoute.name);
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
/**
|
|
92
|
-
* 设置标题
|
|
93
|
-
* @param title 标题
|
|
94
|
-
* @param path url
|
|
95
|
-
*/
|
|
96
|
-
setNavTitle(title: string, path: string) {
|
|
97
|
-
for (let i = 0; i < this.list.length; i++) {
|
|
98
|
-
if (this.list[i].fullPath === path) {
|
|
99
|
-
this.list[i].meta!.title = title;
|
|
100
|
-
break;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
persist: true
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
export default useNavTabStore;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { defineStore } from "pinia";
|
|
2
|
-
|
|
3
|
-
import { USER_ID } from "../types";
|
|
4
|
-
|
|
5
|
-
export interface UserState {
|
|
6
|
-
token: string | undefined;
|
|
7
|
-
userInfo: unknown;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const useUserStore = defineStore(USER_ID, {
|
|
11
|
-
state: (): UserState => ({
|
|
12
|
-
token: undefined,
|
|
13
|
-
userInfo: undefined
|
|
14
|
-
}),
|
|
15
|
-
getters: {
|
|
16
|
-
getToken: state => state.token,
|
|
17
|
-
getUserInfo: state => state.userInfo
|
|
18
|
-
},
|
|
19
|
-
actions: {
|
|
20
|
-
/**
|
|
21
|
-
* 保存token
|
|
22
|
-
* @param token
|
|
23
|
-
*/
|
|
24
|
-
saveToken(token: string) {
|
|
25
|
-
this.token = token;
|
|
26
|
-
},
|
|
27
|
-
saveUserInfo(data: unknown) {
|
|
28
|
-
this.userInfo = data;
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
persist: true
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
export default useUserStore;
|
package/src/pinia.d.ts
DELETED
package/src/types.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
const id_prefix = "_STORE_";
|
|
2
|
-
//面包屑
|
|
3
|
-
export const BREADCRUMB_ID = `${id_prefix}BREADCRUMB_ID`;
|
|
4
|
-
//字典ID
|
|
5
|
-
export const DATA_DICTIONARY_ID = `${id_prefix}DATA_DICTIONARY_ID`;
|
|
6
|
-
//缓存组件ID
|
|
7
|
-
export const KEEP_ALIVE_ID = `${id_prefix}KEEP_ALIVE_ID`;
|
|
8
|
-
//菜单ID
|
|
9
|
-
export const MENU_ID = `${id_prefix}MENU_ID`;
|
|
10
|
-
//多标签ID
|
|
11
|
-
export const NAV_TAB_ID = `${id_prefix}NAV_TABS_ID`;
|
|
12
|
-
//用户信息ID
|
|
13
|
-
export const SETTINGS_ID = `${id_prefix}SETTINGS_ID`;
|
|
14
|
-
//用户信息ID
|
|
15
|
-
export const USER_ID = `${id_prefix}USER_ID`;
|
|
16
|
-
//存储APP配置信息
|
|
17
|
-
export const APP_ID = `${id_prefix}APP_ID`;
|