diff --git a/src/constants/_shared.ts b/src/constants/_shared.ts new file mode 100644 index 00000000..92d009db --- /dev/null +++ b/src/constants/_shared.ts @@ -0,0 +1,6 @@ +export function transformObjectToOption(obj: T) { + return Object.entries(obj).map(([value, label]) => ({ + value, + label + })) as Common.OptionWithKey[]; +} diff --git a/src/constants/business.ts b/src/constants/business.ts index d8dec6e4..c841207d 100644 --- a/src/constants/business.ts +++ b/src/constants/business.ts @@ -1,3 +1,5 @@ +import { transformObjectToOption } from './_shared'; + export const loginModuleLabels: Record = { 'pwd-login': '账密登录', 'code-login': '手机验证码登录', @@ -11,23 +13,14 @@ export const userRoleLabels: Record = { admin: '管理员', user: '普通用户' }; - -export const userRoleOptions: Common.OptionWithKey[] = [ - { value: 'super', label: userRoleLabels.super }, - { value: 'admin', label: userRoleLabels.admin }, - { value: 'user', label: userRoleLabels.user } -]; +export const userRoleOptions = transformObjectToOption(loginModuleLabels); /** 用户性别 */ export const genderLabels: Record = { 0: '女', 1: '男' }; - -export const genderOptions: Common.OptionWithKey[] = [ - { value: '0', label: genderLabels['0'] }, - { value: '1', label: genderLabels['1'] } -]; +export const genderOptions = transformObjectToOption(genderLabels); /** 用户状态 */ export const userStatusLabels: Record = { @@ -36,10 +29,4 @@ export const userStatusLabels: Record = { 3: '冻结', 4: '软删除' }; - -export const userStatusOptions: Common.OptionWithKey[] = [ - { value: '1', label: userStatusLabels['1'] }, - { value: '2', label: userStatusLabels['2'] }, - { value: '3', label: userStatusLabels['3'] }, - { value: '4', label: userStatusLabels['4'] } -]; +export const userStatusOptions = transformObjectToOption(userStatusLabels); diff --git a/src/constants/system.ts b/src/constants/system.ts index f06c689e..2ebb519c 100644 --- a/src/constants/system.ts +++ b/src/constants/system.ts @@ -1,81 +1,31 @@ +import { transformObjectToOption } from './_shared'; + export const themeLayoutModeLabels: Record = { vertical: '左侧菜单模式', horizontal: '顶部菜单模式', 'vertical-mix': '左侧菜单混合模式', 'horizontal-mix': '顶部菜单混合模式' }; - -export const themeLayoutModeOptions: Common.OptionWithKey[] = [ - { - value: 'vertical', - label: themeLayoutModeLabels.vertical - }, - { - value: 'horizontal', - label: themeLayoutModeLabels.horizontal - }, - { - value: 'vertical-mix', - label: themeLayoutModeLabels['vertical-mix'] - }, - { - value: 'horizontal-mix', - label: themeLayoutModeLabels['horizontal-mix'] - } -]; +export const themeLayoutModeOptions = transformObjectToOption(themeLayoutModeLabels); export const themeScrollModeLabels: Record = { wrapper: '外层滚动', content: '主体滚动' }; - -export const themeScrollModeOptions: Common.OptionWithKey[] = [ - { - value: 'wrapper', - label: themeScrollModeLabels.wrapper - }, - { - value: 'content', - label: themeScrollModeLabels.content - } -]; +export const themeScrollModeOptions = transformObjectToOption(themeScrollModeLabels); export const themeTabModeLabels: Record = { chrome: '谷歌风格', button: '按钮风格' }; - -export const themeTabModeOptions: Common.OptionWithKey[] = [ - { - value: 'chrome', - label: themeTabModeLabels.chrome - }, - { - value: 'button', - label: themeTabModeLabels.button - } -]; +export const themeTabModeOptions = transformObjectToOption(themeTabModeLabels); export const themeHorizontalMenuPositionLabels: Record = { 'flex-start': '居左', center: '居中', 'flex-end': '居右' }; - -export const themeHorizontalMenuPositionOptions: Common.OptionWithKey[] = [ - { - value: 'flex-start', - label: themeHorizontalMenuPositionLabels['flex-start'] - }, - { - value: 'center', - label: themeHorizontalMenuPositionLabels.center - }, - { - value: 'flex-end', - label: themeHorizontalMenuPositionLabels['flex-end'] - } -]; +export const themeHorizontalMenuPositionOptions = transformObjectToOption(themeHorizontalMenuPositionLabels); export const themeAnimateModeLabels: Record = { 'zoom-fade': '渐变', @@ -85,30 +35,4 @@ export const themeAnimateModeLabels: Record = 'fade-bottom': '底部消退', 'fade-scale': '缩放消退' }; - -export const themeAnimateModeOptions: Common.OptionWithKey[] = [ - { - value: 'zoom-fade', - label: themeAnimateModeLabels['zoom-fade'] - }, - { - value: 'zoom-out', - label: themeAnimateModeLabels['zoom-out'] - }, - { - value: 'fade-slide', - label: themeAnimateModeLabels['fade-slide'] - }, - { - value: 'fade', - label: themeAnimateModeLabels.fade - }, - { - value: 'fade-bottom', - label: themeAnimateModeLabels['fade-bottom'] - }, - { - value: 'fade-scale', - label: themeAnimateModeLabels['fade-scale'] - } -]; +export const themeAnimateModeOptions = transformObjectToOption(themeAnimateModeLabels);