From 21d5214247f69d4d49c51c153d34198e5af726dd Mon Sep 17 00:00:00 2001 From: Soybean Date: Thu, 23 Feb 2023 08:38:03 +0800 Subject: [PATCH] refactor(projects): remove enum --- .eslintrc.js | 10 +- src/composables/layout.ts | 2 +- src/composables/router.ts | 6 +- src/constants/business.ts | 24 ++++- src/constants/common.ts | 18 ++++ src/constants/index.ts | 2 + src/constants/system.ts | 98 +++++++++++++++++++ src/enum/business.ts | 15 --- src/enum/common.ts | 24 ----- src/enum/index.ts | 3 - src/enum/system.ts | 36 ------- .../components/layout-checkbox.vue | 7 +- src/router/routes/index.ts | 2 +- src/service/request/instance.ts | 2 +- src/settings/theme.ts | 34 ++----- src/store/modules/theme/index.ts | 8 +- src/typings/business.d.ts | 3 +- src/typings/global.d.ts | 3 + src/typings/system.d.ts | 57 ++--------- src/typings/union-key.d.ts | 56 +++++++++++ src/typings/utils.d.ts | 25 ++++- src/utils/common/typeof.ts | 70 +++++++------ src/utils/router/component.ts | 4 +- src/utils/router/regexp.ts | 2 +- src/utils/service/handler.ts | 2 +- src/utils/service/transform.ts | 7 +- .../login/components/pwd-login/index.vue | 6 +- src/views/_builtin/login/index.vue | 18 ++-- src/views/auth-demo/permission/index.vue | 15 +-- .../user/components/table-action-modal.vue | 2 +- src/views/management/user/index.vue | 2 +- 31 files changed, 323 insertions(+), 240 deletions(-) create mode 100644 src/constants/common.ts create mode 100644 src/constants/system.ts delete mode 100644 src/enum/business.ts delete mode 100644 src/enum/common.ts delete mode 100644 src/enum/index.ts delete mode 100644 src/enum/system.ts create mode 100644 src/typings/union-key.d.ts diff --git a/.eslintrc.js b/.eslintrc.js index 5aecfb5b..8cd4a27c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -38,6 +38,11 @@ module.exports = { group: 'external', position: 'before' }, + { + pattern: '@/constants', + group: 'internal', + position: 'before' + }, { pattern: '@/config', group: 'internal', @@ -48,11 +53,6 @@ module.exports = { group: 'internal', position: 'before' }, - { - pattern: '@/enum', - group: 'internal', - position: 'before' - }, { pattern: '@/plugins', group: 'internal', diff --git a/src/composables/layout.ts b/src/composables/layout.ts index b80ebe2a..3280da2b 100644 --- a/src/composables/layout.ts +++ b/src/composables/layout.ts @@ -3,7 +3,7 @@ import { breakpointsTailwind, useBreakpoints } from '@vueuse/core'; import { useAppStore, useThemeStore } from '@/store'; type LayoutMode = 'vertical' | 'horizontal'; -type LayoutHeaderProps = Record; +type LayoutHeaderProps = Record; export function useBasicLayout() { const app = useAppStore(); diff --git a/src/composables/router.ts b/src/composables/router.ts index d756aacf..49c8ac0e 100644 --- a/src/composables/router.ts +++ b/src/composables/router.ts @@ -42,8 +42,8 @@ export function useRouterPush(inSetup = true) { * @param loginModule - 展示的登录模块 * @param redirectUrl - 重定向地址(登录成功后跳转的地址),默认undefined表示取当前地址为重定向地址 */ - function toLogin(loginModule?: EnumType.LoginModuleKey, redirectUrl?: string) { - const module: EnumType.LoginModuleKey = loginModule || 'pwd-login'; + function toLogin(loginModule?: UnionKey.LoginModule, redirectUrl?: string) { + const module: UnionKey.LoginModule = loginModule || 'pwd-login'; const routeLocation: RouteLocationRaw = { name: routeName('login'), params: { module } @@ -57,7 +57,7 @@ export function useRouterPush(inSetup = true) { * 登录页切换其他模块 * @param module - 切换后的登录模块 */ - function toLoginModule(module: EnumType.LoginModuleKey) { + function toLoginModule(module: UnionKey.LoginModule) { const { query } = route.value; routerPush({ name: routeName('login'), params: { module }, query }); } diff --git a/src/constants/business.ts b/src/constants/business.ts index 60a96b2e..d8dec6e4 100644 --- a/src/constants/business.ts +++ b/src/constants/business.ts @@ -1,10 +1,30 @@ +export const loginModuleLabels: Record = { + 'pwd-login': '账密登录', + 'code-login': '手机验证码登录', + register: '注册', + 'reset-pwd': '重置密码', + 'bind-wechat': '微信绑定' +}; + +export const userRoleLabels: Record = { + super: '超级管理员', + admin: '管理员', + user: '普通用户' +}; + +export const userRoleOptions: Common.OptionWithKey[] = [ + { value: 'super', label: userRoleLabels.super }, + { value: 'admin', label: userRoleLabels.admin }, + { value: 'user', label: userRoleLabels.user } +]; + /** 用户性别 */ export const genderLabels: Record = { 0: '女', 1: '男' }; -export const genderOptions: { value: UserManagement.GenderKey; label: string }[] = [ +export const genderOptions: Common.OptionWithKey[] = [ { value: '0', label: genderLabels['0'] }, { value: '1', label: genderLabels['1'] } ]; @@ -17,7 +37,7 @@ export const userStatusLabels: Record = { 4: '软删除' }; -export const userStatusOptions: { value: UserManagement.UserStatusKey; label: string }[] = [ +export const userStatusOptions: Common.OptionWithKey[] = [ { value: '1', label: userStatusLabels['1'] }, { value: '2', label: userStatusLabels['2'] }, { value: '3', label: userStatusLabels['3'] }, diff --git a/src/constants/common.ts b/src/constants/common.ts new file mode 100644 index 00000000..54ea85ec --- /dev/null +++ b/src/constants/common.ts @@ -0,0 +1,18 @@ +export const dataTypeLabels: { [K in TypeUtil.DataTypeStringKey]: TypeUtil.DataTypeString } = { + string: '[object String]', + number: '[object Number]', + boolean: '[object Boolean]', + null: '[object Null]', + undefined: '[object Undefined]', + symbol: '[object Symbol]', + bigInt: '[object BigInt]', + object: '[object Object]', + function: '[object Function]', + array: '[object Array]', + date: '[object Date]', + regExp: '[object RegExp]', + promise: '[object Promise]', + set: '[object Set]', + map: '[object Map]', + file: '[object File]' +}; diff --git a/src/constants/index.ts b/src/constants/index.ts index f4db82dd..d44a269d 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -1 +1,3 @@ +export * from './common'; +export * from './system'; export * from './business'; diff --git a/src/constants/system.ts b/src/constants/system.ts new file mode 100644 index 00000000..7c043fd5 --- /dev/null +++ b/src/constants/system.ts @@ -0,0 +1,98 @@ +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 themeTabModeLabels: Record = { + chrome: '谷歌风格', + button: '按钮风格' +}; + +export const themeTabModeOptions: Common.OptionWithKey[] = [ + { + value: 'chrome', + label: themeTabModeLabels.chrome + }, + { + value: 'button', + label: themeTabModeLabels.button + } +]; + +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 themeAnimateModeLabels: Record = { + 'zoom-fade': '渐变', + 'zoom-out': '闪现', + 'fade-slide': '滑动', + fade: '消退', + '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'] + } +]; diff --git a/src/enum/business.ts b/src/enum/business.ts deleted file mode 100644 index b479cf5d..00000000 --- a/src/enum/business.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** 用户角色 */ -export enum EnumUserRole { - super = '超级管理员', - admin = '管理员', - user = '普通用户' -} - -/** 登录模块 */ -export enum EnumLoginModule { - 'pwd-login' = '账密登录', - 'code-login' = '手机验证码登录', - 'register' = '注册', - 'reset-pwd' = '重置密码', - 'bind-wechat' = '微信绑定' -} diff --git a/src/enum/common.ts b/src/enum/common.ts deleted file mode 100644 index 9ed5a063..00000000 --- a/src/enum/common.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** http请求头的content-type类型 */ -export enum EnumContentType { - json = 'application/json', - formUrlencoded = 'application/x-www-form-urlencoded', - formData = 'multipart/form-data' -} - -/** 数据类型 */ -export enum EnumDataType { - number = '[object Number]', - string = '[object String]', - boolean = '[object Boolean]', - null = '[object Null]', - undefined = '[object Undefined]', - object = '[object Object]', - array = '[object Array]', - function = '[object Function]', - date = '[object Date]', - regexp = '[object RegExp]', - promise = '[object Promise]', - set = '[object Set]', - map = '[object Map]', - file = '[object File]' -} diff --git a/src/enum/index.ts b/src/enum/index.ts deleted file mode 100644 index d44a269d..00000000 --- a/src/enum/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './common'; -export * from './system'; -export * from './business'; diff --git a/src/enum/system.ts b/src/enum/system.ts deleted file mode 100644 index f2ad44da..00000000 --- a/src/enum/system.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** 布局组件的名称 */ -export enum EnumLayoutComponentName { - basic = 'basic-layout', - blank = 'blank-layout' -} - -/** 布局模式 */ -export enum EnumThemeLayoutMode { - 'vertical' = '左侧菜单模式', - 'horizontal' = '顶部菜单模式', - 'vertical-mix' = '左侧菜单混合模式', - 'horizontal-mix' = '顶部菜单混合模式' -} - -/** 多页签风格 */ -export enum EnumThemeTabMode { - 'chrome' = '谷歌风格', - 'button' = '按钮风格' -} - -/** 水平模式的菜单位置 */ -export enum EnumThemeHorizontalMenuPosition { - 'flex-start' = '居左', - 'center' = '居中', - 'flex-end' = '居右' -} - -/** 过渡动画类型 */ -export enum EnumThemeAnimateMode { - 'zoom-fade' = '渐变', - 'zoom-out' = '闪现', - 'fade-slide' = '滑动', - 'fade' = '消退', - 'fade-bottom' = '底部消退', - 'fade-scale' = '缩放消退' -} diff --git a/src/layouts/common/setting-drawer/components/layout-mode/components/layout-checkbox.vue b/src/layouts/common/setting-drawer/components/layout-mode/components/layout-checkbox.vue index d2bec5c5..23f0448f 100644 --- a/src/layouts/common/setting-drawer/components/layout-mode/components/layout-checkbox.vue +++ b/src/layouts/common/setting-drawer/components/layout-mode/components/layout-checkbox.vue @@ -18,15 +18,14 @@