@ditari/store 5.1.1 → 5.1.3

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.
@@ -31,8 +31,14 @@ const useAppStore = pinia.defineStore(types.APP_ID, {
31
31
  collapsed: false
32
32
  },
33
33
  headerTokenStyle: {
34
- bgColor: "#1677ff",
35
- txtColor: "#fff"
34
+ colorBgHeader: "#1677ff"
35
+ },
36
+ tabsTokenStyle: {
37
+ colorBgActive: "#f5f5f5",
38
+ colorSplit: "#fff",
39
+ colorTextActive: "#000",
40
+ colorShadowActive: "#f5f5f5",
41
+ colorTabsText: "#fff"
36
42
  },
37
43
  sideTokenStyle: {
38
44
  bgColor: " #0F6BD9"
@@ -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\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 isCompact: boolean;\r\n // 头部导航背样式配置\r\n headerTokenStyle: Record<string, string>;\r\n sideTokenStyle: Record<string, string>;\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 isCompact: true,\r\n layout: {\r\n sideWidth: 200,\r\n headerHeight: 44,\r\n collapsedWidth: 80,\r\n collapsed: false\r\n },\r\n headerTokenStyle: {\r\n bgColor: \"#1677ff\",\r\n txtColor: \"#fff\"\r\n },\r\n sideTokenStyle: {\r\n bgColor: \" #0F6BD9\"\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":";;;;;;;;;AAqCA,MAAM,WAAA,GAAcA,kBAAYC,YAAA,EAAQ;AAAA,EACtC,OAAO,MAAW;AAChB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO;AAAA;AAAA,QAEL,WAAWC,kBAAA,CAAM,gBAAA;AAAA,QACjB,OAAO;AAAC,OACV;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM;AAAA,UACJ,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,cAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,cAAA,EAAK;AAAA,UAC7B,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,0BAAA;AAAO;AAC/B,OACF;AAAA,MACA,SAAA,EAAW,IAAA;AAAA,MACX,MAAA,EAAQ;AAAA,QACN,SAAA,EAAW,GAAA;AAAA,QACX,YAAA,EAAc,EAAA;AAAA,QACd,cAAA,EAAgB,EAAA;AAAA,QAChB,SAAA,EAAW;AAAA,OACb;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,EAAS;AAAA,KACX;AAAA,EACF,CAAA;AAAA,EACA,OAAA,EAAS;AACX,CAAC;;;;"}
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 HeaderStyle {\r\n colorBgHeader: string;\r\n}\r\n\r\nexport interface TabsStyle {\r\n // 标签激活时的背景颜色\r\n colorBgActive: string;\r\n // 标签激活时的文字颜色\r\n colorTextActive: string;\r\n // 标签分割颜色\r\n colorSplit: string;\r\n // 标签激活时的圆角样式\r\n colorShadowActive: string;\r\n // 标签颜色\r\n colorTabsText: string;\r\n}\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 isCompact: boolean;\r\n // 头部导航背样式配置\r\n headerTokenStyle: HeaderStyle;\r\n // 标签样式\r\n tabsTokenStyle?: TabsStyle;\r\n sideTokenStyle: Record<string, string>;\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 isCompact: true,\r\n layout: {\r\n sideWidth: 200,\r\n headerHeight: 44,\r\n collapsedWidth: 80,\r\n collapsed: false\r\n },\r\n headerTokenStyle: {\r\n colorBgHeader: \"#1677ff\"\r\n },\r\n tabsTokenStyle: {\r\n colorBgActive: \"#f5f5f5\",\r\n colorSplit: \"#fff\",\r\n colorTextActive: \"#000\",\r\n colorShadowActive: \"#f5f5f5\",\r\n colorTabsText: \"#fff\"\r\n },\r\n sideTokenStyle: {\r\n bgColor: \" #0F6BD9\"\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":";;;;;;;;;AAwDA,MAAM,WAAA,GAAcA,kBAAYC,YAAA,EAAQ;AAAA,EACtC,OAAO,MAAW;AAChB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO;AAAA;AAAA,QAEL,WAAWC,kBAAA,CAAM,gBAAA;AAAA,QACjB,OAAO;AAAC,OACV;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM;AAAA,UACJ,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,cAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,cAAA,EAAK;AAAA,UAC7B,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,0BAAA;AAAO;AAC/B,OACF;AAAA,MACA,SAAA,EAAW,IAAA;AAAA,MACX,MAAA,EAAQ;AAAA,QACN,SAAA,EAAW,GAAA;AAAA,QACX,YAAA,EAAc,EAAA;AAAA,QACd,cAAA,EAAgB,EAAA;AAAA,QAChB,SAAA,EAAW;AAAA,OACb;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,aAAA,EAAe,SAAA;AAAA,QACf,UAAA,EAAY,MAAA;AAAA,QACZ,eAAA,EAAiB,MAAA;AAAA,QACjB,iBAAA,EAAmB,SAAA;AAAA,QACnB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,EAAS;AAAA,KACX;AAAA,EACF,CAAA;AAAA,EACA,OAAA,EAAS;AACX,CAAC;;;;"}
@@ -74,7 +74,7 @@ const useDicStore = pinia.defineStore(types.DATA_DICTIONARY_ID, {
74
74
  var _a;
75
75
  const rs = ((_a = this.dataDic[key]) == null ? void 0 : _a.value) || [];
76
76
  const item = rs.find(
77
- (item2) => item2.value === value
77
+ (item2) => item2.value === String(value)
78
78
  );
79
79
  return (item == null ? void 0 : item.label) || "";
80
80
  },
@@ -1 +1 @@
1
- {"version":3,"file":"useDicStore.cjs","sources":["../../../src/modules/useDicStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\";\r\n\r\nimport { DATA_DICTIONARY_ID } from \"../types\";\r\n\r\n// 定义字典项的类型\r\nexport interface DictionaryItem {\r\n value: string; // 字典项的值\r\n label: string; // 字典项的显示文本\r\n}\r\n\r\n// 定义字典列表的类型\r\nexport interface Dictionary {\r\n [key: string]: {\r\n value: DictionaryItem[]; // 数组字典\r\n timestamp: number; // 数据缓存时间戳\r\n };\r\n}\r\n\r\n/**\r\n * {key:[]}\r\n */\r\nexport interface DictionaryList {\r\n [key: string]: DictionaryItem[]; // 数组字典\r\n}\r\n\r\n// 定义 Store 的状态类型\r\nexport interface DataDictionaryState {\r\n dataDic: Dictionary;\r\n cacheDuration: number;\r\n}\r\n\r\nconst useDicStore = defineStore(DATA_DICTIONARY_ID, {\r\n state: (): DataDictionaryState => ({\r\n dataDic: {},\r\n cacheDuration: 5 * 60 * 1000 // 缓存有效期:5分钟(单位:毫秒)\r\n }),\r\n\r\n // 💡 优化:Getters 仅保留无参数的计算属性,如果不需要则保持为空。\r\n getters: {\r\n // 示例:如果需要获取所有字典的 Key 列表,可以放在这里\r\n // getAllKeys: state => Object.keys(state.dataDic),\r\n },\r\n\r\n // 💡 优化:Actions 包含所有数据操作和有参数的查询方法。\r\n actions: {\r\n // --- 缓存/数据操作 Actions (保持不变) ---\r\n\r\n // 检查缓存是否过期\r\n isCacheExpired(name: string): boolean {\r\n // 使用 this 访问 state\r\n if (this.cacheDuration === 0) return false;\r\n const cache = this.dataDic[name];\r\n if (!cache) return true;\r\n const now = Date.now();\r\n return now - cache.timestamp > this.cacheDuration;\r\n },\r\n\r\n // 根据 key 保存字典数据\r\n saveDicByKey(key: string, data: DictionaryItem[]) {\r\n // 修正 data 类型\r\n this.dataDic[key] = {\r\n value: data,\r\n timestamp: Date.now()\r\n };\r\n },\r\n\r\n // 一次性存入数据字典\r\n saveAll(data: DictionaryList) {\r\n Object.entries(data).forEach(([key, value]) => {\r\n this.dataDic[key] = {\r\n value,\r\n timestamp: Date.now() // 统一使用当前时间戳\r\n };\r\n });\r\n },\r\n\r\n // --- 查询 Actions (原 Getters 优化) ---\r\n\r\n /**\r\n * 1. 根据 key 获取字典列表 (原 getDicByKey)\r\n * @param key 字典的 key\r\n */\r\n getDicByKey(key: string): DictionaryItem[] {\r\n // 直接使用 this 访问 state\r\n return this.dataDic[key]?.value || [];\r\n },\r\n\r\n /**\r\n * 2. 返回 value 匹配到的整个对象 (原 getDicObjByValue)\r\n * @param key 字典的 key\r\n * @param value 字典项的值\r\n */\r\n getDicObjByValue(\r\n key: string,\r\n value: string | number\r\n ): DictionaryItem | null {\r\n // 修正 value 类型为 string | number,返回类型为 DictionaryItem | null\r\n const rs = this.dataDic[key]?.value || [];\r\n const result = rs.find(\r\n item => item.value === String(value)\r\n );\r\n // 返回 null 更安全,避免返回空对象 {} as DictionaryItem\r\n return result || null;\r\n },\r\n\r\n /**\r\n * 3. 根据字典名称和字典的 value 获取对应的中文 (原 getDicTextByValue)\r\n */\r\n getDicTextByValue(key: string, value: string): string {\r\n const rs = this.dataDic[key]?.value || [];\r\n const item = rs.find(\r\n (item: DictionaryItem) => item.value === value\r\n );\r\n // 优化:使用 find 比 filter/map/join 效率更高,且只会有一个结果\r\n return item?.label || \"\";\r\n },\r\n\r\n /**\r\n * 4. 根据文字匹配对应的 value (原 getDicValueByText)\r\n */\r\n getDicValueByText(key: string, text: string): string {\r\n const rs = this.dataDic[key]?.value || [];\r\n const item = rs.find(\r\n (item: DictionaryItem) => item.label === text\r\n );\r\n // 优化:使用 find 比 filter/map/join 效率更高,且只会有一个结果\r\n return item?.value || \"\";\r\n }\r\n },\r\n persist: true\r\n});\r\n\r\nexport default useDicStore;\r\n"],"names":["defineStore","DATA_DICTIONARY_ID","item"],"mappings":"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"}
1
+ {"version":3,"file":"useDicStore.cjs","sources":["../../../src/modules/useDicStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\";\r\n\r\nimport { DATA_DICTIONARY_ID } from \"../types\";\r\n\r\n// 定义字典项的类型\r\nexport interface DictionaryItem {\r\n value: string; // 字典项的值\r\n label: string; // 字典项的显示文本\r\n}\r\n\r\n// 定义字典列表的类型\r\nexport interface Dictionary {\r\n [key: string]: {\r\n value: DictionaryItem[]; // 数组字典\r\n timestamp: number; // 数据缓存时间戳\r\n };\r\n}\r\n\r\n/**\r\n * {key:[]}\r\n */\r\nexport interface DictionaryList {\r\n [key: string]: DictionaryItem[]; // 数组字典\r\n}\r\n\r\n// 定义 Store 的状态类型\r\nexport interface DataDictionaryState {\r\n dataDic: Dictionary;\r\n cacheDuration: number;\r\n}\r\n\r\nconst useDicStore = defineStore(DATA_DICTIONARY_ID, {\r\n state: (): DataDictionaryState => ({\r\n dataDic: {},\r\n cacheDuration: 5 * 60 * 1000 // 缓存有效期:5分钟(单位:毫秒)\r\n }),\r\n\r\n // 💡 优化:Getters 仅保留无参数的计算属性,如果不需要则保持为空。\r\n getters: {\r\n // 示例:如果需要获取所有字典的 Key 列表,可以放在这里\r\n // getAllKeys: state => Object.keys(state.dataDic),\r\n },\r\n\r\n // 💡 优化:Actions 包含所有数据操作和有参数的查询方法。\r\n actions: {\r\n // --- 缓存/数据操作 Actions (保持不变) ---\r\n\r\n // 检查缓存是否过期\r\n isCacheExpired(name: string): boolean {\r\n // 使用 this 访问 state\r\n if (this.cacheDuration === 0) return false;\r\n const cache = this.dataDic[name];\r\n if (!cache) return true;\r\n const now = Date.now();\r\n return now - cache.timestamp > this.cacheDuration;\r\n },\r\n\r\n // 根据 key 保存字典数据\r\n saveDicByKey(key: string, data: DictionaryItem[]) {\r\n // 修正 data 类型\r\n this.dataDic[key] = {\r\n value: data,\r\n timestamp: Date.now()\r\n };\r\n },\r\n\r\n // 一次性存入数据字典\r\n saveAll(data: DictionaryList) {\r\n Object.entries(data).forEach(([key, value]) => {\r\n this.dataDic[key] = {\r\n value,\r\n timestamp: Date.now() // 统一使用当前时间戳\r\n };\r\n });\r\n },\r\n\r\n // --- 查询 Actions (原 Getters 优化) ---\r\n\r\n /**\r\n * 1. 根据 key 获取字典列表 (原 getDicByKey)\r\n * @param key 字典的 key\r\n */\r\n getDicByKey(key: string): DictionaryItem[] {\r\n // 直接使用 this 访问 state\r\n return this.dataDic[key]?.value || [];\r\n },\r\n\r\n /**\r\n * 2. 返回 value 匹配到的整个对象 (原 getDicObjByValue)\r\n * @param key 字典的 key\r\n * @param value 字典项的值\r\n */\r\n getDicObjByValue(\r\n key: string,\r\n value: string | number\r\n ): DictionaryItem | null {\r\n // 修正 value 类型为 string | number,返回类型为 DictionaryItem | null\r\n const rs = this.dataDic[key]?.value || [];\r\n const result = rs.find(\r\n item => item.value === String(value)\r\n );\r\n // 返回 null 更安全,避免返回空对象 {} as DictionaryItem\r\n return result || null;\r\n },\r\n\r\n /**\r\n * 3. 根据字典名称和字典的 value 获取对应的中文 (原 getDicTextByValue)\r\n */\r\n getDicTextByValue(\r\n key: string,\r\n value: string | number\r\n ): string {\r\n const rs = this.dataDic[key]?.value || [];\r\n const item = rs.find(\r\n (item: DictionaryItem) =>\r\n item.value === String(value)\r\n );\r\n // 优化:使用 find 比 filter/map/join 效率更高,且只会有一个结果\r\n return item?.label || \"\";\r\n },\r\n\r\n /**\r\n * 4. 根据文字匹配对应的 value (原 getDicValueByText)\r\n */\r\n getDicValueByText(key: string, text: string): string {\r\n const rs = this.dataDic[key]?.value || [];\r\n const item = rs.find(\r\n (item: DictionaryItem) => item.label === text\r\n );\r\n // 优化:使用 find 比 filter/map/join 效率更高,且只会有一个结果\r\n return item?.value || \"\";\r\n }\r\n },\r\n persist: true\r\n});\r\n\r\nexport default useDicStore;\r\n"],"names":["defineStore","DATA_DICTIONARY_ID","item"],"mappings":"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"}
@@ -27,8 +27,14 @@ const useAppStore = defineStore(APP_ID, {
27
27
  collapsed: false
28
28
  },
29
29
  headerTokenStyle: {
30
- bgColor: "#1677ff",
31
- txtColor: "#fff"
30
+ colorBgHeader: "#1677ff"
31
+ },
32
+ tabsTokenStyle: {
33
+ colorBgActive: "#f5f5f5",
34
+ colorSplit: "#fff",
35
+ colorTextActive: "#000",
36
+ colorShadowActive: "#f5f5f5",
37
+ colorTabsText: "#fff"
32
38
  },
33
39
  sideTokenStyle: {
34
40
  bgColor: " #0F6BD9"
@@ -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\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 isCompact: boolean;\r\n // 头部导航背样式配置\r\n headerTokenStyle: Record<string, string>;\r\n sideTokenStyle: Record<string, string>;\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 isCompact: true,\r\n layout: {\r\n sideWidth: 200,\r\n headerHeight: 44,\r\n collapsedWidth: 80,\r\n collapsed: false\r\n },\r\n headerTokenStyle: {\r\n bgColor: \"#1677ff\",\r\n txtColor: \"#fff\"\r\n },\r\n sideTokenStyle: {\r\n bgColor: \" #0F6BD9\"\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":";;;;;AAqCA,MAAM,WAAA,GAAc,YAAY,MAAA,EAAQ;AAAA,EACtC,OAAO,MAAW;AAChB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO;AAAA;AAAA,QAEL,WAAW,KAAA,CAAM,gBAAA;AAAA,QACjB,OAAO;AAAC,OACV;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM;AAAA,UACJ,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,cAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,cAAA,EAAK;AAAA,UAC7B,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,0BAAA;AAAO;AAC/B,OACF;AAAA,MACA,SAAA,EAAW,IAAA;AAAA,MACX,MAAA,EAAQ;AAAA,QACN,SAAA,EAAW,GAAA;AAAA,QACX,YAAA,EAAc,EAAA;AAAA,QACd,cAAA,EAAgB,EAAA;AAAA,QAChB,SAAA,EAAW;AAAA,OACb;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,EAAS;AAAA,KACX;AAAA,EACF,CAAA;AAAA,EACA,OAAA,EAAS;AACX,CAAC;;;;"}
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 HeaderStyle {\r\n colorBgHeader: string;\r\n}\r\n\r\nexport interface TabsStyle {\r\n // 标签激活时的背景颜色\r\n colorBgActive: string;\r\n // 标签激活时的文字颜色\r\n colorTextActive: string;\r\n // 标签分割颜色\r\n colorSplit: string;\r\n // 标签激活时的圆角样式\r\n colorShadowActive: string;\r\n // 标签颜色\r\n colorTabsText: string;\r\n}\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 isCompact: boolean;\r\n // 头部导航背样式配置\r\n headerTokenStyle: HeaderStyle;\r\n // 标签样式\r\n tabsTokenStyle?: TabsStyle;\r\n sideTokenStyle: Record<string, string>;\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 isCompact: true,\r\n layout: {\r\n sideWidth: 200,\r\n headerHeight: 44,\r\n collapsedWidth: 80,\r\n collapsed: false\r\n },\r\n headerTokenStyle: {\r\n colorBgHeader: \"#1677ff\"\r\n },\r\n tabsTokenStyle: {\r\n colorBgActive: \"#f5f5f5\",\r\n colorSplit: \"#fff\",\r\n colorTextActive: \"#000\",\r\n colorShadowActive: \"#f5f5f5\",\r\n colorTabsText: \"#fff\"\r\n },\r\n sideTokenStyle: {\r\n bgColor: \" #0F6BD9\"\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":";;;;;AAwDA,MAAM,WAAA,GAAc,YAAY,MAAA,EAAQ;AAAA,EACtC,OAAO,MAAW;AAChB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO;AAAA;AAAA,QAEL,WAAW,KAAA,CAAM,gBAAA;AAAA,QACjB,OAAO;AAAC,OACV;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM;AAAA,UACJ,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,cAAA,EAAK;AAAA,UAC9B,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,cAAA,EAAK;AAAA,UAC7B,EAAE,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,0BAAA;AAAO;AAC/B,OACF;AAAA,MACA,SAAA,EAAW,IAAA;AAAA,MACX,MAAA,EAAQ;AAAA,QACN,SAAA,EAAW,GAAA;AAAA,QACX,YAAA,EAAc,EAAA;AAAA,QACd,cAAA,EAAgB,EAAA;AAAA,QAChB,SAAA,EAAW;AAAA,OACb;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,aAAA,EAAe,SAAA;AAAA,QACf,UAAA,EAAY,MAAA;AAAA,QACZ,eAAA,EAAiB,MAAA;AAAA,QACjB,iBAAA,EAAmB,SAAA;AAAA,QACnB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,EAAS;AAAA,KACX;AAAA,EACF,CAAA;AAAA,EACA,OAAA,EAAS;AACX,CAAC;;;;"}
@@ -70,7 +70,7 @@ const useDicStore = defineStore(DATA_DICTIONARY_ID, {
70
70
  var _a;
71
71
  const rs = ((_a = this.dataDic[key]) == null ? void 0 : _a.value) || [];
72
72
  const item = rs.find(
73
- (item2) => item2.value === value
73
+ (item2) => item2.value === String(value)
74
74
  );
75
75
  return (item == null ? void 0 : item.label) || "";
76
76
  },
@@ -1 +1 @@
1
- {"version":3,"file":"useDicStore.mjs","sources":["../../../src/modules/useDicStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\";\r\n\r\nimport { DATA_DICTIONARY_ID } from \"../types\";\r\n\r\n// 定义字典项的类型\r\nexport interface DictionaryItem {\r\n value: string; // 字典项的值\r\n label: string; // 字典项的显示文本\r\n}\r\n\r\n// 定义字典列表的类型\r\nexport interface Dictionary {\r\n [key: string]: {\r\n value: DictionaryItem[]; // 数组字典\r\n timestamp: number; // 数据缓存时间戳\r\n };\r\n}\r\n\r\n/**\r\n * {key:[]}\r\n */\r\nexport interface DictionaryList {\r\n [key: string]: DictionaryItem[]; // 数组字典\r\n}\r\n\r\n// 定义 Store 的状态类型\r\nexport interface DataDictionaryState {\r\n dataDic: Dictionary;\r\n cacheDuration: number;\r\n}\r\n\r\nconst useDicStore = defineStore(DATA_DICTIONARY_ID, {\r\n state: (): DataDictionaryState => ({\r\n dataDic: {},\r\n cacheDuration: 5 * 60 * 1000 // 缓存有效期:5分钟(单位:毫秒)\r\n }),\r\n\r\n // 💡 优化:Getters 仅保留无参数的计算属性,如果不需要则保持为空。\r\n getters: {\r\n // 示例:如果需要获取所有字典的 Key 列表,可以放在这里\r\n // getAllKeys: state => Object.keys(state.dataDic),\r\n },\r\n\r\n // 💡 优化:Actions 包含所有数据操作和有参数的查询方法。\r\n actions: {\r\n // --- 缓存/数据操作 Actions (保持不变) ---\r\n\r\n // 检查缓存是否过期\r\n isCacheExpired(name: string): boolean {\r\n // 使用 this 访问 state\r\n if (this.cacheDuration === 0) return false;\r\n const cache = this.dataDic[name];\r\n if (!cache) return true;\r\n const now = Date.now();\r\n return now - cache.timestamp > this.cacheDuration;\r\n },\r\n\r\n // 根据 key 保存字典数据\r\n saveDicByKey(key: string, data: DictionaryItem[]) {\r\n // 修正 data 类型\r\n this.dataDic[key] = {\r\n value: data,\r\n timestamp: Date.now()\r\n };\r\n },\r\n\r\n // 一次性存入数据字典\r\n saveAll(data: DictionaryList) {\r\n Object.entries(data).forEach(([key, value]) => {\r\n this.dataDic[key] = {\r\n value,\r\n timestamp: Date.now() // 统一使用当前时间戳\r\n };\r\n });\r\n },\r\n\r\n // --- 查询 Actions (原 Getters 优化) ---\r\n\r\n /**\r\n * 1. 根据 key 获取字典列表 (原 getDicByKey)\r\n * @param key 字典的 key\r\n */\r\n getDicByKey(key: string): DictionaryItem[] {\r\n // 直接使用 this 访问 state\r\n return this.dataDic[key]?.value || [];\r\n },\r\n\r\n /**\r\n * 2. 返回 value 匹配到的整个对象 (原 getDicObjByValue)\r\n * @param key 字典的 key\r\n * @param value 字典项的值\r\n */\r\n getDicObjByValue(\r\n key: string,\r\n value: string | number\r\n ): DictionaryItem | null {\r\n // 修正 value 类型为 string | number,返回类型为 DictionaryItem | null\r\n const rs = this.dataDic[key]?.value || [];\r\n const result = rs.find(\r\n item => item.value === String(value)\r\n );\r\n // 返回 null 更安全,避免返回空对象 {} as DictionaryItem\r\n return result || null;\r\n },\r\n\r\n /**\r\n * 3. 根据字典名称和字典的 value 获取对应的中文 (原 getDicTextByValue)\r\n */\r\n getDicTextByValue(key: string, value: string): string {\r\n const rs = this.dataDic[key]?.value || [];\r\n const item = rs.find(\r\n (item: DictionaryItem) => item.value === value\r\n );\r\n // 优化:使用 find 比 filter/map/join 效率更高,且只会有一个结果\r\n return item?.label || \"\";\r\n },\r\n\r\n /**\r\n * 4. 根据文字匹配对应的 value (原 getDicValueByText)\r\n */\r\n getDicValueByText(key: string, text: string): string {\r\n const rs = this.dataDic[key]?.value || [];\r\n const item = rs.find(\r\n (item: DictionaryItem) => item.label === text\r\n );\r\n // 优化:使用 find 比 filter/map/join 效率更高,且只会有一个结果\r\n return item?.value || \"\";\r\n }\r\n },\r\n persist: true\r\n});\r\n\r\nexport default useDicStore;\r\n"],"names":["item"],"mappings":";;;;AA+BA,MAAM,WAAA,GAAc,YAAY,kBAAA,EAAoB;AAAA,EAClD,OAAO,OAA4B;AAAA,IACjC,SAAS,EAAC;AAAA,IACV,aAAA,EAAe,IAAI,EAAA,GAAK;AAAA;AAAA,GAC1B,CAAA;AAAA;AAAA,EAGA,OAAA,EAAS;AAAA;AAAA;AAAA,GAGT;AAAA;AAAA,EAGA,OAAA,EAAS;AAAA;AAAA;AAAA,IAIP,eAAe,IAAA,EAAuB;AAEpC,MAAA,IAAI,IAAA,CAAK,aAAA,KAAkB,CAAA,EAAG,OAAO,KAAA;AACrC,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA;AAC/B,MAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,MAAA,MAAM,GAAA,GAAM,KAAK,GAAA,EAAI;AACrB,MAAA,OAAO,GAAA,GAAM,KAAA,CAAM,SAAA,GAAY,IAAA,CAAK,aAAA;AAAA,IACtC,CAAA;AAAA;AAAA,IAGA,YAAA,CAAa,KAAa,IAAA,EAAwB;AAEhD,MAAA,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GAAI;AAAA,QAClB,KAAA,EAAO,IAAA;AAAA,QACP,SAAA,EAAW,KAAK,GAAA;AAAI,OACtB;AAAA,IACF,CAAA;AAAA;AAAA,IAGA,QAAQ,IAAA,EAAsB;AAC5B,MAAA,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC7C,QAAA,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GAAI;AAAA,UAClB,KAAA;AAAA,UACA,SAAA,EAAW,KAAK,GAAA;AAAI;AAAA,SACtB;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,YAAY,GAAA,EAA+B;AAlF/C,MAAA,IAAA,EAAA;AAoFM,MAAA,OAAA,CAAA,CAAO,UAAK,OAAA,CAAQ,GAAG,CAAA,KAAhB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAmB,UAAS,EAAC;AAAA,IACtC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,gBAAA,CACE,KACA,KAAA,EACuB;AA/F7B,MAAA,IAAA,EAAA;AAiGM,MAAA,MAAM,OAAK,EAAA,GAAA,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,KAAhB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAmB,UAAS,EAAC;AACxC,MAAA,MAAM,SAAS,EAAA,CAAG,IAAA;AAAA,QAChB,CAAA,IAAA,KAAQ,IAAA,CAAK,KAAA,KAAU,MAAA,CAAO,KAAK;AAAA,OACrC;AAEA,MAAA,OAAO,MAAA,IAAU,IAAA;AAAA,IACnB,CAAA;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAA,CAAkB,KAAa,KAAA,EAAuB;AA5G1D,MAAA,IAAA,EAAA;AA6GM,MAAA,MAAM,OAAK,EAAA,GAAA,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,KAAhB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAmB,UAAS,EAAC;AACxC,MAAA,MAAM,OAAO,EAAA,CAAG,IAAA;AAAA,QACd,CAACA,KAAAA,KAAyBA,KAAAA,CAAK,KAAA,KAAU;AAAA,OAC3C;AAEA,MAAA,OAAA,CAAO,6BAAM,KAAA,KAAS,EAAA;AAAA,IACxB,CAAA;AAAA;AAAA;AAAA;AAAA,IAKA,iBAAA,CAAkB,KAAa,IAAA,EAAsB;AAxHzD,MAAA,IAAA,EAAA;AAyHM,MAAA,MAAM,OAAK,EAAA,GAAA,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,KAAhB,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAmB,UAAS,EAAC;AACxC,MAAA,MAAM,OAAO,EAAA,CAAG,IAAA;AAAA,QACd,CAACA,KAAAA,KAAyBA,KAAAA,CAAK,KAAA,KAAU;AAAA,OAC3C;AAEA,MAAA,OAAA,CAAO,6BAAM,KAAA,KAAS,EAAA;AAAA,IACxB;AAAA,GACF;AAAA,EACA,OAAA,EAAS;AACX,CAAC;;;;"}
1
+ {"version":3,"file":"useDicStore.mjs","sources":["../../../src/modules/useDicStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\";\r\n\r\nimport { DATA_DICTIONARY_ID } from \"../types\";\r\n\r\n// 定义字典项的类型\r\nexport interface DictionaryItem {\r\n value: string; // 字典项的值\r\n label: string; // 字典项的显示文本\r\n}\r\n\r\n// 定义字典列表的类型\r\nexport interface Dictionary {\r\n [key: string]: {\r\n value: DictionaryItem[]; // 数组字典\r\n timestamp: number; // 数据缓存时间戳\r\n };\r\n}\r\n\r\n/**\r\n * {key:[]}\r\n */\r\nexport interface DictionaryList {\r\n [key: string]: DictionaryItem[]; // 数组字典\r\n}\r\n\r\n// 定义 Store 的状态类型\r\nexport interface DataDictionaryState {\r\n dataDic: Dictionary;\r\n cacheDuration: number;\r\n}\r\n\r\nconst useDicStore = defineStore(DATA_DICTIONARY_ID, {\r\n state: (): DataDictionaryState => ({\r\n dataDic: {},\r\n cacheDuration: 5 * 60 * 1000 // 缓存有效期:5分钟(单位:毫秒)\r\n }),\r\n\r\n // 💡 优化:Getters 仅保留无参数的计算属性,如果不需要则保持为空。\r\n getters: {\r\n // 示例:如果需要获取所有字典的 Key 列表,可以放在这里\r\n // getAllKeys: state => Object.keys(state.dataDic),\r\n },\r\n\r\n // 💡 优化:Actions 包含所有数据操作和有参数的查询方法。\r\n actions: {\r\n // --- 缓存/数据操作 Actions (保持不变) ---\r\n\r\n // 检查缓存是否过期\r\n isCacheExpired(name: string): boolean {\r\n // 使用 this 访问 state\r\n if (this.cacheDuration === 0) return false;\r\n const cache = this.dataDic[name];\r\n if (!cache) return true;\r\n const now = Date.now();\r\n return now - cache.timestamp > this.cacheDuration;\r\n },\r\n\r\n // 根据 key 保存字典数据\r\n saveDicByKey(key: string, data: DictionaryItem[]) {\r\n // 修正 data 类型\r\n this.dataDic[key] = {\r\n value: data,\r\n timestamp: Date.now()\r\n };\r\n },\r\n\r\n // 一次性存入数据字典\r\n saveAll(data: DictionaryList) {\r\n Object.entries(data).forEach(([key, value]) => {\r\n this.dataDic[key] = {\r\n value,\r\n timestamp: Date.now() // 统一使用当前时间戳\r\n };\r\n });\r\n },\r\n\r\n // --- 查询 Actions (原 Getters 优化) ---\r\n\r\n /**\r\n * 1. 根据 key 获取字典列表 (原 getDicByKey)\r\n * @param key 字典的 key\r\n */\r\n getDicByKey(key: string): DictionaryItem[] {\r\n // 直接使用 this 访问 state\r\n return this.dataDic[key]?.value || [];\r\n },\r\n\r\n /**\r\n * 2. 返回 value 匹配到的整个对象 (原 getDicObjByValue)\r\n * @param key 字典的 key\r\n * @param value 字典项的值\r\n */\r\n getDicObjByValue(\r\n key: string,\r\n value: string | number\r\n ): DictionaryItem | null {\r\n // 修正 value 类型为 string | number,返回类型为 DictionaryItem | null\r\n const rs = this.dataDic[key]?.value || [];\r\n const result = rs.find(\r\n item => item.value === String(value)\r\n );\r\n // 返回 null 更安全,避免返回空对象 {} as DictionaryItem\r\n return result || null;\r\n },\r\n\r\n /**\r\n * 3. 根据字典名称和字典的 value 获取对应的中文 (原 getDicTextByValue)\r\n */\r\n getDicTextByValue(\r\n key: string,\r\n value: string | number\r\n ): string {\r\n const rs = this.dataDic[key]?.value || [];\r\n const item = rs.find(\r\n (item: DictionaryItem) =>\r\n item.value === String(value)\r\n );\r\n // 优化:使用 find 比 filter/map/join 效率更高,且只会有一个结果\r\n return item?.label || \"\";\r\n },\r\n\r\n /**\r\n * 4. 根据文字匹配对应的 value (原 getDicValueByText)\r\n */\r\n getDicValueByText(key: string, text: string): string {\r\n const rs = this.dataDic[key]?.value || [];\r\n const item = rs.find(\r\n (item: DictionaryItem) => item.label === text\r\n );\r\n // 优化:使用 find 比 filter/map/join 效率更高,且只会有一个结果\r\n return item?.value || \"\";\r\n }\r\n },\r\n persist: true\r\n});\r\n\r\nexport default useDicStore;\r\n"],"names":["item"],"mappings":"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"}
@@ -1,4 +1,14 @@
1
1
  import type { ThemeConfig } from "ant-design-vue/es/config-provider/context";
2
+ export interface HeaderStyle {
3
+ colorBgHeader: string;
4
+ }
5
+ export interface TabsStyle {
6
+ colorBgActive: string;
7
+ colorTextActive: string;
8
+ colorSplit: string;
9
+ colorShadowActive: string;
10
+ colorTabsText: string;
11
+ }
2
12
  export interface App {
3
13
  theme: ThemeConfig;
4
14
  modeConfig: Mode;
@@ -9,7 +19,8 @@ export interface App {
9
19
  collapsed: boolean;
10
20
  };
11
21
  isCompact: boolean;
12
- headerTokenStyle: Record<string, string>;
22
+ headerTokenStyle: HeaderStyle;
23
+ tabsTokenStyle?: TabsStyle;
13
24
  sideTokenStyle: Record<string, string>;
14
25
  refresh: boolean;
15
26
  }
@@ -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,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,SAAS,EAAE,OAAO,CAAC;IAEnB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,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,+DAkCf,CAAC;AAEH,eAAe,WAAW,CAAC"}
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,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IAExB,aAAa,EAAE,MAAM,CAAC;IAEtB,eAAe,EAAE,MAAM,CAAC;IAExB,UAAU,EAAE,MAAM,CAAC;IAEnB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,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,SAAS,EAAE,OAAO,CAAC;IAEnB,gBAAgB,EAAE,WAAW,CAAC;IAE9B,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,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,+DAwCf,CAAC;AAEH,eAAe,WAAW,CAAC"}
@@ -36,7 +36,7 @@ declare const useDicStore: import("pinia").StoreDefinition<"_STORE_DATA_DICTIONA
36
36
  /**
37
37
  * 3. 根据字典名称和字典的 value 获取对应的中文 (原 getDicTextByValue)
38
38
  */
39
- getDicTextByValue(key: string, value: string): string;
39
+ getDicTextByValue(key: string, value: string | number): string;
40
40
  /**
41
41
  * 4. 根据文字匹配对应的 value (原 getDicValueByText)
42
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"useDicStore.d.ts","sourceRoot":"","sources":["../../../src/modules/useDicStore.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,KAAK,EAAE,cAAc,EAAE,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;CACjC;AAGD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,QAAA,MAAM,WAAW;yBAiBQ,MAAM,GAAG,OAAO;sBAUnB,MAAM,QAAQ,cAAc,EAAE;kBASlC,cAAc;IAW5B;;;OAGG;qBACc,MAAM,GAAG,cAAc,EAAE;IAK1C;;;;OAIG;0BAEI,MAAM,SACJ,MAAM,GAAG,MAAM,GACrB,cAAc,GAAG,IAAI;IAUxB;;OAEG;2BACoB,MAAM,SAAS,MAAM,GAAG,MAAM;IASrD;;OAEG;2BACoB,MAAM,QAAQ,MAAM,GAAG,MAAM;EAUtD,CAAC;AAEH,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"useDicStore.d.ts","sourceRoot":"","sources":["../../../src/modules/useDicStore.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,KAAK,EAAE,cAAc,EAAE,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;CACjC;AAGD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,QAAA,MAAM,WAAW;yBAiBQ,MAAM,GAAG,OAAO;sBAUnB,MAAM,QAAQ,cAAc,EAAE;kBASlC,cAAc;IAW5B;;;OAGG;qBACc,MAAM,GAAG,cAAc,EAAE;IAK1C;;;;OAIG;0BAEI,MAAM,SACJ,MAAM,GAAG,MAAM,GACrB,cAAc,GAAG,IAAI;IAUxB;;OAEG;2BAEI,MAAM,SACJ,MAAM,GAAG,MAAM,GACrB,MAAM;IAUT;;OAEG;2BACoB,MAAM,QAAQ,MAAM,GAAG,MAAM;EAUtD,CAAC;AAEH,eAAe,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ditari/store",
3
- "version": "5.1.1",
3
+ "version": "5.1.3",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"