From b2ba666294fddced5df2d8c80a478dce9b318426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com> Date: Mon, 6 Mar 2023 15:44:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=AE=A1=E7=90=86=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E5=88=97=E8=A1=A8=E5=88=9D=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/compenents/leftMenu/index.tsx | 8 +- src/pages/index.ts | 1 + .../system/administrator/index.module.less | 0 src/pages/system/administrator/index.tsx | 226 ++++++++++++++++++ src/router/routes.tsx | 7 +- 5 files changed, 240 insertions(+), 2 deletions(-) create mode 100644 src/pages/system/administrator/index.module.less create mode 100644 src/pages/system/administrator/index.tsx diff --git a/src/compenents/leftMenu/index.tsx b/src/compenents/leftMenu/index.tsx index 69365c0..57c4469 100644 --- a/src/compenents/leftMenu/index.tsx +++ b/src/compenents/leftMenu/index.tsx @@ -41,7 +41,13 @@ const items = [ null ), getItem("证书管理", "5", , [], null), - getItem("系统设置", "6", , [,], null), + getItem( + "系统设置", + "6", + , + [getItem("管理人员", "/system/administrator", null, null, null)], + null + ), ]; const rootSubmenuKeys = ["3", "4", "5", "6"]; diff --git a/src/pages/index.ts b/src/pages/index.ts index a9e77b8..abb76a1 100644 --- a/src/pages/index.ts +++ b/src/pages/index.ts @@ -7,3 +7,4 @@ export * from "./course/vod"; export * from "./member/index" export * from "./member/create" export * from "./member/update" +export * from "./system/administrator/index" diff --git a/src/pages/system/administrator/index.module.less b/src/pages/system/administrator/index.module.less new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/system/administrator/index.tsx b/src/pages/system/administrator/index.tsx new file mode 100644 index 0000000..3fdf46e --- /dev/null +++ b/src/pages/system/administrator/index.tsx @@ -0,0 +1,226 @@ +import React, { useState, useEffect } from "react"; +import { + Typography, + Input, + Select, + Button, + Space, + Table, + Popconfirm, + message, +} from "antd"; +import type { ColumnsType } from "antd/es/table"; +import styles from "./index.module.less"; +import { PlusOutlined, ReloadOutlined } from "@ant-design/icons"; +import { adminUser } from "../../../api/index"; +import { dateFormat } from "../../../utils/index"; +import { Link, useNavigate } from "react-router-dom"; + +interface DataType { + id: React.Key; + name: string; + email: string; + login_at: string; + login_ip: string; + is_ban_login: number; +} + +export const SystemAdministratorPage: React.FC = () => { + const navigate = useNavigate(); + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [loading, setLoading] = useState(true); + const [page, setPage] = useState(1); + const [size, setSize] = useState(10); + const [list, setList] = useState([]); + const [total, setTotal] = useState(0); + const [refresh, setRefresh] = useState(false); + + const [name, setName] = useState(""); + + const columns: ColumnsType = [ + { + title: "ID", + key: "id", + dataIndex: "id", + }, + { + title: "姓名", + dataIndex: "name", + render: (text: string) => {text}, + }, + { + title: "登录邮箱", + dataIndex: "email", + }, + { + title: "登录时间", + dataIndex: "login_at", + render: (text: string) => {text && dateFormat(text)}, + }, + { + title: "登录IP", + dataIndex: "login_ip", + render: (text: string) => {text}, + }, + { + title: "禁止登录", + dataIndex: "is_ban_login", + render: (text: number) => + text === 0 ? 否 : 是, + }, + { + title: "操作", + key: "action", + render: (_, record) => ( + + navigate(`/system/administrator/${record.id}`)} + > + 详情 + + delUser(record.id)} + okText="确定" + cancelText="取消" + > + + 删除 + + + + ), + }, + ]; + + useEffect(() => { + getData(); + }, [refresh, page, size]); + + const onSelectChange = (newSelectedRowKeys: React.Key[]) => { + console.log("selectedRowKeys changed: ", newSelectedRowKeys); + setSelectedRowKeys(newSelectedRowKeys); + }; + + const getData = () => { + setLoading(true); + adminUser.adminUserList(page, size, name).then((res: any) => { + setList(res.data.data); + setTotal(res.data.total); + setTimeout(() => { + setSelectedRowKeys([]); + setLoading(false); + }, 1000); + }); + }; + + const resetData = () => { + setName(""); + setPage(1); + setSize(10); + setList([]); + setRefresh(!refresh); + }; + + const rowSelection = { + selectedRowKeys, + onChange: onSelectChange, + }; + + const paginationProps = { + current: page, //当前页码 + pageSize: size, + total: total, // 总条数 + onChange: (page: number, pageSize: number) => + handlePageChange(page, pageSize), //改变页码的函数 + showSizeChanger: true, + }; + + const handlePageChange = (page: number, pageSize: number) => { + setPage(page); + setSize(pageSize); + }; + + const delUser = (id: any) => { + adminUser.destroyAdminUser(id).then((res: any) => { + setTimeout(() => { + message.success("操作成功"); + setRefresh(!refresh); + }, 1000); + }); + }; + + const hasSelected = selectedRowKeys.length > 0; + return ( + <> + + + + 姓名: + { + setName(e.target.value); + }} + style={{ width: 160 }} + placeholder="请输入姓名" + /> + + + + 重 置 + + { + setPage(1); + setRefresh(!refresh); + }} + > + 查 询 + + + + + + + + + + } className="mr-16" type="primary"> + 新建 + + + + + } + style={{ color: "#333333" }} + onClick={() => { + setRefresh(!refresh); + }} + > + + + + record.id} + /> + + + > + ); +}; diff --git a/src/router/routes.tsx b/src/router/routes.tsx index c559931..699d04b 100644 --- a/src/router/routes.tsx +++ b/src/router/routes.tsx @@ -8,7 +8,8 @@ import { TestPage, MemberPage, MemberCreatePage, - MemberUpdatePage + MemberUpdatePage, + SystemAdministratorPage } from "../pages"; const routes: RouteObject[] = [ @@ -36,6 +37,10 @@ const routes: RouteObject[] = [ path: "/member/update/:memberId", element: , }, + { + path: "/system/administrator", + element: , + }, ], }, {