DashboardSetting.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import React, { useEffect, useState } from 'react';
  2. import { Card, Spin } from '@douyinfe/semi-ui';
  3. import { API, showError } from '../../helpers';
  4. import SettingsAPIInfo from '../../pages/Setting/Dashboard/SettingsAPIInfo.js';
  5. import SettingsAnnouncements from '../../pages/Setting/Dashboard/SettingsAnnouncements.js';
  6. import SettingsFAQ from '../../pages/Setting/Dashboard/SettingsFAQ.js';
  7. import SettingsUptimeKuma from '../../pages/Setting/Dashboard/SettingsUptimeKuma.js';
  8. const DashboardSetting = () => {
  9. let [inputs, setInputs] = useState({
  10. ApiInfo: '',
  11. Announcements: '',
  12. FAQ: '',
  13. UptimeKumaUrl: '',
  14. UptimeKumaSlug: '',
  15. });
  16. let [loading, setLoading] = useState(false);
  17. const getOptions = async () => {
  18. const res = await API.get('/api/option/');
  19. const { success, message, data } = res.data;
  20. if (success) {
  21. let newInputs = {};
  22. data.forEach((item) => {
  23. if (item.key in inputs) {
  24. newInputs[item.key] = item.value;
  25. }
  26. });
  27. setInputs(newInputs);
  28. } else {
  29. showError(message);
  30. }
  31. };
  32. async function onRefresh() {
  33. try {
  34. setLoading(true);
  35. await getOptions();
  36. } catch (error) {
  37. showError('刷新失败');
  38. console.error(error);
  39. } finally {
  40. setLoading(false);
  41. }
  42. }
  43. useEffect(() => {
  44. onRefresh();
  45. }, []);
  46. return (
  47. <>
  48. <Spin spinning={loading} size='large'>
  49. {/* API信息管理 */}
  50. <Card style={{ marginTop: '10px' }}>
  51. <SettingsAPIInfo options={inputs} refresh={onRefresh} />
  52. </Card>
  53. {/* 系统公告管理 */}
  54. <Card style={{ marginTop: '10px' }}>
  55. <SettingsAnnouncements options={inputs} refresh={onRefresh} />
  56. </Card>
  57. {/* 常见问答管理 */}
  58. <Card style={{ marginTop: '10px' }}>
  59. <SettingsFAQ options={inputs} refresh={onRefresh} />
  60. </Card>
  61. {/* Uptime Kuma 监控设置 */}
  62. <Card style={{ marginTop: '10px' }}>
  63. <SettingsUptimeKuma options={inputs} refresh={onRefresh} />
  64. </Card>
  65. </Spin>
  66. </>
  67. );
  68. };
  69. export default DashboardSetting;