import Table from '@mui/material/Table'; import TableBody from '@mui/material/TableBody'; import TableCell from '@mui/material/TableCell'; import TableContainer from '@mui/material/TableContainer'; import TableHead from '@mui/material/TableHead'; import TableRow from '@mui/material/TableRow'; import Paper from '@mui/material/Paper'; import useTitle from '@/hooks/useTitle'; import { useMemoizedFn, useRequest } from 'ahooks'; import { ListUser } from '@/apis/apis'; import { useEffect, useState } from 'react'; import { useAtomValue } from 'jotai'; import { token } from '@/store/store'; import TablePagination from '@mui/material/TablePagination'; import Alert from '@mui/material/Alert'; import Snackbar from '@mui/material/Snackbar'; import Button from '@mui/material/Button'; import TextField from '@mui/material/TextField'; import Box from '@mui/material/Box'; import Chip from '@mui/material/Chip'; import Dialog from '@mui/material/Dialog'; import DialogTitle from '@mui/material/DialogTitle'; import DialogContent from '@mui/material/DialogContent'; import DialogActions from '@mui/material/DialogActions'; import { UserInfo } from '@/apis/model'; import { produce } from 'immer' export default function UserAdmin() { useTitle("用户管理") const [page, setPage] = useState(1) const nowtoken = useAtomValue(token) const [err, setErr] = useState("") const [email, setEmail] = useState("") const [name, setName] = useState("") const [open, setOpen] = useState(false); const [row, setRow] = useState(null) const handleOpen = (row: UserInfo) => { setRow(row) setOpen(true) } const uq = new URLSearchParams("/api/v1/admin/users") uq.set("page", String(page)) uq.set("email", email) uq.set("name", name) const { data, run } = useRequest(ListUser, { cacheKey: uq.toString(), debounceWait: 300, onError: e => { setErr(String(e)) } }) useEffect(() => { run(page, nowtoken, email, name) }, [page, nowtoken, run, email, name]) return (<> setEmail(v.target.value)} label="邮箱" variant="standard" /> setName(v.target.value)} label="用户名" variant="standard" /> 邮箱 用户名 注册 ip uuid {data?.list.map((row) => ( {row.email} {row.name} {row.reg_ip} {row.uuid} ))}
setPage(page + 1)} />
setErr("")} severity="error">{err} ); } interface MyDialogProp { open: boolean setOpen: (b: boolean) => void row: UserInfo | null } function MyDialog({ open, row, setOpen }: MyDialogProp) { const handleClose = useMemoizedFn(() => { setOpen(false) }) const [nrow, setNrow] = useState(row) useEffect(() => { setNrow(row) }, [row]) return ( 修改用户信息 setNrow(produce(v => { if (!v) return v.email = e.target.value return }))} /> ) }