import { Button, Form, Input, Spin, Switch, message } from "antd"; import { useContext, useEffect } from "react"; import { useStaff } from "@nice/client"; import DepartmentSelect from "../department/department-select"; import { api } from "@nice/client"; import { StaffEditorContext } from "./staff-editor"; import { useAuth } from "@web/src/providers/auth-provider"; import AvatarUploader from "../../common/uploader/AvatarUploader"; export default function StaffForm() { const { create, update } = useStaff(); // Ensure you have these methods in your hooks const { domainId, form, editId, setModalOpen, formLoading, setFormLoading, canManageAnyStaff, setEditId, } = useContext(StaffEditorContext); const { data, isLoading } = api.staff.findFirst.useQuery( { where: { id: editId } }, { enabled: !!editId } ); const { isRoot } = useAuth(); async function handleFinish(values: any) { const { username, showname, deptId, domainId: fieldDomainId, password, phoneNumber, officerId, enabled, avatar, } = values; setFormLoading(true); try { if (data && editId) { await update.mutateAsync({ where: { id: data.id }, data: { username, deptId, showname, domainId: fieldDomainId ? fieldDomainId : domainId, password, phoneNumber, officerId, enabled, avatar, }, }); } else { await create.mutateAsync({ data: { username, deptId, showname, domainId: fieldDomainId ? fieldDomainId : domainId, password, officerId, phoneNumber, avatar, }, }); form.resetFields(); if (deptId) form.setFieldValue("deptId", deptId); if (domainId) form.setFieldValue("domainId", domainId); } message.success("提交成功"); setModalOpen(false); } catch (err: any) { message.error(err.message); } finally { setFormLoading(false); setEditId(undefined); } } useEffect(() => { form.resetFields(); if (data && editId) { form.setFieldValue("username", data?.username); form.setFieldValue("showname", data?.showname); form.setFieldValue("domainId", data?.domainId); form.setFieldValue("deptId", data?.deptId); form.setFieldValue("officerId", data?.officerId); form.setFieldValue("phoneNumber", data?.phoneNumber); form.setFieldValue("enabled", data?.enabled); form.setFieldValue("avatar", data?.avatar); } }, [data]); useEffect(() => { if (!data && domainId) { form.setFieldValue("domainId", domainId); form.setFieldValue("deptId", domainId); } }, [domainId, data]); return (