From 4ac9d5759f6037d419b9da47097939d577fddf66 Mon Sep 17 00:00:00 2001 From: Slowlyo Date: Mon, 25 Sep 2023 20:23:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=83=A8=E5=88=86=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin-views/src/lang/en/index.ts | 6 ++ admin-views/src/lang/zh_CN/index.ts | 6 ++ .../layouts/components/SettingPanel/index.tsx | 85 ++++++++++++++----- 3 files changed, 77 insertions(+), 20 deletions(-) diff --git a/admin-views/src/lang/en/index.ts b/admin-views/src/lang/en/index.ts index 2dcc4dfb..070b7296 100644 --- a/admin-views/src/lang/en/index.ts +++ b/admin-views/src/lang/en/index.ts @@ -26,5 +26,11 @@ export default { save_btn: 'Save Configuration', cancel_btn: 'Cancel', save_success: 'Save success', + login_template: 'Login Template', + default: 'Default', + top_theme: 'Top Menu Theme', + sider_theme: 'Sider Theme', + light: 'Light', + dark: 'Dark', } } diff --git a/admin-views/src/lang/zh_CN/index.ts b/admin-views/src/lang/zh_CN/index.ts index 6749afe5..bd02dbc7 100644 --- a/admin-views/src/lang/zh_CN/index.ts +++ b/admin-views/src/lang/zh_CN/index.ts @@ -26,5 +26,11 @@ export default { save_btn: '保存配置', cancel_btn: '取消', save_success: '保存成功', + login_template: '登录页模板', + default: '默认', + top_theme: '顶部菜单主题', + sider_theme: '侧边栏主题', + light: '亮色', + dark: '暗色', } } diff --git a/admin-views/src/layouts/components/SettingPanel/index.tsx b/admin-views/src/layouts/components/SettingPanel/index.tsx index 2fb47ae0..d459aeed 100644 --- a/admin-views/src/layouts/components/SettingPanel/index.tsx +++ b/admin-views/src/layouts/components/SettingPanel/index.tsx @@ -1,4 +1,4 @@ -import {Alert, Button, ColorPicker, Drawer, Form, message, Space} from 'antd' +import {Badge, Button, ColorPicker, Drawer, Form, message, Radio, Space} from 'antd' import useStore from '@/hooks/useStore' import {useLang} from '@/hooks/useLang' import SelectLayout from '@/layouts/components/SettingPanel/components/SelectLayout' @@ -8,6 +8,7 @@ import {useHistory} from 'react-router-dom' import {appLoaded, getCacheKey} from '@/utils/common' import {useRequest} from 'ahooks' import {saveSettings} from '@/service/api' +import {useState} from 'react' const SettingPanel = () => { const history = useHistory() @@ -16,7 +17,8 @@ const SettingPanel = () => { const {setThemeColor} = useTheme() const {settings} = useSetting() const {t} = useLang() - const cachedSettings = localStorage.getItem(getCacheKey('settings')) + + const [cachedSettings, setCachedSettings] = useState(localStorage.getItem(getCacheKey('settings'))) const closeSetting = () => { dispatch({ @@ -29,10 +31,12 @@ const SettingPanel = () => { if (key === 'themeColor') setThemeColor(value) const system_theme_setting = Object.assign({}, settings.system_theme_setting, {[key]: value}) + console.log(system_theme_setting) dispatch({ type: 'update-settings', payload: {settings: {...settings, system_theme_setting}} }) + if (key === 'layoutMode') { // 解决刷新后页面不显示的问题 window.$owl.appLoader() @@ -50,6 +54,10 @@ const SettingPanel = () => { manual: true, onSuccess: () => { message.success(t('theme_setting.save_success')) + + // 保存成功后,更新缓存 + localStorage.setItem(getCacheKey('settings'), JSON.stringify(settings)) + setCachedSettings(JSON.stringify(settings)) } }) @@ -63,35 +71,72 @@ const SettingPanel = () => { closeIcon={false} title={t('theme_setting.title')} footer={( - - - - + <> + + + + + + + + )}> - {cachedSettings != JSON.stringify(state.settings) && ( - - )} -
+ + {/*主题色*/} handleChange('themeColor', hex)} - presets={[ - { - label: t('theme_setting.preinstall'), - colors: ['#1677FF', '#F5222D', '#FA8C16', '#52C41A', '#13A8A8', '#2F54EB', '#722ED1', '#EB2F96'], - }, - ]}/> + presets={[{ + label: t('theme_setting.preinstall'), + colors: ['#1677FF', '#F5222D', '#FA8C16', '#52C41A', '#13A8A8', '#2F54EB', '#722ED1', '#EB2F96'], + }]}/> + {/*布局模式*/} handleChange('layoutMode', value)}/> + + {/*登录页模板*/} + + handleChange('loginTemplate', e.target.value)} + value={settings.system_theme_setting.loginTemplate} + optionType="button" + options={[ + {label: t('theme_setting.default'), value: 'default'}, + {label: 'amis', value: 'amis'} + ]}/> + + + {/*顶部菜单主题*/} + + handleChange('topTheme', e.target.value)} + value={settings.system_theme_setting.topTheme} + optionType="button" + options={[ + {label: t('theme_setting.light'), value: 'light'}, + {label: t('theme_setting.dark'), value: 'dark'} + ]}/> + + + {/*侧边栏主题*/} + + handleChange('siderTheme', e.target.value)} + value={settings.system_theme_setting.siderTheme} + optionType="button" + options={[ + {label: t('theme_setting.light'), value: 'light'}, + {label: t('theme_setting.dark'), value: 'dark'} + ]}/> +
)