import { RootState } from '@/store' import { getUserListAPI, userPassResetAPI, userRemoveAPI } from '@/store/action/Z1user' import { UserTableAPIType, UserTableListType } from '@/types' import { MessageFu } from '@/utils/message' import { Input, Button } from 'antd' import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { useDispatch, useSelector } from 'react-redux' import styles from './index.module.scss' import UserAdd from './UserAdd' import MyTable from '@/components/MyTable' import { Z1tableC } from '@/utils/tableData' import MyPopconfirm from '@/components/MyPopconfirm' import Z1auth from './Z1auth' function Z1user() { const dispatch = useDispatch() // 顶部筛选 const [fromData, setFromData] = useState({ pageNum: 1, pageSize: 10, searchKey: '' }) // 封装发送请求的函数 const getList = useCallback(async () => { dispatch(getUserListAPI(fromData)) }, [dispatch, fromData]) useEffect(() => { getList() }, [getList]) const timeRef = useRef(-1) // 用户名 const txtChangeFu = useCallback( (e: React.ChangeEvent, key: 'searchKey') => { clearTimeout(timeRef.current) timeRef.current = window.setTimeout(() => { setFromData({ ...fromData, [key]: e.target.value, pageNum: 1 }) }, 500) }, [fromData] ) // 点击重置 const [inputKey, setInputKey] = useState(1) const resetSelectFu = useCallback(() => { // 把2个输入框和时间选择器清空 setInputKey(Date.now()) setFromData({ pageNum: 1, pageSize: 10, searchKey: '' }) }, []) // 从仓库中获取表格数据 const tableInfo = useSelector((state: RootState) => state.Z1user.tableInfo) // 点击删除 const delTableFu = useCallback( async (id: number) => { const res: any = await userRemoveAPI(id) if (res.code === 0) { MessageFu.success('删除成功!') getList() } }, [getList] ) // 点击重置密码 const resetPassFu = useCallback(async (id: number) => { const res: any = await userPassResetAPI(id) if (res.code === 0) MessageFu.success('重置成功!') }, []) // 0------------点击新增或者编辑出来的页面 const [editPageShow, setEditPageShow] = useState(false) const editId = useRef(0) const openEditPageFu = useCallback( (id: number) => { if (id === 0 && tableInfo.list.length >= 20) return MessageFu.warning('最多支持20个用户!') editId.current = id setEditPageShow(true) }, [tableInfo.list.length] ) const tableLastBtn = useMemo(() => { return [ { title: '操作', render: (item: UserTableListType) => { return item.isAdmin === 1 ? ( '-' ) : ( <> resetPassFu(item.id)} Dom={ } /> delTableFu(item.id)} /> ) } } ] }, [delTableFu, openEditPageFu, resetPassFu]) // 授权管理 const [authInfo, setAuthInfo] = useState({ id: 0, name: '' }) return (
后台用户
搜索项: txtChangeFu(e, 'searchKey')} />
     
{/* 表格主体 */}
setFromData({ ...fromData, pageNum, pageSize })} />
{/* 点击新增或者编辑 */} {editPageShow ? ( setEditPageShow(false)} upTableList={getList} addTableList={resetSelectFu} /> ) : null} {/* 点击授权 */} {authInfo.id ? ( setAuthInfo({ id: 0, name: '' })} /> ) : null}
) } const MemoZ1user = React.memo(Z1user) export default MemoZ1user