diff --git a/src/components/manage-user/UserManage.tsx b/src/components/manage-user/UserManage.tsx new file mode 100644 index 0000000..035e596 --- /dev/null +++ b/src/components/manage-user/UserManage.tsx @@ -0,0 +1,123 @@ +import { Box } from "@mui/material"; +import Table from "../reuse/table/Table"; +import { customColors } from "../../styles/base/Variable.style"; +import { UserTableColumn } from "../../interface/UserManage.interface"; +import { useState } from "react"; +import SearchInput from "../reuse/input/SearchInput"; + +export default function UserManage() { + const [search, setSearch] = useState(""); + const [page, setPage] = useState(0); + const [rowCount, setRowCount] = useState(100); // 데이터 개수 = 총 회원가입자 수 + + /* 표 제목 및 포맷 설정 */ + const tablecolumns: UserTableColumn[] = [ + { + id: "nickname", + label: "닉네임", + minWidth: 150, + align: "center", + }, + { id: "account", label: "계정", minWidth: 120 }, + { + id: "join_date", + label: "제목", + minWidth: 150, + }, + { + id: "review", + label: "리뷰 / 지점 / 이벤트", + minWidth: 150, + align: "center", + }, + { + id: "withdrawal_date", + label: "탈퇴일", + minWidth: 120, + }, + ]; + + const tablerows = Array.from({ length: 100 }, (unused, index) => ({ + nickname: "C02", + account: "jsee53@gmail.com", + join_date: "2023/10/21", + review: `${index + 1} / ${index + 2} / ${index + 3}`, + withdrawal_date: "9999/99/99", + })); + + return ( + + + + + + 사용자 관리 + + + 알림 전송 + + + + + + + + + + + 총 회원가입자 수 : {rowCount} + + + ); +} diff --git a/src/components/manage-user/UserManageForm.tsx b/src/components/manage-user/UserManageForm.tsx index 02bf336..9a1542c 100644 --- a/src/components/manage-user/UserManageForm.tsx +++ b/src/components/manage-user/UserManageForm.tsx @@ -1,24 +1,13 @@ import SideBar from "../reuse/sidebar/SideBar"; -import UserManageTable from "./UserManageTable"; import Box from "@mui/material/Box"; +import UserManage from "./UserManage"; // 유저 관리 페이지 export default function UserManageForm() { - // 임의의 100개의 사용자 데이터 배열 생성 - const userData = Array.from({ length: 100 }, () => ({ - nickname: "C02", - email: "jsee53@gmail.com", - join_date: "2023/10/21", - review: "1", - branch: "2", - event: "3", - withdrawal_date: "9999/99/99", - })); - return ( - + ); } diff --git a/src/components/manage-user/UserManageTable.tsx b/src/components/manage-user/UserManageTable.tsx deleted file mode 100644 index 00e8e1d..0000000 --- a/src/components/manage-user/UserManageTable.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import Box from "@mui/material/Box"; -import Paper from "@mui/material/Paper"; -import Table from "@mui/material/Table"; -import TableHead from "@mui/material/TableHead"; -import TableBody from "@mui/material/TableBody"; -import TableRow from "@mui/material/TableRow"; -import TableCell from "@mui/material/TableCell"; -import TablePagination from "@mui/material/TablePagination"; // 페이지네이션 추가 -import { useState } from "react"; - -import { UserManageTableType } from "../../interface/UserManage.interface"; - -export default function UserManageTable({ - data, -}: { - data: UserManageTableType[]; -}) { - // 페이지네이션 상태 - const [page, setPage] = useState(0); - const [rowsPerPage, setRowsPerPage] = useState(10); // 한 페이지에 보여줄 데이터 수 - - // 페이지 변경 시 호출 - const handleChangePage = (event: unknown, newPage: number) => { - setPage(newPage); - }; - - // 한 페이지에 보여줄 데이터 수 변경 시 호출 - const handleChangeRowsPerPage = ( - event: React.ChangeEvent - ) => { - setRowsPerPage(parseInt(event.target.value, 10)); - setPage(0); // 페이지네이션을 다시 0 페이지로 리셋 - }; - - return ( - - -
- - - 인덱스 - 닉네임 - 계정 - 가입일 - 리뷰 / 지점 / 이벤트 - 탈퇴일 - - - - {data - .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) - .map((user, index) => ( - - {index + 1 + page * rowsPerPage} - {user.nickname} - {user.email} - {user.join_date} - - {user.review} / {user.branch} / {user.event} - - {user.withdrawal_date} - - ))} - -
- - -
- ); -} diff --git a/src/interface/UserManage.interface.ts b/src/interface/UserManage.interface.ts index ccb45e0..70c93dd 100644 --- a/src/interface/UserManage.interface.ts +++ b/src/interface/UserManage.interface.ts @@ -1,9 +1,9 @@ -export interface UserManageTableType { - nickname: string; - email: string; - join_date: string; - review: string; - branch: string; - event: string; - withdrawal_date: string; +import { jsx } from "@emotion/react"; + +export interface UserTableColumn { + id: "nickname" | "account" | "join_date" | "review" | "withdrawal_date"; + label: string; + minWidth?: number; + align?: "right" | "left" | "center" | "inherit" | "justify" | undefined; + format?: (value: string) => jsx.JSX.Element; } diff --git a/src/interface/reuse/Table.interface.ts b/src/interface/reuse/Table.interface.ts index ac9b1fa..b509544 100644 --- a/src/interface/reuse/Table.interface.ts +++ b/src/interface/reuse/Table.interface.ts @@ -4,7 +4,7 @@ export interface TableProps { columns: Column[]; // 사용하는 컴포넌트 추가할떄 마다 타입 추가 해야함 // ex) rows: EventRow[] | UserRow[] | BranchRow[] - rows: EventRow[]; + rows: EventRow[] | UserRow[]; page: number; setPage: React.Dispatch>; } @@ -28,3 +28,13 @@ interface EventRow { term: string; hashtag: string; } + +/* UserManage 표 데이터 */ +interface UserRow { + [id: string]: string | number; + nickname: string; + account: string; + join_date: string; + review: string; + withdrawal_date: string; +}