From 95047179c0b246a1274d2f56a61a5eba6723df3a Mon Sep 17 00:00:00 2001 From: Charles7c Date: Wed, 15 May 2024 23:13:05 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E7=AD=96=E7=95=A5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/system/type.ts | 26 +-- src/stores/modules/app.ts | 32 ++-- src/views/setting/profile/BasicInfo.vue | 4 +- src/views/setting/profile/Security.vue | 21 +-- .../system/config/components/BasicSetting.vue | 46 +++--- .../system/config/components/MailSetting.vue | 9 + .../config/components/SecuritySetting.vue | 154 ++++++++++++------ src/views/system/config/index.vue | 9 +- 8 files changed, 190 insertions(+), 111 deletions(-) create mode 100644 src/views/system/config/components/MailSetting.vue diff --git a/src/apis/system/type.ts b/src/apis/system/type.ts index c383eeb..2a171ac 100644 --- a/src/apis/system/type.ts +++ b/src/apis/system/type.ts @@ -276,21 +276,23 @@ export interface OptionQuery { } /** 基础配置类型 */ -export interface BasicConfigResp { - site_favicon: string - site_logo: string - site_title: string - site_copyright: string +export interface BasicConfig { + SITE_FAVICON: string + SITE_LOGO: string + SITE_TITLE: string + SITE_COPYRIGHT: string } /** 安全配置类型 */ -export interface SecurityConfigResp { - password_contain_name: OptionResp - password_error_count: OptionResp - password_lock_minutes: OptionResp - password_min_length: OptionResp - password_special_char: OptionResp - password_update_interval: OptionResp +export interface SecurityConfig { + PASSWORD_ERROR_LOCK_COUNT: OptionResp + PASSWORD_ERROR_LOCK_MINUTES: OptionResp + PASSWORD_EXPIRATION_WARNING_DAYS: OptionResp + PASSWORD_EXPIRATION_DAYS: OptionResp + PASSWORD_REUSE_POLICY: OptionResp + PASSWORD_MIN_LENGTH: OptionResp + PASSWORD_ALLOW_CONTAIN_USERNAME: OptionResp + PASSWORD_CONTAIN_SPECIAL_CHARACTERS: OptionResp } /** 绑定三方账号信息 */ diff --git a/src/stores/modules/app.ts b/src/stores/modules/app.ts index 3acbdd5..c3b0007 100644 --- a/src/stores/modules/app.ts +++ b/src/stores/modules/app.ts @@ -1,7 +1,7 @@ import { defineStore } from 'pinia' import { computed, reactive, toRefs } from 'vue' import { generate, getRgbStr } from '@arco-design/color' -import { type BasicConfigResp, listOptionDict } from '@/apis' +import { type BasicConfig, listOptionDict } from '@/apis' import defaultSettings from '@/config/setting.json' const storeSetup = () => { @@ -55,48 +55,48 @@ const storeSetup = () => { } // 系统配置配置 - const siteConfig = reactive({}) as BasicConfigResp + const siteConfig = reactive({}) as BasicConfig // 初始化系统配置 const initSiteConfig = () => { listOptionDict({ - code: ['site_favicon', 'site_logo', 'site_title', 'site_copyright'] + code: ['SITE_FAVICON', 'SITE_LOGO', 'SITE_TITLE', 'SITE_COPYRIGHT'] }).then((res) => { const resMap = new Map() res.data.forEach((item) => { resMap.set(item.label, item.value) }) - siteConfig.site_logo = resMap.get('site_logo') - siteConfig.site_favicon = resMap.get('site_favicon') - siteConfig.site_title = resMap.get('site_title') - siteConfig.site_copyright = resMap.get('site_copyright') - document.title = resMap.get('site_title') + siteConfig.SITE_FAVICON = resMap.get('SITE_FAVICON') + siteConfig.SITE_LOGO = resMap.get('SITE_LOGO') + siteConfig.SITE_TITLE = resMap.get('SITE_TITLE') + siteConfig.SITE_COPYRIGHT = resMap.get('SITE_COPYRIGHT') + document.title = resMap.get('SITE_TITLE') document .querySelector('link[rel="shortcut icon"]') - ?.setAttribute('href', resMap.get('site_favicon') || '/favicon.ico') + ?.setAttribute('href', resMap.get('SITE_FAVICON') || '/favicon.ico') }) } // 设置系统配置 - const setSiteConfig = (config: BasicConfigResp) => { + const setSiteConfig = (config: BasicConfig) => { Object.assign(siteConfig, config) - document.title = config.site_title || '' - document.querySelector('link[rel="shortcut icon"]')?.setAttribute('href', config.site_favicon || '/favicon.ico') + document.title = config.SITE_TITLE || '' + document.querySelector('link[rel="shortcut icon"]')?.setAttribute('href', config.SITE_FAVICON || '/favicon.ico') } const getFavicon = () => { - return siteConfig.site_favicon + return siteConfig.SITE_FAVICON } const getLogo = () => { - return siteConfig.site_logo + return siteConfig.SITE_LOGO } const getTitle = () => { - return siteConfig.site_title + return siteConfig.SITE_TITLE } const getCopyright = () => { - return siteConfig.site_copyright + return siteConfig.SITE_COPYRIGHT } return { diff --git a/src/views/setting/profile/BasicInfo.vue b/src/views/setting/profile/BasicInfo.vue index bc5b690..8611432 100644 --- a/src/views/setting/profile/BasicInfo.vue +++ b/src/views/setting/profile/BasicInfo.vue @@ -56,7 +56,7 @@ - + + + diff --git a/src/views/system/config/components/SecuritySetting.vue b/src/views/system/config/components/SecuritySetting.vue index dec5a6e..c47372f 100644 --- a/src/views/system/config/components/SecuritySetting.vue +++ b/src/views/system/config/components/SecuritySetting.vue @@ -1,52 +1,102 @@