import { AppConfigSlug, BaseSetting, RolePerms } from "@nice/common"; import { useContext, useEffect, useState } from "react"; import { Button, Form, Input, message, theme } from "antd"; import { useAppConfig } from "@nice/client"; import { useAuth } from "@web/src/providers/auth-provider"; import FixedHeader from "@web/src/components/layout/fix-header"; import { useForm } from "antd/es/form/Form"; import { api } from "@nice/client"; import { MainLayoutContext } from "../layout"; export default function BaseSettingPage() { const { update, baseSetting } = useAppConfig(); const utils = api.useUtils(); const [form] = useForm(); const { token } = theme.useToken(); const { data: clientCount } = api.app_config.getClientCount.useQuery( undefined, { refetchInterval: 3000, refetchIntervalInBackground: true, } ); const [isFormChanged, setIsFormChanged] = useState(false); const [loading, setLoading] = useState(false); const { user, hasSomePermissions } = useAuth(); const context = useContext(MainLayoutContext); const pageWidth = context?.pageWidth; function handleFieldsChange() { setIsFormChanged(true); } function onResetClick() { if (!form) return; if (!baseSetting) { form.resetFields(); } else { form.resetFields(); form.setFieldsValue(baseSetting); } setIsFormChanged(false); } function onSaveClick() { if (form) form.submit(); } async function onSubmit(values: BaseSetting) { setLoading(true); const appConfig = values?.appConfig || {}; try { await update.mutateAsync({ where: { slug: AppConfigSlug.BASE_SETTING, }, data: { meta: { ...baseSetting, appConfig: { ...baseSetting.appConfig, ...appConfig, }, }, }, }); setIsFormChanged(false); message.success("已保存"); } catch (err: any) { console.error(err); } finally { setLoading(false); } } useEffect(() => { if (baseSetting && form) { form.setFieldsValue(baseSetting); } }, [baseSetting, form]); return (