yearning
19 小时以前 e3e6db2d9974588f91ac1567a58fa4846655ce1b
frontend/src/pages/AdminSystemSettingsPage.tsx
@@ -1,17 +1,20 @@
import { useEffect, useState } from "react";
import { Button, Card, Form, Input, Upload, message, Image, Space } from "antd";
import { Button, Card, Form, Input, Upload, message, Image, Space, Switch } from "antd";
import { UploadOutlined } from "@ant-design/icons";
import { api } from "../api";
import { logoSrc, useSystemSettings } from "../systemSettings";
export default function AdminSystemSettingsPage() {
  const { settings, refresh, logoCacheKey } = useSystemSettings();
  const [form] = Form.useForm<{ system_name: string }>();
  const [form] = Form.useForm<{ system_name: string; grader_can_see_privacy: boolean }>();
  const [saving, setSaving] = useState(false);
  useEffect(() => {
    form.setFieldsValue({ system_name: settings.system_name });
  }, [settings.system_name, form]);
    form.setFieldsValue({
      system_name: settings.system_name,
      grader_can_see_privacy: settings.grader_can_see_privacy,
    });
  }, [settings.system_name, settings.grader_can_see_privacy, form]);
  const logo = logoSrc(settings.logo_url, logoCacheKey);
@@ -24,7 +27,10 @@
        onFinish={async (v) => {
          setSaving(true);
          try {
            await api.put("/api/admin/settings", { system_name: v.system_name });
            await api.put("/api/admin/settings", {
              system_name: v.system_name,
              grader_can_see_privacy: v.grader_can_see_privacy,
            });
            message.success("已保存");
            await refresh();
          } catch (e: unknown) {
@@ -39,7 +45,15 @@
        <Form.Item name="system_name" label="系统名称" rules={[{ required: true, max: 128 }]}>
          <Input placeholder="显示在顶栏、登录页与浏览器标题" />
        </Form.Item>
        <Button type="primary" htmlType="submit" loading={saving}>保存名称</Button>
        <Form.Item
          name="grader_can_see_privacy"
          label="考评员可见考生隐私"
          valuePropName="checked"
          extra="开启后,考评员可以看到考生完整姓名和证件号;关闭后姓名和证件号将脱敏显示"
        >
          <Switch />
        </Form.Item>
        <Button type="primary" htmlType="submit" loading={saving}>保存设置</Button>
      </Form>
      <Card type="inner" title="系统 Logo" style={{ marginTop: 24, maxWidth: 480 }}>