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 MultiAvatarUploader from "@web/src/components/common/uploader/MultiAvatarUploader"; 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; // const [meta,setMeta ] = useState<>(baseSetting); 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 (
{isFormChanged && hasSomePermissions(RolePerms.MANAGE_BASE_SETTING) && ( <> )}
{/*
头像配置
*/}
全局参数配置
{/*
登录页面配置
*/}
服务端全局命令
{
app在线人数
{clientCount && clientCount > 0 ? `${clientCount}人在线` : "无人在线"}
}
); }