import styles from '@/page/Home/User/index.module.scss' import { useEffect, useState, useRef } from "react"; import Operation from '@/components/Operation'; import { Button, Input, Table, Pagination, Modal, message, Select } from "antd"; import { ExclamationCircleFilled, SearchOutlined } from '@ant-design/icons'; import { GetUserList, PostUser, PutUser, DeleteUser, PutUserPwd, GetRoleDpList, PostUserImport, GetSubDpList, PutUserBth } from '@/api/Home/User'; import * as CryptoJS from 'crypto-js'; import ImageUrl from '@/utils/package/imageUrl'; import { storage } from '@/utils'; import StupWizard from '@/components/StupWizard'; const { Column } = Table const { confirm } = Modal; const { exec } = require('child_process'); const fs = require('fs').promises; const User: React.FC = () => { const stupWizardRef = useRef(); const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [isCreateUser, setIsCreateUser] = useState<'add' | 'batch' | 'edit'>(); const [list, setList] = useState({ data: [], searchKeywod: '', total: 0, pageIndex: 1, pageSize: 14, }) const [roleList, setRoleList] = useState([]) const [addUserModal, setAddUserModal] = useState(false) const [addUserFrom, setAddUserFrom] = useState({ Id: "", Account: "", RoleId: null, Pwd: "", UserName: "", subject: null, year: "", }) const [changeUserPawModal, setChangeUserPawModal] = useState(false) const [changeImportModal, setChangeImportModal] = useState(false) const [changeUserPawFrom, setChangeUserPawFrom] = useState({ Pwd: "", newPwd: '', }) const [deleteUserPawModal, setDeleteUserPawModal] = useState(false) const [subjectList, setSubjectList] = useState([]); useEffect(() => { getSubDpList() }, []); useEffect(() => { getUserList() }, [list.pageIndex, list.pageSize]); const getUserList = async (): Promise => { await GetUserList({ pageIndex: list.pageIndex, pageSize: list.pageSize, searchKeywod: list.searchKeywod, }).then(res => { if (res.code === 200) { setList({ ...list, total: res.data.total, data: res.data.items.map((item: any) => { return { ...item, key: item.id, } }), }) setSelectedRowKeys([]) } }) } const getRoleDpList = async (callBack: Function): Promise => { await GetRoleDpList().then(res => { if (res.code === 200) { setRoleList(res.data.map((item: any) => { return { ...item, value: item.id, label: item.roleName } })) callBack(true) } }) } const fileUpLoad = async (data: { url: string, content: string, fileName: string }): Promise => { const setting = await JSON.parse(storage.getItem('setting') as string) try { const response = await fetch(data.url); const arrayBuffer = await response.arrayBuffer(); const buffer = Buffer.from(arrayBuffer); await fs.writeFile(`${setting.shareFilesPath}\\${data.fileName}`, buffer, {}); setChangeImportModal(false) confirm({ title: '提示', icon: , content: data.content, centered: true, okText: '打开文件夹', cancelText: '关闭', async onOk() { await fs.access(setting.shareFilesPath, fs.constants.F_OK); if (process.platform === 'win32') { exec(`explorer "${setting.shareFilesPath}"`); } else if (process.platform === 'darwin') { exec(`open "${setting.shareFilesPath}"`); } }, onCancel() { } }) } catch (error: any) { if (error.code === 'ENOENT') { message.error({ content:
文件夹不存在 { stupWizardRef.current.changeModal(4) }}>前往设置
}) return } else { message.error(error) } } } const getSubDpList = async (): Promise => { await GetSubDpList().then(res => { if (res.code === 200) { setSubjectList(res.data.map((item: any) => { return { value: item.value, label: item.name } })) } }) } return ( <>
} value={list.searchKeywod} onChange={(e) => { setList({ ...list, searchKeywod: e.target.value, }) }} />
{ setSelectedRowKeys(newSelectedRowKeys); } }} dataSource={list.data} pagination={false} scroll={{ y: '70vh' }} className={styles.userContentTable} > ( <>
{item.isOnline ? '在线' : '离线'}
)} /> ( <>
{subjectList.find((subject: any) => subject.value === item.subject)?.label}
)} /> ( <> )} />
共{list.total}项数据 { setList({ ...list, pageIndex: page, pageSize: pageSize }) }} showSizeChanger pageSizeOptions={[10, 14, 20, 30, 40, 50, 100]} pageSize={list.pageSize} current={list.pageIndex} />
{isCreateUser !== 'batch' ?
账号: { setAddUserFrom({ ...addUserFrom, Account: e.target.value, }); }} />
: null} {isCreateUser !== 'batch' ?
角色: { setAddUserFrom({ ...addUserFrom, UserName: e.target.value, }); }} />
: null}
届: { const regex = /^[0-9]*$/; if (regex.test(e.target.value)) { setAddUserFrom({ ...addUserFrom, year: e.target.value }); } }} />
学科: