import React from 'react' import Icon from '@ant-design/icons' import '@/assets/css/pages/system/settings.scss' import { useUpdatedEffect } from '@/util/hooks' import { hasPermission } from '@/util/auth' import { r_sys_settings_base_get, r_sys_settings_base_update, r_sys_settings_mail_get, r_sys_settings_mail_send, r_sys_settings_mail_update } from '@/services/system' import FitFullscreen from '@/components/common/FitFullscreen' import HideScrollbar from '@/components/common/HideScrollbar' import Card from '@/components/common/Card' import FlexBox from '@/components/common/FlexBox' import LoadingMask from '@/components/common/LoadingMask' import Permission from '@/components/common/Permission' interface SettingsCardProps extends React.PropsWithChildren { icon: IconComponent title: string loading?: boolean modifyOperationCode?: string expand?: React.ReactNode onReset?: () => void onSave?: () => void } const SettingsCard: React.FC = (props) => { return (
{props.title}
{!props.loading ? ( {props.expand} ) : undefined}
) } const MailSettings: React.FC = () => { const [modal, contextHolder] = AntdModal.useModal() const [mailForm] = AntdForm.useForm() const mailFormValues = AntdForm.useWatch([], mailForm) const [loading, setLoading] = useState(false) const [mailSendForm] = AntdForm.useForm() const handleOnTest = () => { void modal.confirm({ title: '发送测试邮件', content: ( <> 将使用服务器已保存的邮件设置进行发送邮件,请保证编辑的内容已保存 ), onOk: () => mailSendForm.validateFields().then( () => { return new Promise((resolve) => { void r_sys_settings_mail_send({ to: mailSendForm.getFieldValue('to') as string }).then((res) => { const response = res.data if (response.success) { void message.success('发送成功') resolve(true) } else { void message.error('发送失败,请检查配置后重试') resolve(true) } }) }) }, () => { return new Promise((_, reject) => { reject('未输入接收者') }) } ) }) } const handleOnReset = () => { getMailSettings() } const handleOnSave = () => { void r_sys_settings_mail_update(mailFormValues).then((res) => { const response = res.data if (response.success) { void message.success('保存设置成功') getMailSettings() } else { void message.error('保存设置失败,请稍后重试') } }) } const getMailSettings = () => { if (loading) { return } setLoading(true) void r_sys_settings_mail_get().then((res) => { const response = res.data if (response.success) { const data = response.data data && mailForm.setFieldsValue(data) setLoading(false) } }) } useUpdatedEffect(() => { getMailSettings() }, []) return ( <> } > None SSL/TLS StartTls {contextHolder} ) } const BaseSettings: React.FC = () => { const [baseForm] = AntdForm.useForm() const baseFormValues = AntdForm.useWatch([], baseForm) const [loading, setLoading] = useState(false) const handleOnReset = () => { getBaseSettings() } const handleOnSave = () => { void r_sys_settings_base_update(baseFormValues).then((res) => { const response = res.data if (response.success) { void message.success('保存设置成功') getBaseSettings() } else { void message.error('保存设置失败,请稍后重试') } }) } const getBaseSettings = () => { if (loading) { return } setLoading(true) void r_sys_settings_base_get().then((res) => { const response = res.data if (response.success) { const data = response.data data && baseForm.setFieldsValue(data) setLoading(false) } }) } useUpdatedEffect(() => { getBaseSettings() }, []) return ( <> ) } const Settings: React.FC = () => { return ( <> ) } export default Settings