diff --git a/apps/web-antd/src/router/guard.ts b/apps/web-antd/src/router/guard.ts index f969c0ff0..8b88c834e 100644 --- a/apps/web-antd/src/router/guard.ts +++ b/apps/web-antd/src/router/guard.ts @@ -3,14 +3,14 @@ import type { Router } from 'vue-router'; import { LOGIN_PATH } from '@vben/constants'; import { $t } from '@vben/locales'; import { preferences } from '@vben/preferences'; -import { useAccessStore, useUserStore } from '@vben/stores'; +import { useAccessStore, useDictStore, useUserStore } from '@vben/stores'; import { startProgress, stopProgress } from '@vben/utils'; import { message } from 'ant-design-vue'; import { getSimpleDictDataList } from '#/api/system/dict/data'; import { accessRoutes, coreRouteNames } from '#/router/routes'; -import { useAuthStore, useDictStore } from '#/store'; +import { useAuthStore } from '#/store'; import { generateAccess } from './access'; diff --git a/apps/web-antd/src/store/index.ts b/apps/web-antd/src/store/index.ts index b6a7763b1..269586ee8 100644 --- a/apps/web-antd/src/store/index.ts +++ b/apps/web-antd/src/store/index.ts @@ -1,2 +1 @@ export * from './auth'; -export * from './dict'; diff --git a/apps/web-antd/src/utils/dict.ts b/apps/web-antd/src/utils/dict.ts index 2329729b3..41e9ad2ed 100644 --- a/apps/web-antd/src/utils/dict.ts +++ b/apps/web-antd/src/utils/dict.ts @@ -1,12 +1,11 @@ // TODO @芋艿:后续再优化 // TODO @芋艿:可以共享么? -import type { DictItem } from '#/store'; +import type { DictItem } from '@vben/stores'; +import { useDictStore } from '@vben/stores'; import { isObject } from '@vben/utils'; -import { useDictStore } from '#/store'; - // TODO @dhb52:top-level 调用 导致:"getActivePinia()" was called but there was no active Pinia // 先临时移入到方法中 // const dictStore = useDictStore(); diff --git a/apps/web-ele/src/router/guard.ts b/apps/web-ele/src/router/guard.ts index 424fe77bd..66beccbc5 100644 --- a/apps/web-ele/src/router/guard.ts +++ b/apps/web-ele/src/router/guard.ts @@ -3,14 +3,14 @@ import type { Router } from 'vue-router'; import { LOGIN_PATH } from '@vben/constants'; import { $t } from '@vben/locales'; import { preferences } from '@vben/preferences'; -import { useAccessStore, useUserStore } from '@vben/stores'; +import { useAccessStore, useDictStore, useUserStore } from '@vben/stores'; import { startProgress, stopProgress } from '@vben/utils'; import { ElMessage } from 'element-plus'; import { getSimpleDictDataList } from '#/api/system/dict/data'; import { accessRoutes, coreRouteNames } from '#/router/routes'; -import { useAuthStore, useDictStore } from '#/store'; +import { useAuthStore } from '#/store'; import { generateAccess } from './access'; diff --git a/apps/web-ele/src/store/dict.ts b/apps/web-ele/src/store/dict.ts deleted file mode 100644 index d2c6c73c8..000000000 --- a/apps/web-ele/src/store/dict.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { acceptHMRUpdate, defineStore } from 'pinia'; - -export interface DictItem { - colorType?: string; - cssClass?: string; - label: string; - value: string; -} - -export type Dict = Record; - -interface DictState { - dictCache: Dict; -} - -// TODO @xingyu:@芋艿:可以共享么? -export const useDictStore = defineStore('dict', { - actions: { - getDictData(dictType: string, value: any) { - const dict = this.dictCache[dictType]; - if (!dict) { - return undefined; - } - return ( - dict.find((d) => d.value === value || d.value === value.toString()) ?? - undefined - ); - }, - getDictOptions(dictType: string) { - const dictOptions = this.dictCache[dictType]; - if (!dictOptions) { - return []; - } - return dictOptions; - }, - setDictCache(dicts: Dict) { - this.dictCache = dicts; - }, - setDictCacheByApi( - api: (params: Record) => Promise[]>, - params: Record = {}, - labelField: string = 'label', - valueField: string = 'value', - ) { - api(params).then((dicts) => { - const dictCacheData: Dict = {}; - dicts.forEach((dict) => { - dictCacheData[dict.dictType] = dicts - .filter((d) => d.dictType === dict.dictType) - .map((d) => ({ - colorType: d.colorType, - cssClass: d.cssClass, - label: d[labelField], - value: d[valueField], - })); - }); - this.setDictCache(dictCacheData); - }); - }, - }, - persist: { - // 持久化 - pick: ['dictCache'], - }, - state: (): DictState => ({ - dictCache: {}, - }), -}); - -// 解决热更新问题 -const hot = import.meta.hot; -if (hot) { - hot.accept(acceptHMRUpdate(useDictStore, hot)); -} diff --git a/apps/web-ele/src/store/index.ts b/apps/web-ele/src/store/index.ts index b6a7763b1..269586ee8 100644 --- a/apps/web-ele/src/store/index.ts +++ b/apps/web-ele/src/store/index.ts @@ -1,2 +1 @@ export * from './auth'; -export * from './dict'; diff --git a/apps/web-ele/src/utils/bean.ts b/apps/web-ele/src/utils/bean.ts index 9c29ded3a..d6df19c89 100644 --- a/apps/web-ele/src/utils/bean.ts +++ b/apps/web-ele/src/utils/bean.ts @@ -10,6 +10,7 @@ export const copyValueToTarget = (target: any, source: any) => { Object.keys(newObj).forEach((key) => { // 如果不是target中的属性则删除 if (!Object.keys(target).includes(key)) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete newObj[key]; } }); diff --git a/apps/web-ele/src/utils/dict.ts b/apps/web-ele/src/utils/dict.ts index e800d06a6..e469efd1a 100644 --- a/apps/web-ele/src/utils/dict.ts +++ b/apps/web-ele/src/utils/dict.ts @@ -1,10 +1,9 @@ // TODO @芋艿:后续再优化 // TODO @芋艿:可以共享么? +import { useDictStore } from '@vben/stores'; import { isObject } from '@vben/utils'; -import { useDictStore } from '#/store'; - // TODO @dhb52:top-level 调用 导致:"getActivePinia()" was called but there was no active Pinia // 先临时移入到方法中 // const dictStore = useDictStore(); diff --git a/apps/web-antd/src/store/dict.ts b/packages/stores/src/modules/dict.ts similarity index 95% rename from apps/web-antd/src/store/dict.ts rename to packages/stores/src/modules/dict.ts index 37f636d2e..6d80c4b4e 100644 --- a/apps/web-antd/src/store/dict.ts +++ b/packages/stores/src/modules/dict.ts @@ -13,8 +13,7 @@ interface DictState { dictCache: Dict; } -// TODO @芋艿:可以共享么? -export const useDictStore = defineStore('dict', { +export const useDictStore = defineStore('core-dict', { actions: { getDictData(dictType: string, value: any) { const dict = this.dictCache[dictType]; diff --git a/packages/stores/src/modules/index.ts b/packages/stores/src/modules/index.ts index ec764ae87..e87dbb3e0 100644 --- a/packages/stores/src/modules/index.ts +++ b/packages/stores/src/modules/index.ts @@ -1,3 +1,4 @@ export * from './access'; +export * from './dict'; export * from './tabbar'; export * from './user';