import { useState, useMemo, useCallback, useEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import Header from './header'; import { SendCard } from './SendCard'; import { Spin, Empty, Input, Alert, message, Pagination } from 'antd'; import { api } from '@nice/client'; import DepartmentSelect from '@web/src/components/models/department/department-select'; import debounce from 'lodash/debounce'; import { SearchOutlined } from '@ant-design/icons'; export default function WriteLetterPage() { const [searchQuery, setSearchQuery] = useState(''); const [selectedDept, setSelectedDept] = useState(); const [currentPage, setCurrentPage] = useState(1); const pageSize = 10; const { data, isLoading, error } = api.staff.findManyWithPagination.useQuery({ page: currentPage, pageSize, where: { deptId: selectedDept, OR: [{ showname: { contains: searchQuery } }, { username: { contains: searchQuery } }] } }); useEffect(() => { console.log(selectedDept) console.log(data) console.log(searchQuery) }, [selectedDept, data, searchQuery]) // Reset to first page when search query or department changes useCallback(() => { setCurrentPage(1); }, [searchQuery, selectedDept]); return (
{/* Search and Filter Section */}
} placeholder="搜索领导姓名或职级..." onChange={debounce((e) => setSearchQuery(e.target.value), 300)} className="w-full" size="large" />
{error && ( )}
{isLoading ? (
) : data?.items.length > 0 ? ( {data?.items.map((item) => ( ))} ) : ( )}
{/* Pagination */} {data?.items.length > 0 && (
setCurrentPage(page)} showSizeChanger={false} showTotal={(total) => `共 ${total} 条记录`} />
)}
); }