import { MagnifyingGlassIcon } from "@heroicons/react/24/outline"; import { api, useStaff } from "@nice/client"; import { Button, Form, Input, Modal, Select, Table } from "antd"; import { StaffDto } from "@nice/common"; import { useCallback, useEffect, useState } from "react"; import toast from "react-hot-toast"; import _ from "lodash"; export default function StaffMessage() { const initialValues = { username: "", deptId: "", absent: "是", position: "", trainSituation: [{"": ""}], }; const { create, update } = useStaff(); const [searchName, setSearchName] = useState(""); const { data: staffs, isLoading } = api.staff.findMany.useQuery({ where: { username: { contains: searchName } } }); console.log(staffs); const [form] = Form.useForm(); const [visible, setVisible] = useState(false); const [editingRecord, setEditingRecord] = useState(null); const colnums = [ { title: "姓名", dataIndex: "username", key: "username", }, { title: "部门", dataIndex: "deptId", key: "deptId", }, { title: "职务", dataIndex: "position", key: "position", }, { title: "在位", dataIndex: "absent", key: "absent", render: (_, record) => ( ) }, { title: "应时", dataIndex: "time", key: "time", }, { title: "操作", key: "action", render: (_, record) => ( ), } ]; const handleNew = () => { form.setFieldsValue(initialValues); setVisible(true); } useEffect(() => { if (editingRecord) { form.setFieldsValue(editingRecord); console.log(editingRecord); } }, [editingRecord]); const handleEdit = (record) => { setEditingRecord(record); form.setFieldsValue(editingRecord); setVisible(true); }; const handleOk = async () => { const values = await form.getFieldsValue(); console.log(values.username); try { if (editingRecord && editingRecord.id) { // console.log(editingRecord); const result = await update.mutateAsync( { where: { id: editingRecord.id, }, data : { username: values.username, deptId: values.deptId, position: values.position, absent: values.absent, trainSituations: values.trainSituations ? { upsert: values.trainSituations.map((situation) => ({ where: { id: situation.id || "" }, update: { mustTrainTime: situation.mustTrainTime, trainContent: { connect: { id: situation.trainContentId } }, // 其他字段... }, create: { trainContent: { connect: { id: situation.trainContentId } }, mustTrainTime: situation.mustTrainTime, staffId: editingRecord.id, // 其他必填字段... } })) } : undefined, updatedAt: new Date() } as any } ); // console.log(result); } else { await create.mutateAsync( { data: { username: values.username, deptId: values.deptId, createdAt: new Date(), showname: values.username, } } ); } toast.success("保存成功"); setVisible(false); } catch (error) { toast.error("保存失败"); throw error; } }; const handleCancel = () => { setVisible(false); }; // 添加防抖的搜索处理函数 const handleSearch = useCallback( _.debounce((value: string) => { setSearchName(value); }, 500), [] ); return (
{/* 修改为flex布局 */}
{/* 添加flex容器 */} {/* 头部区域保持不变... */}
人员总览
handleSearch(e.target.value)} className="pl-10 w-full border" />
{/* 表格容器增加flex布局 */} {isLoading ? (
) : (
({ // className: "hover:bg-gray-800/50 transition-colors even:bg-gray-800/50 hover:shadow-lg hover:shadow-blue-500/20", // })} > {colnums.map((column) => ( ))} {/* 移除原有text-gray-300 */} {staffs?.map((record) => ( {colnums.map((column) => ( ))} ))}
{column.title}
{column.render?.(record[column.dataIndex], record) || record[column.dataIndex]}
)} {/* 模态框样式更新 */} {(fields, { add, remove }) => ( <> {fields.map(({ key, name, ...restField }) => (
))} )}
); }